不动点迭代法非线性方程求解

更新时间:2023-10-11 17:15:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《MATLAB程序设计实践》课程考核

1、编程实现以下科学计算算法,并举一例应用之。(参考书籍《精通MATLAB科学计算》,王正林等著,电子工业出版社,2009年) “不动点迭代法非线性方程求解” 2、编程解决以下科学计算问题。

7.某工厂2005年度各季度产值(单位:万元)分别为:450.6、395.9、410.2、450.9,试绘制折线图和饼图,并说明图形的实际意义。

x2y2?1绘制平面曲线,并分析参数a对其形状的影响。 8.根据2?a25?a2

2.按要求对指定函数进行插值和拟合。

(1)按表6.4用3次样条方法插值计算0~900范围内整数点的正弦值和

0~750范围内整数点的正切值,然后用5次多项式拟合方法计算相同的函数值,

并将两种计算结果进行比较。

表6.4 特殊角的正弦与正切值表 0 15 30 45 60 75 90 a(度)sina 0 0.2588 0.5000 0.7071 0.8660 0.9659 1.0000 tana 0 0.2679 0.5774 1.0000 1.7320 3.7320 (2)按表6.5用3次多项式方法插值计算1~100之间整数的平方根。

表6.5 1~100内特殊值的平方根表 N 1 4 9 16 25 36 49 64 81 100 1 2 3 4 5 6 7 8 9 10 N

1、不动点迭代非线性方程求解 解:

算法说明:

在Matlab中编程实现不动点迭代法的函数为StablePoint 功能:用不动点迭代法求函数的一个零点。 调用格式:[root,n]=StablePoint(f,x0,eps)。

其中,f为函数名;

x0为初始迭代向量; eps为根的精度;

root为求出的函数零点; n为迭代步数。

流程图:

输入参数f,x0,eps 迭代算根 否 比较精度是否符合要求 是 输出根值和迭代步数

不动点迭代法的MATLAB程序代码: function [root,n]=StablePoint(f,x0,eps) %用不动点迭代法求函数f的一个零点 %初始迭代量:x0 %根的精度:eps

%求出的函数零点:root

%迭代步数:n if(nargin==2) eps=1.0e-4; end tol=1; root=x0; n=0;

while(tol>eps) n=n+1; r1=root;

root=subs(sym(f),findsym(sym(f)),r1)+r1; %迭代的核心公式 tol=abs(root-r1); end

实例:

采用不动点迭代法求方程流程图:

开始 1x?x?2?0的一个根。

确定函数和参数 代入公式 输出结果

解:在MATLAB命令窗口中输入程序代码: >>[r,n]=StablePoint('1/sqrt(x)+x-2',0.5)

结果输出:

r =

0.3820 n =

4

从计算结果可以看出,经过四步迭代,得出方程的一个根为0.3820

2.编程解决以下科学计算问题

7、某工厂2005年度各季度产值(单位:万元)分别为450.6, 450.9,试绘制折线图和饼图,并说明图像的实际意义。 解:

流程图:

用subplot首先对对作图区域分区 根据图线类型选择函数: 折线图用plot 饼状图用pie 输入数据;图像用title标注 输出图像 395.9, 410.2,

源程序代码: %折线图 subplot(1,2,1)

plot([450.6,395.9,410.2,450.9])

title('2005年度各季度产值-折线图'); %饼状图

subplot(1,2,2)

pie([450.6,395.9,410.2,450.9],1:4,{'第一季度','第二季度','第三季度','第四季度'}) title('2005年度各季度产值-饼图')

从折线图可以看出该工厂效益变化趋势,效益在第二季度最低随后逐渐提高,并在第四季度恢复到第一季度的水平;从饼状图可以看出各个季度该工厂效益的比例关系。从这两个图可以合理安排工厂的生产计划。

x2y2?1绘制平面曲线,并分析参数a对其形状的影响。 8.根据2?2a25?a流程图:

定义符号变量a x y 和函数eq;设置变参量aa(实数矩阵) n为矩阵的列数; for i=1:n eq1=subs(eq,a,aa(i)); 并用ezplot绘制隐函数图形 设置图像坐标范围和间隔时间 依次作图

syms a x y

eq=1/a^2*x^2 +y^2/(25-a^2)-1;

aa=[0.5:0.5:3.5,5/sqrt(2),3.6:0.5:6.6];

[m,n]=size(aa); for i=1:n

eq1=subs(eq,a,aa(i)); ezplot(eq1,[-20 20]) drawnow

