网站大量收购独家精品文档,联系QQ:2885784924

基于MATLAB《数值分析》有关算法的实现..docx

基于MATLAB《数值分析》有关算法的实现..docx

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于MATLAB《数值分析》有关算法的实现.

基于MATLAB《数值分析》有关算法的实现摘要: 数值分析算法在科学应用各个分支中有着越来越广泛的应用,特别是计算机的出现更有助于这些应用的不断发展。实际生活中,很多问题都可以归纳为数值问题,如测得的实验数据有时候可以用插值法进行函数逼近预测等。数值算法常与工程实践相结合,通过MATLAB软件运行的程序来解决实际问题。本课题实现了拉格朗日插值法、最小二乘法、雅克比迭代法、二分法等算法的MATLAB程序设计。拉格朗日插值法基本原理:通过平面上不同的两点可以确定一条直线,这就是拉格朗日线性插值问题,对于不在同一条直线的三个点得到的插值多项式则为抛物线。拉格朗日插值的基本多项式为: ,i=0,1,2,…n有了基函数以后就可以直接构造如下多项式:该多项式就是拉格朗日插值法所求得的插值多项式。拉格朗日插值法算法: 根据所给点(,)的坐标依次写出其插值基函数(用for循环可以轻易解决) i=0,1,2,…,n将插值基函数与其对应的点的函数值相乘得:f(),i=0,1,2,…,n将2中各项累加即得插值多项式:拉格朗日插值法程序:function lagrange(A) %A为一个只有两行的矩阵,第一行为插值点,第二行为插值点对应的函数值[m,n]=size(A);f=1;p=0; %两个用到的变量syms xfor i=1:n f=(x-A(1,i))*f;endfor j=1:n g(j)=f/(x-A(1,j)); %求插值基函数的分母 h(j)=subs(g(j),x,A(1,j)); %求插值基函数的分子 s(j)=g(j)/h(j)*A(2,j); %插值基函数endfor k=1:n s(j)=collect(s(j)); %合并同类项endfor i=1:n p=p+s(i);enddisp(‘拉格朗日插值法可得多项式:’)collect(p) %可用lagrange([1 3 6 8;4 6 9 12])调试4.例子:有如下表格中有四个插值点及其对应的函数值,用拉格朗日插值法写出其三次插值多项式:136846912解:在MATLAB命令窗口输入: lagrange([1 3 6 8;4 6 9 12]) 可得运行结果: 牛顿插值法基本原理: 拉格朗日插值多项式的理论在许多方面都有应用,是很不错的一种方法,但就插值问题而言,如果增加一个插值点,原先计算插值的多项式就没有用了,即拉格朗日插值法的继承性很差,牛顿插值法就很好的解决了这个问题,具有很好的继承性。函数f(x)的差商定义为:f[]=f()f[, ]=f[,]=f[,…,]=在差商的基础上可得牛顿插值多项式:=f[]+f[,](x-)+ f[,,](x-)(x-)+…+ f[,,…,](x-)(x-)…(x-)牛顿插值法算法:根据差商的定义求出各阶差商。依次写出:=(x-) (x-)…(x-),n=0,1,2,…,n-1分别与相应的差商相乘,然后累加即可得:=f[]+f[,](x-)+ f[,,](x-)(x-)+…+ f[,,…,](x-)(x-)…(x-)程序代码:function newton(A) %A为两行矩阵,第一行为插值点,第二行为对应插值点的函数值[m,n]=size(A);B=zeros(n-1);k=1;for i=1:n-1 for j=i+1:n Z(j)=(A(2,j)-A(2,j-1))/(A(1,j)-A(1,j-k)); %求i阶差商 B(i,j)=Z(j); %记住各阶差商 end for j=i+1:n A(2,j)=Z(j); end k=k+1;endf=A(2,1);g=1;syms xfor i=1:n-1 g=g*(x-A(1,i)); f=f+B(i,i+1)*g; %求牛顿插值多项式enddisp(‘牛顿插值法可得多项式:’)fdisp(‘牛顿插值法得到的多项式合并同类项为:’)collect(f) %newton[1 3 6 8;4 6 9 12]例子: 有如下表格中有四个插值点及其对应的函数值,用牛顿插值法写出其三次插值多项式:136846912解:在MATLAB命令窗口输入:newton([1 3 6 8;4 6 9 12])可得如下运行结果如图:通过比较对同一题目的运算可知:拉格朗日插值法与牛顿插值法所得的插值多项式是一致的!

文档评论(0)

sa1fs5g1xc1I + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档