I had to extend the matrix library to add 2norm and transpose functions.
The code for the new library is here:06_SystemsNonLinearEq.c 06_SystemsNonLinearEq.h
Finally the example program to define the function is here: 06_SystemsNonLinearEq_HW.c
|The system of 3 equations with three unknowns. Followed by 9 derivatives with respect to X1, X2, and X3.|
initial 0 0 00 0.0112181743 0.0100963569 -0.5227407743 1 -0.0392975036 0.0960761555 -0.5230125588
Once you have that initial guess then you can use Newtons method which converges in just a few iterations:
0 0.5002972122 0.0144515939 -0.5210250069 1 0.5000081616 0.0009138476 -0.5235749873 2 0.5000000378 0.0000041458 -0.5235986672 3 0.5000000000 0.0000000001 -0.5235987756 4 0.5000000000 -0.0000000000 -0.5235987756If you aren't close with the initial value on Newton's method it may never converge to a value.
Most of the time in books for class the initial guess is just provided for you, our teacher went that extra 2 days of work to let us figure out the guess ourselves. Because nobody will give you that initial guess in the real world.
What I need to do now is to find the error and only stop once I have met the required accuracy.
I fixed a couple of issues with symbols in converting from math to the c programming language. It wasn't clear that the quadratic was always 3 points, I was setting it to OrderSize points instead. Fixed that.
Modified the program so you can set how many iterations of steepest descent you want, with none as an option. Ran into a homework problem where steepest descent just ran off into the wild blue yonder.
|Feeding solution back into formulas as an accuracy and final sanity check. :D|
This is one of my homework problems that is due on Tuesday. It is a 2nd order non linear system of equations. As you can see in main() the system_new function defines the 2 order and the title. Then the Jacobian functions are defined based on the derivatives of those functions for either x1 or x2. When you are creating a derivative of a function on a variable, every other variable is treated like it was a constant.