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>