[MatLab] Errore inline expression
Ho scritto il seguente codice MatLab:
Ma quando lo eseguo mi da l'errore:
Non riesco a capire a cosa sia dovuto, mi dareste una dritta?
Grazie
%FILE: newton function [x,flag]=newton(x0,tol,max_it,f,df) flag=1; x=x0; for i=1:max_it x_old=x; fx=feval(f,x_old); dfx=feval(df,x_old); if dfx==0 flag=1; return; end step=-fx/dfx; x=x_old+step; if (abs(step)<tol) flag=0; return; end end
%FILE: stiff_newton x_0=1; x_max=100; h=1/4; max_it=10^3; tol=10^(-5); N=x_max/h; y=zeros(N+1,1); y(1)=1; for i=1:N sf=strcat('x*(1+15*',h,')-',y(i),''); f=inline(sf); sdf=strcat('1+15*',h,''); df=inline(sdf); [y,flag]=newton(x_0,tol,max_it,f,df); if flag==1 return; end y(i+1)=y; end
Ma quando lo eseguo mi da l'errore:
??? Error using ==> inlineeval at 15
Error in inline expression ==> x*(1+15*
Error in ==> inline.feval at 36
INLINE_OUT_ = inlineeval(INLINE_INPUTS_, INLINE_OBJ_.inputExpr, INLINE_OBJ_.expr);
Error in ==> newton at 6
fx=feval(f,x_old);
Error in ==> stiff_newton at 14
[y,flag]=newton(x_0,tol,max_it,f,df);
Non riesco a capire a cosa sia dovuto, mi dareste una dritta?

Risposte
[RANT]Io non ho mai capito perché tutti i professori che insegnano matlab nelle università italiane insegnano inline al posto delle anonymous functions. Sono incredibilmente più facili da definire e usare e non hanno alcuna limitazione se comparate con le funzioni definite attraverso inline. In un ormai lontanissimo passato erano forse una novità, ma conosco Matlab da probabilmente 5 anni e qualsiasi versione che io abbia mai usato supportava le funzioni anonime. Tralaltro, guardando la documentazione ufficiale di inline si legge che tale funzione è considerata deprecata e verrà eliminata in future versioni.. Se il vostro codice non funzionerà su future versioni, vi avevo avvisato..[/RANT]
Venendo alla tua funzione.. Ti invito a stampare a video il risultato di
Non fa quello che ti immagini..
Venendo alla tua funzione.. Ti invito a stampare a video il risultato di
sf=strcat('x*(1+15*',h,')-',y(i),'');
Non fa quello che ti immagini..
x*(1+15* )-
Lascia degli spazi bianchi al posto dei valori di $h$ e $y(i)$...come mai?
Grazie! 
Comunque ho appena risolto usando
prima della strcat

Comunque ho appena risolto usando
sh=num2str(h); sy=num2str(y(i));
prima della strcat
