牛顿法与牛顿下山法(切线法)

牛顿法

原理:

牛顿法与牛顿下山法(切线法)_第1张图片


注意:牛顿法对初值比较敏感,若初值给的不合适,系统很有可能会出现不收敛的情况。

主函数:

syms x

h=x^3+x^2-1;

x=newton_eq(h,1,1000)    %1是迭代初值   1000是迭代次数

子函数:

function result=newton_eq(h,x,n)    %n是迭代次数

f=matlabFunction(h);   %把H转化为句柄

f1=matlabFunction(diff(h));     %对h求导转为句柄

X(1)=x;                 %迭代的过程存写在大写的X中

i=2;

while 1;

   X(i)=X(i-1)-f(X(i-1))/f1(X(i-1));

    if abs(f(X(i)))<1e-6

       result=X(i);

       return;  

   end

   if i>n

       result=X(i);

       return;

   end

   i=i+1;

end


牛顿下山法

原理:

主函数:

syms x

h=x^3+x^2-1;

x=newton_eq(h,1,1000)    %1是迭代初值   1000是迭代次数

子函数:

functionresult=newton_eq(h,x,n)    %n是迭代次数

f=matlabFunction(h);   %把H转化为句柄

f1=matlabFunction(diff(h));     %对h求导转为句柄

X(1)=x;                 %迭代的过程存写在大写的X中

i=2;

lamda=1;

while  1;

    X(i)=X(i-1)-lamda*f(X(i-1))/f1(X(i-1));

    if abs(f(X(i)))<1e-6

        result=X(i);

        return;  

    end

    if abs(f(X(i)))

        lamda=1;

    else

        lamda=lamda/2;

    end

    if i>n

        result=X(i);

        return;

    end

    i=i+1;

end



你可能感兴趣的:(科研创作,非线性解法)