# Equation solving

• 11-24-2002
Sang-drax
Equation solving
I am implementing an equation solver into Omicron.

If I have an equation on the form:

f(x) = 0

If quite easy to solve using Newton-Raphson's method. This part of the equation solver works fine.

This equation system is a bit trickier:

f(x,y) = 0
g(x,y) = 0

That should be possible to solve using a similar method. But as of yet, I haven't studied any multi-dimensional analysis, so could someone please help me with an algorithm?

And what about the general case:

f1(x1,x2,...,xn) = 0
f2(x1,x2,...,xn) = 0
...
fn(x1,x2,...,xn) = 0
• 11-24-2002
Nick
I think your still able to apply newton's
method to higher dimensions. I'm not sure what
changes you will have to make but probably
there is some way of taking the partial derivatives and
using them.
• 11-24-2002
Sang-drax
Hmm, I might be able to figure it out.
Instead of calculating the intersection of lines, you calculate the intersection of planes.

I'll do some seaching.
• 11-24-2002
Sang-drax
Now I got it.
I found an algorithm by looking at these two pages:
http://www.economics.unimelb.edu.au/...n-raphson1.pdf
http://uranus.ee.auth.gr/lessons/1/10.html

This is the actual code:
Code:

```//INPUT //Equation to solve // f(x,y) == 0 // g(x,y) == 0 //Test equations function f(x,y) = x^2 - y function g(x,y) = 2x + 3y - 16 //guess the solution x = 8 y = 40 //END INPUT h = 0.0000001 for count = 1...10   //Get the derivatives   dfx = (f(x+h,y) - f(x-h,y))/(2h)   dgx = (g(x+h,y) - g(x-h,y))/(2h)   dfy = (f(x,y+h) - f(x,y-h))/(2h)   dgy = (g(x,y+h) - g(x,y-h))/(2h)   //Create the Jacobian matrix   J = matrix(2,2)   J[1] = (dfx , dfy)   J[2] = (dgx , dgy)   //Create the matrix with the function values   F = matrix(2,1)   F[1,1] = f(x,y)   F[2,1] = g(x,y)   //The matrix with the previous solutions   X = matrix(2,1)   X[1,1] = x   X[2,1] = y   //The solution matrix is now calcualted   S = X - invert(J) * F   //Obtain the variables from the solution matrix   x =  S[1,1]   y =  S[2,1] next println "x="+x println "y="+y println "f(x,y)="+f(x,y) println "g(x,y)="+g(x,y)```