axis([-20 20 -10 10]) pause(0.5) end

随着a增大曲线形状由长轴在y轴的椭圆逐渐转变为圆(此0.5?a?5/2时,时a?5/2);5/2?a5?时a继续增大曲线形状由圆转变为长轴在x轴

的椭圆;a>5时曲线变为双曲线。

2.按要求对指定函数进行插值和拟合。

(1)按表6.4用3次样条方法插值计算0~900范围内整数点的正弦值和

0~750范围内整数点的正切值,然后用5次多项式拟合方法计算相同的函数值,

并将两种计算结果进行比较。

表6.4 特殊角的正弦与正切值表 0 15 30 45 60 75 90 a(度)sina 0 0.2588 0.5000 0.7071 0.8660 0.9659 1.0000 tana 0 0.2679 0.5774 1.0000 1.7320 3.7320

流程图:

开始 输入已知的数据表作为样本;设置插值节点 针对不同的方法选用相应的函数及格式 将已知数据和插值节点代入 求得插值节点处的函数值

A.正弦值算法: x=0:pi/12:pi/2;

y=[0 0.2588 0.5000 0.7071 0.8660 0.9659 1.0000]; xi=0:pi/180:pi/2;%三次样条差值 yi=interp1(x,y,xi,'spline') %五次多项式拟合 A=polyfit(x,y,5); yj=polyval(A,xi)

运行结果: yi =

Columns 1 through 11

0 0.0175 0.0349 0.0524 0.0698 0.0872 0.1045 0.1219 0.1392 0.1564 0.1737

Columns 12 through 22

0.1908 0.2079 0.2249 0.2419 0.2588 0.2756 0.2923 0.3090 0.3255 0.3420 0.3583

Columns 23 through 33

0.3746 0.3907 0.4067 0.4226 0.4848 0.5000 0.5150 0.5299

Columns 34 through 44

0.5446 0.5592 0.5736 0.5878 0.6428 0.6561 0.6691 0.6820

Columns 45 through 55

0.6947 0.7071 0.7193 0.7313 0.7771 0.7880 0.7986 0.8090

Columns 56 through 66

0.8191 0.8290 0.8387 0.8480 0.8829 0.8910 0.8987 0.9062

Columns 67 through 77

0.9135 0.9204 0.9271 0.9335 0.9563 0.9612 0.9659 0.9703

Columns 78 through 88

0.9744 0.9782 0.9817 0.9849 0.9946 0.9963 0.9977 0.9987

Columns 89 through 91

0.9995 0.9999 1.0000

0.4384 0.4540 0.6018 0.6157 0.7431 0.7547 0.8571 0.8660 0.9396 0.9454 0.9878 0.9904 0.4695 0.6293 0.7660 0.8746 0.9510 0.9927

yj =

Columns 1 through 11

0.0000 0.0174 0.0349 0.0523 0.0697 0.0871 0.1045 0.1218 0.1391 0.1564 0.1736

Columns 12 through 22

0.1908 0.2079 0.2249 0.2419 0.3090 0.3256 0.3420 0.3584

Columns 23 through 33

0.3746 0.3907 0.4067 0.4226 0.4848 0.5000 0.5150 0.5299

Columns 34 through 44

0.5446 0.5592 0.5736 0.5878 0.6428 0.6561 0.6691 0.6820

Columns 45 through 55

0.6946 0.7071 0.7193 0.7313 0.7771 0.7880 0.7986 0.8090

Columns 56 through 66

0.8191 0.8290 0.8386 0.8480 0.8829 0.8910 0.8988 0.9063

Columns 67 through 77

0.9135 0.9205 0.9272 0.9336 0.9563 0.9612 0.9659 0.9703

Columns 78 through 88

0.9743 0.9781 0.9816 0.9848 0.9945 0.9962 0.9975 0.9986

Columns 89 through 91

0.2588 0.2756 0.4384 0.4540 0.6018 0.6157 0.7431 0.7547 0.8571 0.8660 0.9397 0.9455 0.9877 0.9902 0.2924 0.4695 0.6293 0.7660 0.8746 0.9510 0.9925 0.9994 0.9998 1.0000

通过比较,两种方法得到的结果近似相等。 B.正切值算法: x=0:pi/12:5*pi/12;

y=[0 0.2679 0.5774 1.0000 1.7320 3.7320]; xi=0:pi/180:5*pi/12;%三次样条差值 yi=interp1(x,y,xi,'spline') %五次多项式拟合 A=polyfit(x,y,5); yj=polyval(A,xi)

