《数值分析》课内实验报告
学生姓名:
及学号:
学院:
班级:
课程名称:
实验题目:
指导教师
姓名及职称:
吴佳平2021309010111
理学院
数学211
数值分析
非线性方程的数值解法
李鹏松教授
王博宇讲师
朱振菊实验师
2023年11月22日
目录
一、实验题目 1
二、实验目的 1
三、实验内容 1
四、实验结果 1
五、实验体会或遇到问题 7
-1-
一、实验题目
非线性方程的数值解法
二、实验目的
1.熟悉Matlab编写及运行数值计算程序的方法。
2.进一步理解求解非线性方程迭代方法的基本理论。
3.进一步掌握应用不同的方法求解非线性方程的收敛速度及误差分析。
三、实验内容
1.求下列方程的实根:
(1)x2一3x+2一ex=0;(2)x3+2x2+10x一20=0.
具体要求:
(1)设计一种不动点迭代法,要使迭代序列收敛,然后再用斯特芬森加速迭代,计算到xk一xk一110一8为止.
(2)用牛顿迭代法,同样计算到xk一xk一110一8为止.
输出迭代的初值及各次迭代值和迭代次数k,比较方法的优劣.
四、实验结果
f(x)=x2一3x+2一ex一3一
取到最大值,最大值为2ln2一50
f(x)=x2一3x+2一ex为R上的单调递减函数,则只存在一个零点
-2-
f(x)=x2-3x+2-exx=0f(0)=2-e0=1
x=0.5f(0.5)=0.25-1.5+2-e0.5=0.75-e0.5x=1f(1)=1-3+2-e1=-e
零点在区间[0,0.5]之间
利用零点存在定理以及函数单调确定唯一的零点在区间[0,0.5]之间,确定初始值为0.25。f(x)=x2-3x+2-ex,构造迭代函数φ(x)=(x2+2-ex)/3
functiony=fun1(x)
y=(x*x+2-exp(x))./3;
function[k,piancha,xdpiancha,xk,yk]=diedai2(x0,tol,ddmax)
x(1)=x0;
fori=1:ddmax
x(i+1)=fun(x(i));piancha=abs(x(i+1)-x(i));
xdpiancha=piancha/(abs(x(i+1))+eps);i=i+1;
xk=x(i);yk=fun(x(i));[(i-1)pianchaxdpianchaxkyk]if(pianchatol)|(xdpianchatol)
k=i-1;xk=x(i);return;
end
end
ifiddmax
disp(迭代次数超过给定的最大值ddmax)
k=i-1;xk=x(i);yk=fun(x(i));[(i-1)pianchaxdpianchaxkyk];
return;
end
P=[(i-1),piancha,xdpiancha,xk,yk];
[k,piancha,xdpiancha,xk,yk]=diedai2(0.25,1e-8,20)
迭代次数
迭代值
误差
1
0.259492
02
0.257022
03
0.257662
04
0.257496
05
0.257539
06
0.257528
07
0.257531
08
0.257530
09
0.257530
0-3-
10
0.257530
011
0.257530
012
0.257530
0k=
12
piancha=
3.425837835635548e-09
xdpiancha=
1.330266007035018e-08
xk=
0.257530284733899yk=
0.257530285623098
斯特芬森加速迭代
%史蒂芬森加速迭代法求根的Matlab算法function[X_k,x0,counter]=steffensen(a,err,f_x)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%