Hello
I am now revising my documentations for my lecture concerning the octave.
> From octave 3.2, fslove are improved extensively.
In the octave manual (3.2.4)
An example, fsolve using Jacobian, is written as,
function y = f (x)
y(1) = -2*x(1)^2 + 3*x(1)*x(2) + 4*sin(x(2)) - 6;
y(2) = 3*x(1)^2 - 2*x(1)*x(2)^2 + 3*cos(x(1)) + 4;
endfunction
function J = jacobian(x)
J(1,1) = 3*x(2) - 4*x(1);
J(1,2) = 4*cos(x(2)) + 3*x(1);
J(2,1) = -2*x(2)^2 - 3*sin(x(1)) + 6*x(1);
J(2,2) = -4*x(1)*x(2);
endfunction
[x, fval, info] = fsolve (address@hidden, @jacobian}, [1; 2]);
*********************************************
So I made a script,
# fslovetest.m
1;
function y = f (x)
y(1) = -2*x(1)^2 + 3*x(1)*x(2) + 4*sin(x(2)) - 6;
y(2) = 3*x(1)^2 - 2*x(1)*x(2)^2 + 3*cos(x(1)) + 4;
endfunction
function J = jacobian(x)
J(1,1) = 3*x(2) - 4*x(1);
J(1,2) = 4*cos(x(2)) + 3*x(1);
J(2,1) = -2*x(2)^2 - 3*sin(x(1)) + 6*x(1);
J(2,2) = -4*x(1)*x(2);
endfunction
[x, fval, info] = fsolve (address@hidden, @jacobian}, [1; 2])
# end of fslovetest.m
For, octave 3.0, it works as written in manual.
octave.exe:3> fslovetest
x =
0.57983
2.54621
fval =
-5.7184e-010
5.5461e-010
For octave 3.2,
octave-3.2.4.exe:3> fslovetest
error: xnorm: wrong type argument `cell'
error: called from:
error:
C:\Programs\Octave\3.2.4_gcc-4.4.0\share\octave\3.2.4\m\optimization\fsolve.m
at line 180,
column 6
error: D:\usr\Lecture\ .....\work\fslovetest.m at line 14, column 18
In the same manual (and in help fsolve), example of the use-defined function,
****
function [fvec, fjac] = user_func (x, optimvalues, state)
:
******
The example of the manual is obviously obsolete.
Unfortunately I have never seen the manual generated in octave-3.3.51+ because
of the latex problem. I
do not know the latest manual.
I have tried
# fslovetest2.m
1;
function y = f (x)
y(1) = -2*x(1)^2 + 3*x(1)*x(2) + 4*sin(x(2)) - 6;
y(2) = 3*x(1)^2 - 2*x(1)*x(2)^2 + 3*cos(x(1)) + 4;
endfunction
function J = jacobian(x)
J(1,1) = 3*x(2) - 4*x(1);
J(1,2) = 4*cos(x(2)) + 3*x(1);
J(2,1) = -2*x(2)^2 - 3*sin(x(1)) + 6*x(1);
J(2,2) = -4*x(1)*x(2);
endfunction
function f = fcn(x)
f=[(f(x)).', jacobian(x)];
endfunction
[x, fval, info]=fsolve (@fcn, [1; 2],optimset("Jacobian","on"))
# end of fslovetest2.m
error: element number 2 undefined in return list
error: called from:
error:
C:\Programs\Octave\3.2.4_gcc-4.4.0\share\octave\3.2.4\m\optimization\fsolve.m
at line 204,
column 21
error: D:\usr\Lecture\ ..........\work\fslovetest2.m at li
ne 19, column 1
How should I correct the fsolve script using Jacobian on octave 3.2 or later in
the example for the
octave 3.0?
Regards
Tatsuro
--------------------------------------
2010 FIFA World Cup News [Yahoo!Sports/sportsnavi]
http://pr.mail.yahoo.co.jp/southafrica2010/
_______________________________________________
Help-octave mailing list
address@hidden
https://www-old.cae.wisc.edu/mailman/listinfo/help-octave