运行结果: yi =

Columns 1 through 11

0 0.0184 0.0365 0.0545 0.1255 0.1431 0.1607 0.1784

Columns 12 through 22

0.1961 0.2138 0.2317 0.2497 0.3236 0.3427 0.3620 0.3817

Columns 23 through 33

0.4017 0.4221 0.4429 0.4641 0.5537 0.5774 0.6017 0.6266

Columns 34 through 44

0.6520 0.6780 0.7046 0.7317 0.8456 0.8754 0.9058 0.9367

Columns 45 through 55

0.9681 1.0000 1.0325 1.0658 1.2145 1.2572 1.3028 1.3516

Columns 56 through 66

1.4041 1.4604 1.5211 1.5863 0.0724 0.0902 0.2679 0.2863 0.4858 0.5079 0.7593 0.7876 1.1003 1.1364 1.6565 1.7320 0.1079 0.3048 0.5305 0.8163 1.1743 1.8131

1.9002 1.9936 2.0937 2.2008

Columns 67 through 76

2.3152 2.4374 2.5675 2.7060 2.8532 3.0095 3.1752 3.3506 3.5361 3.7320 yj =

Columns 1 through 11

-0.0000 0.0235 0.0454 0.0658 0.1375 0.1540 0.1701 0.1862

Columns 12 through 22

0.2022 0.2183 0.2345 0.2511 0.3208 0.3394 0.3585 0.3781

Columns 23 through 33

0.3982 0.4188 0.4400 0.4616 0.5533 0.5774 0.6020 0.6270

Columns 34 through 44

0.6524 0.6783 0.7047 0.7315 0.8440 0.8736 0.9039 0.9351

Columns 45 through 55

0.9670 1.0000 1.0341 1.0693 1.2259 1.2699 1.3162 1.3652

Columns 56 through 66

1.4171 1.4723 1.5310 1.5935 1.8910 1.9793 2.0742 2.1762

Columns 67 through 76

2.2860 2.4040 2.5310 2.6677 3.3253 3.5214 3.7320

0.0850 0.1032 0.2679 0.2851 0.4838 0.5065 0.7588 0.7867 1.1060 1.1442 1.6604 1.7320 2.8147 2.9727 0.1206 0.3028 0.5297 0.8150 1.1841 1.8087 3.1427

通过比较知,角度较小时五次多项式算得的值较大,角度增大则两种方法得到的结果近似相等。

(2)按表6.5用3次多项式方法插值计算1~100之间整数的平方根。

表6.5 1~100内特殊值的平方根表 N 1 4 9 16 25 36 49 64 81 100 1 2 3 4 5 6 7 8 9 10 N x=[1 4 9 16 25 36 49 64 81 100]; y=[1 2 3 4 5 6 7 8 9 10]; xi=1:100;

f=interp1(x,y,xi,'cubic')

结果: f =

Columns 1 through 11

1.0000 1.3729 1.7125 2.0000 2.8292 3.0000 3.1636 3.3186

Columns 12 through 22

3.4661 3.6069 3.7422 3.8729 4.3599 4.4730 4.5832 4.6907

Columns 23 through 33

4.7958 4.8988 5.0000 5.0993 5.4777 5.5681 5.6570 5.7446

Columns 34 through 44

5.8309 5.9160 6.0000 6.0829 6.4035 6.4810 6.5577 6.6334

Columns 45 through 55

2.2405 2.4551 2.6494

4.0000 4.1237 4.2435

5.1966 5.2921 5.3857

6.1647 6.2454 6.3249

6.7082 6.7823 6.8556 6.9281 7.0000 7.0712 7.1416 7.2113 7.2804 7.3487 7.4164

Columns 56 through 66

7.4835 7.5500 7.6159 7.6812 7.7459 7.8102 7.8739 7.9372 8.0000 8.0623 8.1242

Columns 67 through 77

8.1855 8.2464 8.3068 8.3668 8.6024 8.6603 8.7178 8.7749

Columns 78 through 88

8.8317 8.8881 8.9442 9.0000 9.2201 9.2744 9.3284 9.3821

Columns 89 through 99

9.4354 9.4884 9.5412 9.5935 9.7996 9.8502 9.9005 9.9505

Column 100

10.0000

8.4263 8.4854 9.0555 9.1107 9.6456 9.6973 8.5441 9.1655 9.7486

本文来源:https://www.bwwdw.com/article/kdnf.html

Top