数值分析实验报告Matlab仿真

上传人:我*** 文档编号:136526705 上传时间:2020-06-28 格式:DOC 页数:20 大小:988.50KB
返回 下载 相关 举报
数值分析实验报告Matlab仿真_第1页
第1页 / 共20页
数值分析实验报告Matlab仿真_第2页
第2页 / 共20页
数值分析实验报告Matlab仿真_第3页
第3页 / 共20页
数值分析实验报告Matlab仿真_第4页
第4页 / 共20页
数值分析实验报告Matlab仿真_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《数值分析实验报告Matlab仿真》由会员分享,可在线阅读,更多相关《数值分析实验报告Matlab仿真(20页珍藏版)》请在金锄头文库上搜索。

1、数值分析实验报告学院:电气工程与自动化学院专业:控制理论与控制工程姓名:李亚学号:2014 年 12 月24日实验一 函数插值方法 一、目的和意义 1、 学会常用的插值方法,求函数的近似表达式,以解决其它实际问题; 2、 明确插值多项式和分段插值多项式各自的优缺点; 3、 熟悉插值方法的程序编制; 4、 如果绘出插值函数的曲线,观察其光滑性。二、实验原理 1、 Lagrange插值公式 编写出插值多项式程序; 2、 给出插值多项式或分段三次插值多项式的表达式; 三、实验要求对于给定的一元函数的n+1个节点值。试用Lagrange公式求其插值多项式或分段二次Lagrange插值多项式。数据如下:

