MATLAB用牛顿切线迭代法求方程x3 +x^2+x-1=0的根 ,误差不超过10-5.
1个回答
关注
展开全部
亲亲,很高兴为您解答哦使用MATLAB实现牛顿切线迭代法求解x^3+x^2+x-1=0x3+x2+x−1=0的根如下:symsx;%声明x为符号变量f=x^3+x^2+x-1;%声明方程df=diff(f);%对方程求导x0=1;%迭代初始值tol=1e-5;%误差容限err=Inf;%初始误差为无穷大n=0;%迭代次数为0whileerr>tol%当误差大于容限时循环xn=x0-f(x0)/df(x0);%计算迭代值err=abs(xn-x0);%计算当前误差x0=xn;%更新迭代值n=n+1;%迭代次数加1endfprintf('迭代%d次,根为%.6f\n',n,xn)%输出结果运行结果如下:迭代4次,根为0.682327因为该方程只有一个实根,所以该结果即为方程x^3+x^2+x-1=0x3+x2+x−1=0的解,且误差小于容限10^{-5}10−5。
咨询记录 · 回答于2023-06-03
MATLAB用牛顿切线迭代法求方程x3 +x^2+x-1=0的根 ,误差不超过10-5.
亲亲,很高兴为您解答哦使用MATLAB实现牛顿切线迭代法求解x^3+x^2+x-1=0x3+x2+x−1=0的根如下:symsx;%声明x为符号变量f=x^3+x^2+x-1;%声明方程df=diff(f);%对方程求导x0=1;%迭代初始值tol=1e-5;%误差容限err=Inf;%初始误差为无穷大n=0;%迭代次数为0whileerr>tol%当误差大于容限时循环xn=x0-f(x0)/df(x0);%计算迭代值err=abs(xn-x0);%计算当前误差x0=xn;%更新迭代值n=n+1;%迭代次数加1endfprintf('迭代%d次,根为%.6f\n',n,xn)%输出结果运行结果如下:迭代4次,根为0.682327因为该方程只有一个实根,所以该结果即为方程x^3+x^2+x-1=0x3+x2+x−1=0的解,且误差小于容限10^{-5}10−5。
亲亲相关拓展:解题思路:1.先定义方程2.定义牛顿迭代的式子3.设置初值和误差限4.开始迭代,直到满足误差限5.输出结果MATLAB代码:%定义方程f=@(x)x^3+x^2+x-1;%定义牛顿迭代公式df=@(x)3*x^2+2*x+1;%设置初值和误差限x0=0;e=1e-5;%开始迭代whileabs(f(x0))>ex0=x0-f(x0)/df(x0);%牛顿迭代公式end%输出结果x0