二分法简单迭代法的matlab代码实现.docx

上传人:b****1 文档编号:13568875 上传时间:2023-06-15 格式:DOCX 页数:14 大小:77.48KB
下载 相关 举报
二分法简单迭代法的matlab代码实现.docx_第1页
第1页 / 共14页
二分法简单迭代法的matlab代码实现.docx_第2页
第2页 / 共14页
二分法简单迭代法的matlab代码实现.docx_第3页
第3页 / 共14页
二分法简单迭代法的matlab代码实现.docx_第4页
第4页 / 共14页
二分法简单迭代法的matlab代码实现.docx_第5页
第5页 / 共14页
二分法简单迭代法的matlab代码实现.docx_第6页
第6页 / 共14页
二分法简单迭代法的matlab代码实现.docx_第7页
第7页 / 共14页
二分法简单迭代法的matlab代码实现.docx_第8页
第8页 / 共14页
二分法简单迭代法的matlab代码实现.docx_第9页
第9页 / 共14页
二分法简单迭代法的matlab代码实现.docx_第10页
第10页 / 共14页
二分法简单迭代法的matlab代码实现.docx_第11页
第11页 / 共14页
二分法简单迭代法的matlab代码实现.docx_第12页
第12页 / 共14页
二分法简单迭代法的matlab代码实现.docx_第13页
第13页 / 共14页
二分法简单迭代法的matlab代码实现.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

二分法简单迭代法的matlab代码实现.docx

《二分法简单迭代法的matlab代码实现.docx》由会员分享,可在线阅读,更多相关《二分法简单迭代法的matlab代码实现.docx(14页珍藏版)》请在冰点文库上搜索。

二分法简单迭代法的matlab代码实现.docx

二分法简单迭代法的matlab代码实现

二分法、简单迭代法的matlab代码实现

实验一非线性方程的数值解法

(一)

信息与计算科学金融崔振威201002034031

一、实验目的:

熟悉二分法和简单迭代法的算法实现。

二、实验内容:

教材P402.1.5

三、实验要求

1根据实验内容编写二分法和简单迭代法的算法实现

2简单比较分析两种算法的误差

3试构造不同的迭代格式,分析比较其收敛性

(一)、二分法程序:

functionef=bisect(fx,xa,xb,n,delta)

%fx是由方程转化的关于x的函数,有fx=0。

%xa解区间上限

%xb解区间下限

%n最多循环步数,防止死循环。

%delta为允许误差

x=xa;fa=eval(fx);

x=xb;fb=eval(fx);

