如何在一个点上评估matlab中函数的导数?错误"维度必须同意"

时间:2016-07-10 07:17:55

标签: matlab

我有一个名为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;

如果有人能告诉我该怎么做,我会非常感激。

1 个答案:

答案 0 :(得分:0)

如果dfr不是标量,并且您只想将0.222除以其中的所有元素,那么您应该在nuevo = 0.222./dfr之前添加. /