计算方法实验报告

  • 格式:doc
  • 大小:633.50 KB
  • 文档页数:22

下载文档原格式

  / 22
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告

一、求方程f(x)=x^3-sinx-12x+1的全部根, ε=1e -6 1、 用一般迭代法; 2、 用牛顿迭代法;

并比较两种迭代的收敛速度。

一、首先,由题可求得:12cos 3)(2

'

--=x x x f . 其次,分析得到其根所在的区间。

① 令()0=x f ,可得到x x x sin 1123

=+-.

② 用一阶导数分析得到1123

+-x x 和x sin 两个函数的增减区间;再用二阶导数分析得到

两个函数的拐点以及凹凸区间.

③ 在直角坐标轴上描摹出01123

=+-x x 和0sin =x 的图,在图上可以看到他们的交点,然后估计交点所在的区间,即是所要求的根的区间。经过估计,得到根所在的区间为

[]3,4--,[]1,0和[]4,3.

1、 一般迭代法 (1)算法步骤:

设ε为给定的允许精度,迭代法的计算步骤为:

① 选定初值0x .由()0=x f 确定函数()x g ,得等价形式()x g x =. ② 计算()0x g .由迭代公式得()01x g x =.

③ 如果ε≤-01x x ,则迭代结束,取1x 为解的近似值;否则,用1x 代替0x ,重复步骤②和步骤③. (2)程序代码: ① 在区间[]3,4--内, 代码: clc

x0=-3.5; %初值0x

iter_max=100; %迭代的最大次数 ep=1e-6; %允许精度 ε k=0;

while k<=iter_max %k 从0开始到iter_max 循环 x1=(sin(x0)+12*x0-1).^(1/3); %代入0x ,算出1x 的值 if abs(x1-x0)

x0=x1; %条件ε≤-01x x 不成立,用1x 代替0x k=k+1; %k 加1 end

x_star=x1, iter=k %1x 为解的近似值,iter 为迭代次数 运行结果:x_star = -3.4101 ;iter =14

②在区间[]1,0内,

代码: clc

x0=0.5; %初值0x

iter_max=100; %迭代的最大次数 ep=1e-6; %允许精度ε k=0;

while k<=iter_max %k 从0开始到iter_max 循环 x1=(1/12)*(x0.^3-sin(x0)+1); %代入0x ,算出1x 的值

if abs(x1-x0)

x0=x1; %条件ε≤-01x x 不成立,用1x 代替0x k=k+1; %k 加1 end

x_star=x1, iter=k %1x 为解的近似值,iter 为迭代次数 结果:x_star = 0.07696;iter =6

③在区间[]4,3内, 代码: clc

x0=3.5; %初值0x

iter_max=100; %迭代的最大次数 ep=1e-6; %允许精度ε k=0;

while k<=iter_max %k 从0开始到iter_max 循环 x1=(sin(x0)+12*x0-1).^(1/3); %代入0x ,算出1x 的值 if abs(x1-x0)

x0=x1; %条件ε≤-01x x 不成立,用1x 代替0x k=k+1; %k 加1 end

x_star=x1, iter=k %1x 为解的近似值,iter 为迭代次数 运行结果:x_star = 3.4101 ;iter =10

2、 牛顿迭代法 (1)算法步骤:

① 选定初值0x ,计算()0x f ,()0'

x f .

② 按公式()()

k k k k x f x f x x '

1-

=+迭代,得新的近似值1+k x ,并计算()1+k x f ,()1'

+k x f . ③ 对于给定的允许精度ε,如果ε≤-+k k x x 1,则终止迭代,取1*

+≈k x x ;否则,

1+=k k ,在转回步骤②计算.

(2)程序代码: ①在区间[]3,4--内, clc

x1=-3.5; %初值1x k=0;

while k<=100 %k 从0开始到100循环 x0=x1; %将初值1x 赋给0x

f0=x0.^3-sin(x0)-12*x0+1; %计算()0x f f1=3*x0.^2-cos(x0)-12; %计算()0'x f x1=x0-f0/f1; %计算得到新的近似值1x

if abs(x1-x0)< 1.0e-6 %01x x -与允许精度作比较 break ; %条件ε≤-01x x 成立,跳出循环 end

k=k+1; %条件ε≤-01x x 不成立,k 加1

end

x_star=x1, iter=k %1x 为解的近似值,iter 为迭代次数 运行结果:x_star = -3.4911;iter =2

②在区间[]1,0内, clc

x1=0.5; %初值1x k=0;

while k<=100 %k 从0开始到100循环 x0=x1; %将初值1x 赋给0x

f0=x0.^3-sin(x0)-12*x0+1; %计算()0x f f1=3*x0.^2-cos(x0)-12; %计算()0'x f x1=x0-f0/f1; %计算得到新的近似值1x

if abs(x1-x0)< 1.0e-6 %01x x -与允许精度作比较 break ; %条件ε≤-01x x 成立,跳出循环 end

k=k+1; %条件ε≤-01x x 不成立,k 加1 end

x_star=x1, iter=k %1x 为解的近似值,iter 为迭代次数 运行结果:x_star =0.07696 ;iter =3

③在区间[]4,3内, clc

x1=3.5; %初值1x k=0;