一维牛顿法在Matlab里的实现

一维牛顿法在Matlab里的实现


在学习机械最优化设计过程中,有上机实验题,用到了一次牛顿法在matlab里实现最小值的求解。由于第一次使用matlab,现将代码放在此处,欢迎各路大神批评指正。
一维牛顿法在Matlab里的实现
具体算法可自行百度,代码如下:

syms x
f=0.25*x^4-(2/3)*x^3-2*x^2-7*x+8;  % 定义f(x)函数
x0=4;  %初值为4
e=0.05; %精度0.05
k=0;    %迭代次数计数
i=1;
f1=diff(f,x,1);  %求函数一阶导
f2=diff(f,x,2);   %求函数二阶导
    while(i)
          x0=x0-subs(f1,x,x0)/subs(f2,x,x0); %牛顿法迭代格式
     if x0>=3&x0<=4       %迭代区间3~4
        k=k+1;    
    else 
        i=0;
    end
    if abs(subs(f1,x,x0))<e   %终止迭代的条件
        i=0;
    else
        k=k+1;
    end
end
       fprintf('用牛顿法求得的解为%f\n',double(x0))   
       fprintf('迭代次数为%d\n',k)