ошибка mldivide Размеры матрицы должны совпадать - PullRequest
0 голосов
/ 18 марта 2012
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)). Это говорит об ошибке размера матрицы.

1 Ответ

0 голосов
/ 18 марта 2012

Каковы размеры f(x,landa) и f1(x) при появлении ошибки? Вы можете либо установить точку останова, либо дать отладчику команду останавливаться на ошибках и проверить размер выходных данных обеих функций.

Я подозреваю, что вам может потребоваться поэлементное деление (./), а не матричное деление (/). В любом случае, использование точек останова и / или отладчика поможет вам.

...