disp('[nxaxb

k=0;

whileabs(x-x0)>eps&k

x0=x;

x=feval(f,x0);

k=k+1;

end

x0=x;

ifk==N

end

解:

a、g(x)=x5-3x3-2x2+2

二分法求方程:

(1)、在matlab的命令窗口中输入命令:

>>fplot('[x^5-3*x^3-2*x^2+2]',[-3,3]);grid

得下图:

由上图可得知:

方程在[-3,3]区间有根。

(2)、二分法输出结果

>>f='x^5-3*x^3-2*x^2+2'

f=

x^5-3*x^3-2*x^2+2

>>bisect(f,-3,3,20,10^(-12))

2.0000-3.00000-1.50000.0313

3.0000-3.0000-1.5000-2.2500-31.6182

4.0000-2.2500-1.5000-1.8750-8.4301

5.0000-1.8750-1.5000-1.6875-2.9632

6.0000-1.6875-1.5000-1.5938-1.2181

7.0000-1.5938-1.5000-1.5469-0.5382

8.0000-1.5469-1.5000-1.5234-0.2405

9.0000-1.5234-1.5000-1.5117-0.1015

10.0000-1.5117-1.5000-1.5059-0.0343

11.0000-1.5059-1.5000-1.5029-0.0014

12.0000-1.5029-1.5000-1.50150.0150

13.0000-1.5029-1.5015-1.50220.0068

14.0000-1.5029-1.5022-1.50260.0027

15.0000-1.5029-1.5026-1.50270.0007

16.0000-1.5029-1.5027-1.5028-0.0003

17.0000-1.5028-1.5027-1.50280.0002

18.0000-1.5028-1.5028-1.5028-0.0001

19.0000-1.5028-1.5028-1.50280.0001

20.0000-1.5028-1.5028-1.5028-0.0000

2、迭代法求方程:

迭代法输出结果:

>>f=inline('x^5-3*x^3-2*x^2+2');

>>[x0,k]=iterate(fun1,2)

x0=

2

k=

1

>>[x0,k]=iterate(fun1,1.5)

x0=

NaN

k=

6

>>[x0,k]=iterate(fun1,2.5)

x0=

NaN

k=

5

(3)、误差分析:

由二分法和迭代法输出结果可知,通过定点迭代法得出方程的解误差比二分法大,而利用二分法求出的结果中,可以清楚看出方程等于零时的解,其误差比迭代法小。

b、g(x)=cos(sin(x))

二分法求方程:

(1)、在matlab的命令窗口中输入命令:

>>fplot('[cos(sin(x))]',[-4,4]);grid

得下图:

由上图可得知:

方程在[-4,4]区间无根。

(2)、二分法输出结果

>>f='cos(sin(x))'

f=

cos(sin(x))

>>bisect(f,-4,4,20,10^(-12))

2.000004.00002.00000.6143

3.00002.00004.00003.00000.9901

4.00003.00004.00003.50000.9391

5.00003.50004.00003.75000.8411

6.00003.75004.00003.87500.7842

7.00003.87504.00003.93750.7554

8.00003.93754.00003.96880.7412

9.00003.96884.00003.98440.7341

10.00003.98444.00003.99220.7305

11.00003.99224.00003.99610.7288

12.00003.99614.00003.99800.7279

13.00003.99804.00003.99900.7275

14.00003.99904.00003.99950.7273

15.00003.99954.00003.99980.7271

16.00003.99984.00003.99990.7271

17.00003.99994.00003.99990.7271

18.00003.99994.00004.00000.7270

19.00004.00004.00004.00000.7270

20.00004.00004.00004.00000.7270

2、迭代法求方程:

迭代法输出结果:

>>f=inline('cos(sin(x))');

>>[x0,k]=iterate(f,0.5)

x0=

0.7682

k=

15

>>[x0,k]=iterate(f,1)

x0=

0.7682

k=

15

>>[x0,k]=iterate(f,1.5)

x0=

0.7682

k=

16

>>[x0,k]=iterate(f,2)

x0=

0.7682

k=

15

>>[x0,k]=iterate(f,2.5)

x0=

0.7682

k=

14

(3)、由于该方程无解,所以无法比较误差。

c、g(x)=x2-sin(x+0.15)

二分法求方程:

(1)、在matlab的命令窗口中输入命令:

>>fplot('[x^2-sin(x+0.15)]',[-10,10]);grid

得下图:

由上图可得知:

方程在[-3,3]区间有根。

(2)、二分法输出结果

>>f='x^2-sin(x+0.15)'

f=

x^2-sin(x+0.15)

>>bisect(f,-3,3,30,10^(-12))

1.0000-3.00003.00000-0.1494

2.0000-3.00000-1.50003.2257

3.0000-1.50000-0.75001.1271

4.0000-0.75000-0.37500.3637

5.0000-0.37500-0.18750.0726

6.0000-0.18750-0.0938-0.0474

7.0000-0.1875-0.0938-0.14060.0104

8.0000-0.1406-0.0938-0.1172-0.0191

9.0000-0.1406-0.1172-0.1289-0.0045

10.0000-0.1406-0.1289-0.13480.0029

11.0000-0.1348-0.1289-0.1318-0.0008

12.0000-0.1348-0.1318-0.13330.0011

13.0000-0.1333-0.1318-0.13260.0001

14.0000-0.1326-0.1318-0.1322-0.0003

15.0000-0.1326-0.1322-0.1324-0.0001

16.0000-0.1326-0.1324-0.13250.0000

17.0000-0.1325-0.1324-0.1324-0.0000

18.0000-0.1325-0.1324-0.1325-0.0000

19.0000-0.1325-0.1325-0.13250.0000

20.0000-0.1325-0.1325-0.13250.0000

21.0000-0.1325-0.1325-0.13250.0000

22.0000-0.1325-0.1325-0.13250.0000

23.0000-0.1325-0.1325-0.1325-0.0000

24.0000-0.1325-0.1325-0.13250.0000

25.0000-0.1325-0.1325-0.1325-0.0000

26.0000-0.1325-0.1325-0.13250.0000

27.0000-0.1325-0.1325-0.13250.0000

28.0000-0.1325-0.1325-0.13250.0000

29.0000-0.1325-0.1325-0.13250.0000

30.0000-0.1325-0.1325-0.1325-0.0000

2、迭代法求方程:

迭代法输出结果:

>>f=inline('x^2-sin(x+0.15)');

>>[x0,k]=iterate(f,1.96)

x0=

NaN

k=

12

>>[x0,k]=iterate(f,0,2)

x0=

-0.1494

k=

1

>>[x0,k]=iterate(f,0.2)

x0=

0.3234

k=

500

>>[x0,k]=iterate(f,0.3)

x0=

0.3234

k=

500

>>[x0,k]=iterate(f,0.001)

x0=

0.3234

k=

500

(3)、误差分析:

由二分法和迭代法输出结果可知,利用二分法求出的结果中,可以清楚看出方程等于零时的解,其误差比迭代法小。

d、g(x)=xx-cos(x)

二分法求方程:

(1)、在matlab的命令窗口中输入命令:

>>fplot('[x^(x-cos(x))]',[-1,1]);grid

得下图:

由上图可得知:

方程在[-1,1]区间有根。

(2)、二分法输出结果

>>f='x^(x-cos(x))'

f=

x^(x-cos(x))

>>bisect(f,-0.1,0.1,20,10^(-12))

1.0000-0.10000.10000Inf

2.0000-0.10000-0.0500-22.8740+3.5309i

3.0000-0.05000-0.0250-43.6821+3.3947i

4.0000-0.02500-0.0125-84.4110+3.2958i

1.0e+002*

0.0500-0.00010-0.0001-1.6511+0.0323i

1.0e+002*

0.0600-0.00010-0.0000-3.2580+0.0319i

1.0e+002*

0.0700-0.00000-0.0000-6.4648+0.0317i

1.0e+003*

0.0080-0.00000-0.0000-1.2872+0.0032i

1.0e+003*

0.0090-0.00000-0.0000-2.5679+0.0032i

1.0e+003*

0.0100-0.00000-0.0000-5.1285+0.0031i

1.0e+004*

0.0011-0.00000-0.0000-1.0249+0.0003i

1.0e+004*

0.0012-0.00000-0.0000-2.0490+0.0003i

1.0e+004*

0.0013-0.00000-0.0000-4.0971+0.0003i

1.0e+004*

0.0014-0.00000-0.0000-8.1931+0.0003i

1.0e+005*

0.0001-0.00000-0.0000-1.6385+0.0000i

1.0e+005*

0.0002-0.00000-0.0000-3.2769+0.0000i

1.0e+005*

0.0002-0.00000-0.0000-6.5537+0.0000i

1.0e+006*

0.0000-0.00000-0.0000-1.3107+0.0000i

1.0e+006*

0.0000-0.00000-0.0000-2.6215+0.0000i

1.0e+006*

0.0000-0.00000-0.0000-5.2429+0.0000i

2、迭代法求方程:

迭代法输出结果:

>>f=inline('x^2-sin(x+0.15)');

x0=

0.3234

k=

500

>>[x0,k]=iterate(f,0.01)

x0=

0.3234

k=

500

>>[x0,k]=iterate(f,0.81)

x0=

0.3234

k=

500

>>[x0,k]=iterate(f,0.61)

x0=

0.3234

k=

500

(3)、误差分析:

由二分法和迭代法输出结果可知,利用二分法求出的结果中,可以清楚看出方程等于零时的解,其误差比迭代法小。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 临时分类 > 批量上传

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2