>________________________________

> From: mat_hunt <

[hidden email]>

>To:

[hidden email]
>Sent: Tuesday, July 19, 2016 11:37 PM

>Subject: Problems with functions

>

>

>I have defined a function:

>

>function y=f(x)

>y_1=x(1)-x(2)+x(3)-2;

>y_2=2*x(1)-x(2)+x(3)-3;

>y_3=2*x(1)+x(2)-x(3)-1;

>y=[y_1 y_2 y_3];

>endfunction

>

>and I have written a function to compute the Jacobian of that function:

>

>function J=jacobian(func,x)

>% computes the Jacobian of a function

>n=length(x);

>fx=feval(func,x);

>eps=1.e-8; % could be made better

>xperturb=x;

>for i=1:n

>xperturb(i)=xperturb(i)+eps;

>J(:,i)=(feval(func,xperturb)-fx)/eps;

>xperturb(i)=x(i);

>endfor;

>endfunction

>

>when I use the command:

>

>jacobian(f,[1 1 1])

>

>I get the error:

>

>error: 'x' undefined near line 2 column 5

>error: called from:

>error: /home/mat/Matlab programs/f.m at line 2, column 4

>error: evaluating argument list element number 1

>

>What is going on? The code was working perfectly fine 10 minutes ago and now

>it's throwing up errors.

>

>

>

>--

>View this message in context:

http://octave.1599824.n4.nabble.com/Problems-with-functions-tp4678670.html>Sent from the Octave - General mailing list archive at Nabble.com.

>

>_______________________________________________

Your 'jacobian' function uses 'feval', and 'help feval' gives as an example

feval ("acos", -1)

=> 3.1416

, so jacobian("f",[1 1 1]) instead of jacobian(f,[1 1 1]) that you have might be better.

I.e. the rule of thumb I remember is that you either have a function handle or a function name as quoted string.

--Sergei.

_______________________________________________

Help-octave mailing list

[hidden email]
https://lists.gnu.org/mailman/listinfo/help-octave