《MATLAB程序设技实践》课程考核1编程实现以下科学计算算法,并举一例应用之,(参考书籍《精通MATLAB科学计算》),王正林等著,电子工业出版社,2009年)。“不动点非线性方程求解”①算法说明:在MATLAB中编程实现不动点迭代法的函数是:StablePoint。功能:用不动点迭代法求函数的一个零点。调用格式:[root,n]=StablePoint(f,x0,eps)。其中,f为函数名;x0为初始迭代向量;eps为根的精度;root为求出的函数零点;n为迭代步数。②流程图:开始输入参数f,x0,epsNY③源程序代码:Function[root,n]=StablePoint(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④举例:采用不动点迭代法求方程120xx的一个根。解:流程图在MATLAB命令窗口中输入:[r,n]=StablePoint('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。功能:根据已知数据画饼图和折线图。其中,将每个季度分别命名为“第一季度”,“第二季度”,“第三季度”,“第四季度”。②流程图:③源程序代码:%折线图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函数输出图像结束⑤结果分析:从折线图可以看出该工厂效益变化趋势,效益在第二季度最低随后逐渐提高,并在第四季度恢复到第一季度的水平;从饼状图可以看出各个季度该工厂效益的比例关系。从这两个图可以合理安排工厂的生产计划。⑥在MATLAB中运行情况:(2)根据1252222aYaX绘制平面曲线。并分析参数a对其形状的影响。①算法说明:在MATLAB中绘制隐函数图形用ezplot绘制;功能:根据给定值绘制隐函数图形其中定义符号变量a,x,y和函数eq;设置变参量aa;设置图像坐标范围和时间间隔;②流程图:③源程序代码:symsaxy%定义符号变量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];%aa矩阵中的数值[m,n]=size(aa);fori=1:neq1=subs(eq,a,aa(i));%把eq表达式中所有的a都用矩阵aa中的数值代替ezplot(eq1,[-2020])%绘制符号函数eq1,横坐标范围为-20,20drawnowaxis([-2020-1010])%设置坐标轴的范围pause(0.5)%程序暂停0.5秒end④运行结果图形:开始定义变量a,x,y和函数eq,变参量aaN为矩阵列数,fori=1:neq1=subs(eq,a,aa(i)),用ezplot绘制图像设置坐标轴和时间间隔输出图像结束⑤结果分析:0.55/2a时,随着a增大曲线形状由长轴在y轴的椭圆逐渐转变为圆(此时5/2a);5/25a时a继续增大曲线形状由圆转变为长轴在x轴的椭圆;a5时曲线变为双曲线。⑥在MATLAB中运行情况:3按要求对指定函数进行插值和拟合。(1)按表6.4用3次样条方法插值计算0~90范围内整数点的正切值,然后用5次多项式拟合方法计算相同的函数值,并将两种计算结果进行比较。表6.4特殊角的正弦与正切值表a(度)0153045607590sina00.25880.50000.70710.86600.96591.0000tana00.26790.57741.00001.7320307320(2)按表6.5用3次多项式方法插值计算1~100之间整数的平方根表表6.51~100内特殊值的平方根表N149162536496481100N12345678910①算法说明:输入已知的数据作为样本;设置插值节点;针对不同的方法选用相应的函数及格式;②流程图:开始输入已知数据做样本设置插值点选用函数和格式,将已知数据与插值点带入输出结果结束(1)A正弦值算法:源程序代码:x=0:pi/12:pi/2;y=[00.25880.50000.70710.86600.96591.0000];xi=0:pi/180:pi/2;%设置插值点yi=interp1(x,y,xi,'spline')%一维数据插值用三次样条插值法%五次多项式拟合A=polyfit(x,y,5);%A为五次多项式系数向量yj=polyval(A,xi)%求出函数近似值运行结果:yi=Columns1through1100.01750.03490.05240.06980.08720.10450.12190.13920.15640.1737Columns12through220.19080.20790.22490.24190.25880.27560.29230.30900.32550.34200.3583Columns23through330.37460.39070.40670.42260.43840.45400.46950.48480.50000.51500.5299Columns34through440.54460.55920.57360.58780.60180.61570.62930.64280.65610.66910.6820Columns45through550.69470.70710.71930.73130.74310.75470.76600.77710.78800.79860.8090Columns56through660.81910.82900.83870.84800.85710.86600.87460.88290.89100.89870.9062Columns67through770.91350.92040.92710.93350.93960.94540.95100.95630.96120.96590.9703Columns78through880.97440.97820.98170.98490.98780.99040.99270.99460.99630.99770.9987Columns89through910.99950.99991.0000yj=Columns1through110.00000.01740.03490.05230.06970.08710.10450.12180.13910.15640.1736Columns12through220.19080.20790.22490.24190.25880.27560.29240.30900.32560.34200.3584Columns23through330.37460.39070.40670.42260.43840.45400.46950.48480.50000.51500.5299Columns34through440.54460.55920.57360.58780.60180.61570.62930.64280.65610.66910.6820Columns45through550.69460.70710.71930.73130.74310.75470.76600.77710.78800.79860.8090Columns56through660.81910.82900.83860.84800.85710.86600.87460.88290.89100.89880.9063Columns67through770.91350.92050.92720.93360.93970.94550.95100.95630.96120.96590.9703Columns78through880.97430.97810.98160.98480.98770.99020.99250.99450.99620.99750.9986Columns89through910.99940.99981.0000在MATLAB程序中运行情况:结果分析:通过比较,两种方法得到的结果近似相等。B正切值算法源程序代码:x=0:pi/12:5*pi/12;y=[00.26790.57741.00001.73203.7320];xi=0:pi/180:5*pi/12;yi=interp1(x,y,xi,'spline')%三次样条插值法%五次多项式拟合A=polyfit(x,y,5);yj=polyval(A,xi)运行结果:yi=Columns1through1100.01840.03650.05450.07240.09020.10790.12550.14310.16070.1784Columns12through220.19610.21380.23170.24970.26790.28630.30480.32360.34270.36200.3817Columns23through330.40170.42210.44290.46410.48580.50790.53050.55370.57740.60170.6266Columns34through440.65200.67800.70460.73170.75930.78760.81630.84560.87540.90580.9367Columns45through550.96811.00001.03251.06581.10031.13641.17431.21451.25721.30281.3516Columns56through661.40411.46041.52111.58631.65651.73201.81311.90021.99362.09372.2008Columns67through762.31522.43742.56752.70602.85323.00953.17523.35063.53613.7320yj=Columns1through11-0.00000.02350.04540.06580.08500.10320.12060.13750.15400.17010.1862Columns12through220.20220.21830.23450.25110.26790.28510.30280.32080.33940.35850.3781Columns23through330.39820.41880.44000.46160.48380.50650.52970.55330.57740.60200.6270Columns34through440.65240.67830.70470.73150.75880.78670.81500.84400.87360