[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
## Re: Problems with functions

**From**: |
Sergei Steshenko |

**Subject**: |
Re: Problems with functions |

**Date**: |
Wed, 20 Jul 2016 13:51:51 +0000 (UTC) |

>*________________________________*
>* From: mat_hunt <address@hidden>*
>*To: address@hidden *
>*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.