1、MATLAB 程序设技实践课程考核1 编程实现以下科学计算算法,并举一例应用之, (参考书籍精通MATLAB 科学计算 ) ,王正林等著,电子工业出版社,2009 年) 。“不动点非线性方程求解”算法说明:在 MATLAB 中编程实现不动点迭代法的函数是:StablePoint 。功能:用不动点迭代法求函数的一个零点。调用格式:root ,n=StablePoint (f,x0,eps) 。其中,f 为函数名;x0 为初始迭代向量;eps 为根的精度;root 为求出的函数零点;n 为迭代步数。流程图:开始输入参数f,x0,epsNY源程序代码:Function root,n=StablePo
2、int(f,x0,eps)%用不动点迭代法求函数的一个零点%初始迭代量:x0%根的精度:eps%求出的函数零点:root%迭代步数:nif(nargin=2) %输入参数个数为 2eps=1.0e-4;endtol=1; %绝对误差限root=x0;n=0;while(toleps)n=n+1;迭代算根比较精度是否符合要求输出根值和迭代步数结束r1=root;Root=subs(sym(f),findsym(sym(f),r1)+r1; %迭代的核心公式tol=abs(root-r1);end举例:采用不动点迭代法求方程120x的一个根。解:流程图在 MATLAB 命令窗口中输入: r,n=S
3、tablePoint(1/sqrt(x)+x-2,0.5)r =开始输入函数和参数调用不动点函数输出结果结束3.8197e-001n =4结果说明:从计算结果可以看出,经过四步迭代,得出方程的一个根为 0.3820 在 MATLAB 中运行情况:2 编程解决以下科学计算问题。(1) 某工厂 2005 年度各季度产值(单位:万元)分别为:450.6、395.9、410.2、450.9,试绘制折线图和饼图,并说明图形的实际意义。算法说明:首先用 subplot 对作图区域进行分区;在 Matlab 中编程实现画饼图和折线图的函数为 Plot 和 Pie。功能:根据已知数据画饼图和折线图。其中,将每
4、个季度分别命名为“第一季度” , “第二季度” , “第三季度” , “第四季度” 。流程图:源程序代码:%折线图subplot(1,2,1) %分区画图,画一行,每行两个,选定第一个区为当前活动区plot(450.6,395.9,410.2,450.9) %以序列号为横坐标,输入值为 y 坐标title(2005 年度各季度产值- 折线图);%饼状图subplot(1,2,2) pie(450.6,395.9,410.2,450.9,1:4,第一季度, 第二季度,第三季度,第四季度)title(2005 年度各季度产值- 饼图)结果图像:开始输入数据调用subplot, plot, pie函
5、数输出图像结束结果分析:从折线图可以看出该工厂效益变化趋势,效益在第二季度最低随后逐渐提高,并在第四季度恢复到第一季度的水平;从饼状图可以看出各个季度该工厂效益的比例关系。从这两个图可以合理安排工厂的生产计划。在 MATLAB 中运行情况:(2) 根据 绘制平面曲线。并分析参数 a 对其形状的125aYX影响。算法说明:在 MATLAB 中绘制隐函数图形用 ezplot 绘制;功能:根据给定值绘制隐函数图形其中定义符号变量 a, x,y 和函数 eq;设置变参量 aa;设置图像坐标范围和时间间隔;流程图:源程序代码:syms a x y %定义符号变量eq=1/a2*x2 +y2/(25-a2
6、)-1;aa=0.5:0.5:3.5,5/sqrt(2),3.6:0.5:6.6; %aa 矩阵中的数值m,n=size(aa);for i=1:neq1=subs(eq,a,aa(i); %把 eq 表达式中所有的 a 都用矩阵 aa 中的数值代替ezplot(eq1,-20 20) %绘制符号函数 eq1,横坐标范围为-20,20drawnowaxis(-20 20 -10 10) %设置坐标轴的范围pause(0.5) %程序暂停 0.5 秒end运行结果图形:开始定义变量 a,x,y和函数 eq,变参量aaN 为矩阵列数,for i=1:neq1=subs(eq,a ,aa(i) )
7、,用 ezplot 绘制图像设置坐标轴和时间间隔输出图像结束结果分析:时,随着 a 增大曲线形状由长轴在 y 轴的椭圆逐0.5/2a渐转变为圆(此时 ) ; 时 a 继续增大曲线5/2/5形状由圆转变为长轴在 x 轴的椭圆;a5 时曲线变为双曲线。在 MATLAB 中运行情况:3 按要求对指定函数进行插值和拟合。(1)按表 6.4 用 3 次样条方法插值计算 090 范围内整数点的正切值,然后用 5 次多项式拟合方法计算相同的函数值,并将两种计算结果进行比较。表 6.4 特殊角的正弦与正切值表a(度) 0 15 30 45 60 75 90sina 0 0.2588 0.5000 0.7071
8、 0.8660 0.9659 1.0000tana 0 0.2679 0.5774 1.0000 1.7320 307320(2)按表 6.5 用 3 次多项式方法插值计算 1100 之间整数的平方根表表 6.5 1100 内特殊值的平方根表N 1 4 9 16 25 36 49 64 81 1001 2 3 4 5 6 7 8 9 10算法说明:输入已知的数据作为样本;设置插值节点;针对不同的方法选用相应的函数及格式;流程图:开始输入已知数据做样本设置插值点选用函数和格式,将已知数据与插值点带入输出结果(1)A 正弦值算法:源程序代码:x=0:pi/12:pi/2;y=0 0.2588 0.
9、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); %A 为五次多项式系数向量yj=polyval(A,xi) %求出函数近似值运行结果:yi =Columns 1 through 110 0.0175 0.0349 0.0524 0.0698 0.0872 0.1045 0.1219 0.1392 0.1564 0.1737Columns 12 through 220.1908 0.2079 0.2
10、249 0.2419 0.2588 0.2756 0.2923 0.3090 0.3255 0.3420 0.3583Columns 23 through 330.3746 0.3907 0.4067 0.4226 0.4384 0.4540 0.4695 0.4848 0.5000 0.5150 0.5299Columns 34 through 440.5446 0.5592 0.5736 0.5878 0.6018 0.6157 0.6293 结束0.6428 0.6561 0.6691 0.6820Columns 45 through 550.6947 0.7071 0.7193 0.7
11、313 0.7431 0.7547 0.7660 0.7771 0.7880 0.7986 0.8090Columns 56 through 660.8191 0.8290 0.8387 0.8480 0.8571 0.8660 0.8746 0.8829 0.8910 0.8987 0.9062Columns 67 through 770.9135 0.9204 0.9271 0.9335 0.9396 0.9454 0.9510 0.9563 0.9612 0.9659 0.9703Columns 78 through 880.9744 0.9782 0.9817 0.9849 0.987
12、8 0.9904 0.9927 0.9946 0.9963 0.9977 0.9987Columns 89 through 910.9995 0.9999 1.0000yj =Columns 1 through 110.0000 0.0174 0.0349 0.0523 0.0697 0.0871 0.1045 0.1218 0.1391 0.1564 0.1736Columns 12 through 220.1908 0.2079 0.2249 0.2419 0.2588 0.2756 0.2924 0.3090 0.3256 0.3420 0.3584Columns 23 through
13、330.3746 0.3907 0.4067 0.4226 0.4384 0.4540 0.4695 0.4848 0.5000 0.5150 0.5299Columns 34 through 440.5446 0.5592 0.5736 0.5878 0.6018 0.6157 0.6293 0.6428 0.6561 0.6691 0.6820Columns 45 through 550.6946 0.7071 0.7193 0.7313 0.7431 0.7547 0.7660 0.7771 0.7880 0.7986 0.8090Columns 56 through 660.8191
14、0.8290 0.8386 0.8480 0.8571 0.8660 0.8746 0.8829 0.8910 0.8988 0.9063Columns 67 through 770.9135 0.9205 0.9272 0.9336 0.9397 0.9455 0.9510 0.9563 0.9612 0.9659 0.9703Columns 78 through 880.9743 0.9781 0.9816 0.9848 0.9877 0.9902 0.9925 0.9945 0.9962 0.9975 0.9986Columns 89 through 910.9994 0.9998 1.
15、0000在 MATLAB 程序中运行情况:结果分析:通过比较,两种方法得到的结果近似相等。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 110 0.0184 0.0365 0.0545 0.0724 0.0902 0.1079 0.1255 0.1431 0.
16、1607 0.1784Columns 12 through 220.1961 0.2138 0.2317 0.2497 0.2679 0.2863 0.3048 0.3236 0.3427 0.3620 0.3817Columns 23 through 330.4017 0.4221 0.4429 0.4641 0.4858 0.5079 0.5305 0.5537 0.5774 0.6017 0.6266Columns 34 through 440.6520 0.6780 0.7046 0.7317 0.7593 0.7876 0.8163 0.8456 0.8754 0.9058 0.93
17、67Columns 45 through 550.9681 1.0000 1.0325 1.0658 1.1003 1.1364 1.1743 1.2145 1.2572 1.3028 1.3516Columns 56 through 661.4041 1.4604 1.5211 1.5863 1.6565 1.7320 1.8131 1.9002 1.9936 2.0937 2.2008Columns 67 through 762.3152 2.4374 2.5675 2.7060 2.8532 3.0095 3.1752 3.3506 3.5361 3.7320yj =Columns 1
18、through 11-0.0000 0.0235 0.0454 0.0658 0.0850 0.1032 0.1206 0.1375 0.1540 0.1701 0.1862Columns 12 through 220.2022 0.2183 0.2345 0.2511 0.2679 0.2851 0.3028 0.3208 0.3394 0.3585 0.3781Columns 23 through 330.3982 0.4188 0.4400 0.4616 0.4838 0.5065 0.5297 0.5533 0.5774 0.6020 0.6270Columns 34 through
19、440.6524 0.6783 0.7047 0.7315 0.7588 0.7867 0.8150 0.8440 0.8736 0.9039 0.9351Columns 45 through 550.9670 1.0000 1.0341 1.0693 1.1060 1.1442 1.1841 1.2259 1.2699 1.3162 1.3652Columns 56 through 661.4171 1.4723 1.5310 1.5935 1.6604 1.7320 1.8087 1.8910 1.9793 2.0742 2.1762Columns 67 through 762.2860
20、2.4040 2.5310 2.6677 2.8147 2.9727 3.1427 3.3253 3.5214 3.7320结果分析:通过比较知,角度较小时五次多项式算得的值较大,角度增大则两种方法得到的结果近似相等。在 MATLAB 中运行情况:(2)源程序代码:%三次多项式插值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 111.0000 1.3729 1.7125 2.0000 2.24
21、05 2.4551 2.6494 2.8292 3.0000 3.1636 3.3186Columns 12 through 223.4661 3.6069 3.7422 3.8729 4.0000 4.1237 4.2435 4.3599 4.4730 4.5832 4.6907Columns 23 through 334.7958 4.8988 5.0000 5.0993 5.1966 5.2921 5.3857 5.4777 5.5681 5.6570 5.7446Columns 34 through 445.8309 5.9160 6.0000 6.0829 6.1647 6.2454
22、 6.3249 6.4035 6.4810 6.5577 6.6334Columns 45 through 556.7082 6.7823 6.8556 6.9281 7.0000 7.0712 7.1416 7.2113 7.2804 7.3487 7.4164Columns 56 through 667.4835 7.5500 7.6159 7.6812 7.7459 7.8102 7.8739 7.9372 8.0000 8.0623 8.1242Columns 67 through 778.1855 8.2464 8.3068 8.3668 8.4263 8.4854 8.5441 8.6024 8.6603 8.7178 8.7749Columns 78 through 888.8317 8.8881 8.9442 9.0000 9.0555 9.1107 9.1655 9.2201 9.2744 9.3284 9.3821Columns 89 through 999.4354 9.4884 9.5412 9.5935 9.6456 9.6973 9.7486 9.7996 9.8502 9.9005 9.9505Column 10010.0000在 MATLAB 中的运行情况: