我有一个名为funcion(x)
的函数,它执行:
function fx = funcion(x)
fx = cos(x); %%
return;
然后在我的另一个函数(它们都在同一个脚本中)名为newtonRaph
我这样做:
function raiz = newtonRaph(xi,imax, tol)
syms x;
iter = 0;
xold = xi;
x = xold;
df = diff(cos(x),x);
er = 0.9;
while (er>tol)&&(iter<imax)
dfr = (subs(df,x,xold));
nuevo = 0.222/dfr;
if(dfr ==0)
disp('dfr was 0...');
break;
else
iter = iter+1;
evaluacion = funcion(x);
xnew = xold - (evaluacion/dfr); %Newton-Raphson formula
if(xnew~=0)&& (iter>1)
er = abs((xnew-xold)/xnew); %
end
xold = xnew;
x = xold;
end
end
root = xnew;
正如你所看到的,我添加了一个new = 0.222/dfr
的测试行,只是为了试着看看衍生物发生了什么。
我不知道我做错了什么,但每次我这样做,都会告诉我
??? Error using ==> mldivide
Matrix dimensions must agree.
Error in ==> newtonRaph at 16
nuevo = 0.222/dfr;
如果有人能告诉我该怎么做,我会非常感激。
答案 0 :(得分:0)
如果dfr
不是标量,并且您只想将0.222
除以其中的所有元素,那么您应该在nuevo = 0.222./dfr
之前添加.
/
。