Multidimensional Newton-Raphson method: Difference between revisions
Content added Content deleted
m (→{{header|C#}}: added zkl header) |
(→{{header|zkl}}: added code) |
||
Line 106: | Line 106: | ||
=={{header|zkl}}== |
=={{header|zkl}}== |
||
This doesn't use Newton-Raphson (with derivatives) but a hybrid algorithm. |
|||
<lang zkl></lang> |
|||
<lang zkl>var [const] GSL=Import.lib("zklGSL"); // libGSL (GNU Scientific Library) |
|||
<lang zkl></lang> |
|||
// two functions of two variables: f(x,y)=0 |
|||
fs:=T(fcn(x,y){ x.atan() - y*y*y }, fcn(x,y){ 4.0*x*x + 9*y*y - 36 }); |
|||
v=GSL.VectorFromData(2.75, 1.25); // an initial guess at the solution |
|||
GSL.multiroot_fsolver(fs,v); |
|||
v.format(11,8).println(); // answer overwrites initial guess |
|||
xy:=v.toList(); // Vector to List |
|||
fs.apply('wrap(f){ f(xy.xplode()) }).println(); // deltas from zero</lang> |
|||
{{out}} |
{{out}} |
||
<pre> |
<pre> |
||
2.59807621, 1.06365371 |
|||
L(2.13651e-09,2.94321e-10) |
|||
</pre> |
|||
A condensed solver (for a different set of functions): |
|||
<lang zkl>v:=GSL.VectorFromData(-10.0, -15.0); |
|||
GSL.multiroot_fsolver(T( fcn(x,y){ 1.0 - x }, fcn(x,y){ 10.0*(y - x*x) }),v) |
|||
.format().println(); // --> (1,1)</lang> |
|||
{{out}} |
|||
<pre> |
|||
1.00,1.00 |
|||
</pre> |
</pre> |