2012-03-17 19 views
-1
format long 
syms x landa 
eps=10^-6; %we bound the error to closer to the exact solution 
e=exp(1); % e number e=2.7 
f=inline('x+1.0000e-006*exp(80*x)-5*landa','x','landa');% this is f(x,landa) function 
ff=subs(x+1.0000e-006*exp(80*x)-5*landa',{x,landa}); 
dif_f=diff(ff); % to get the derivative 
f1=inline(dif_f);%this is our f'(x) funciton 
landa=linspace(0,1,101); 
%landa=0.01; 
deltalanda=0.01; 

x0=0; 
x=x0; 
while landa<1 
    for k=0:1000 
    y=x; 
    x=y-(f(x,landa)/f1(x)) 
    kk=f(x,landa) 
    if f(x,landa)<=eps % we continue to find the x if it is found break the iteration 
     break 
     landa=landa+deltalanda; 
     deltalanda=deltalanda*2; 
    end 
    end 
    deltalanda=deltalanda/2; 
    landa=landa+deltalanda; 
    landaa=landa; 
    ff=subs(f,landa,landaa); 
    dif_f=diff(ff); 
    f1=inline(dif_f); 
    x=0; 
end 

誰でもこのラインのエラーが表示されます。x=y-(f(x,landa)/f1(x))。それは行列の次元のエラーを言います。エラーmldivideマトリックスの寸法が一致する必要があります

+0

NxNマトリックスである必要があるためでしょうか?あまりにも多くのコードとあまりにも少しの文脈があり、誰かがあなたに助けを与えることができません。 – Mikhail

答えて

0

エラーが発生した場合のf(x,landa)およびf1(x)のサイズは何ですか?ブレークポイントを設定するか、エラー時に停止するようにデバッガに指示し、両方の関数の出力サイズを調べることができます。

マトリックス分割(/)ではなく、要素単位の除算(./)が必要な可能性があります。いずれにしても、ブレークポイントやデバッガを使用すると、1トンを助けます。

関連する問題