2、 (1) 0.4 0.55 0.65 0.80 0.95 1.05 0.41075 0.578150.696750.90 1.00 1.25382 求五次Lagrange多项式,计算,的值。(提示:结果为, ) (2) 1 2 3 4 5 6 7 0.368 0.135 0.050 0.018 0.007 0.002 0.001 试构造Lagrange多项式,和分段三次插值多项式,计算的,值。(提示:结果为, )四、实验过程1进入matlab开发环境;2根据实验内容和要求编写程序,程序如下所示,程序通过运用function函数编写,生成.m文件。调用时只需要在命令窗口调用y=Lagrange(

3、A,input)就可以实现任意次数拉格朗日插值法求解。function y=Lagrange(A,input)a,b=size(A);x=input;y=0;for j=1:a Mj=1; Nj=1; for k=1:a if(k=j) continue; end Mj=Mj*(x-A(k,1); Nj=Nj*(A(j,1)-A(k,1); end y=y+A(j,2)*Mj/Nj;end3调试程序并运行程序;调用拉格朗日脚本文件对以上两个表格数据求解,表格一对应MATLAB向量A;表格二对应向量I。在命令窗口调用y=Lagrange(A,input),求解如下面截图。图1 表一数据的解图2

4、表二数据的解4实验总结 通过对插值法算法编程,加深了对插值方法的理解,熟悉了MATLAB编写脚本函数。通过计算机求解,能更加方便快捷求解。 实验二 函数逼近与曲线拟合 一、目的和意义 1、掌握曲线拟合的最小二乘法; 2、最小二乘法亦可用于解超定线代数方程组; 3、探索拟合函数的选择与拟合精度间的关系。二、实验原理 对于给定的测量数据(xi,fi)(i=1,2,,n),设函数分布为特别的,取为多项式 (j=0, 1,,m)则根据最小二乘法原理,可以构造泛函令 (k=0, 1,,m)则可以得到法方程求该解方程组,则可以得到解,因此可得到数据的最小二乘解三、实验要求 1、用最小二乘法进行曲线拟合;

5、2、近似解析表达式为;3、打印出拟合函数,并打印出与的误差,; 4、另外选取一个近似表达式,尝试拟合效果的比较; 5、绘制出曲线拟合图。 四、实验步骤: 1进入matlab开发环境;2根据实验内容和要求编写程序如下;代码一公式S(x)=a1*t+a2*t2+a3*t3;代码二公式S(x)=a2*t2+a3*t3+a4*t4.代码一:function error=mintwomultiply(A)%S(x)=a1*t+a2*t2+a3*t3a,b=size(A);M=zeros(3);N=zeros(3,1);error=0;for i=1:a M(1,1)=M(1,1)+A(i,1)*A(i,

6、1); M(1,2)=M(1,2)+A(i,1)*A(i,1)2; M(2,1)=M(1,2); M(1,3)=M(1,3)+A(i,1)*A(i,1)3; M(3,1)=M(1,3); M(2,2)=M(2,2)+A(i,1)2*A(i,1)2; M(2,3)=M(2,3)+A(i,1)2*A(i,1)3; M(3,2)=M(2,3); M(3,3)=M(3,3)+A(i,1)3*A(i,1)3; N(1,1)=N(1,1)+A(i,1)*A(i,2); N(2,1)=N(2,1)+A(i,1)2*A(i,2); N(3,1)=N(3,1)+A(i,1)3*A(i,2);end%a1,a2,

7、a3=solve(M,N)I=MN;for i=1:aA(i,3)=I(1,1)*A(i,1)+I(2,1)*A(i,1)2+I(3,1)*A(i,1)3; error=error+(A(i,3)-A(i,2)2;endhold on;plot(A(:,1),A(:,3),r,LineWidth,2);plot(A(:,1),A(:,2),b,LineWidth,2);legend(原始图像,拟合图像,2);hold off;代码二:function error=mintwomultiply2(A)%S(x)=a2*t2+a3*t3+a4*t4a,b=size(A);M=zeros(3);N=

8、zeros(3,1);error=0;for i=1:a M(1,1)=M(1,1)+A(i,1)2*A(i,1)2; M(1,2)=M(1,2)+A(i,1)2*A(i,1)3; M(2,1)=M(1,2); M(1,3)=M(1,3)+A(i,1)2*A(i,1)4; M(3,1)=M(1,3); M(2,2)=M(2,2)+A(i,1)3*A(i,1)3; M(2,3)=M(2,3)+A(i,1)3*A(i,1)4; M(3,2)=M(2,3); M(3,3)=M(3,3)+A(i,1)4*A(i,1)4; N(1,1)=N(1,1)+A(i,1)2*A(i,2); N(2,1)=N(2

9、,1)+A(i,1)3*A(i,2); N(3,1)=N(3,1)+A(i,1)4*A(i,2);end%a1,a2,a3=solve(M,N)I=MN;for i=1:a A(i,3)=I(1,1)*A(i,1)2+I(2,1)*A(i,1)3+I(3,1)*A(i,1)4 error=error+(A(i,3)-A(i,2)2;endhold on;plot(A(:,1),A(:,3),r,LineWidth,2);plot(A(:,1),A(:,2),b,LineWidth,2);legend(原始图像,拟合图像,2);hold off;3调试程序并运行程序;在某冶炼过程中,根据统计数据

10、的含碳量与时间关系,试求含碳量与时间t的拟合曲线。t(分)0 5 10 15 20 25 30 35 40 45 50 55 0 1.27 2.16 2.86 3.44 3.87 4.15 4.37 4.51 4.58 4.02 4.64 根据以上数据调用代码一和代码二,结果如下图,返回的结果为error为误差,拟合图像蓝的为原始图像,红的为拟合图像,具体图像见下图:图1 公式一误差图2 公式一拟合图图3 公式二误差图4 公式二拟合图4实验总结从不同公式产生的误差来看,公式一明显误差小;从产生的拟合图像来看公式一更稳定,更平稳。由此可得,公式的选取对结果的影响很大。实验三 线方程组的直接解法一

11、、目的和意义 1、通过该课题的实验,体会模块化结构程序设计方法的优点; 2、运用所学的计算方法,解决各类线性方程组的直接算法; 3、提高分析和解决问题的能力,做到学以致用;4、学习Gauss消去法的原理;5、了解列主元的意义;6、确定什么时候系数阵要选主元。二 实验数学原理:由于一般线性方程在使用Gauss消去法求解时,从求解的过程中可以看到,若=0,则必须进行行交换,才能使消去过程进行下去。有的时候即使0,但是其绝对值非常小,由于机器舍入误差的影响,消去过程也会出现不稳定得现象,导致结果不正确。因此有必要进行列主元技术,以最大可能的消除这种现象。这一技术要寻找行r,使得并将第r行和第k行的元

12、素进行交换,以使得当前的的数值比0要大的多。这种列主元的消去法的主要步骤如下:1. 消元过程对k=1,2,n-1,进行如下步骤。1) 选主元,记若很小,这说明方程的系数矩阵严重病态,给出警告,提示结果可能不对。2) 交换增广阵A的r,k两行的元素。 (j=k,n+1)3) 计算消元 (i=k+1,n; j=k+1,n+1)2. 回代过程对k= n, n-1,1,进行如下计算至此,完成了整个方程组的求解。三、实验要求 1、对下述方程组分别利用Gauss顺序消去法与Gauss列主元消去法;2、应用结构程序设计编出通用程序; 3、比较计算结果,分析数值解误差的原因; 4、设线性方程组如下 方程的解:

13、四、实验要求 1进入matlab开发环境;2根据实验内容和要求编写程序;代码分为两个,Gauss顺序消去法与Gauss列主元消去法;代码一:Gauss顺序消去法function x=orderGauss(A,B)m,n=size(A);k=rank(A);if m=n&m=k for i=1:n-1 for j=i+1:n B(j,:)=B(j,1)-A(j,i)*B(i,1)/A(i,i); A(j,:)=A(j,:)-A(j,i)*A(i,:)/A(i,i); end end x(n,1)=B(n,1)/A(n,n); for i=n-1:-1:1 sum=0; for j=i+1:n sum=sum+A(i,j)*x(j,1); end x(i,1)=(B(i,1)-sum)/A(i,i); endend代码二:Gauss列主元消去法此代码分为两部分,即两个功能函数。rows

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 事务文书

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号