实验目的:

1.Matlab中多项式的表示及多项式运算

2.用Matlab实现拉格朗日及牛顿插值法

3.用多项式插值法拟合数据

实验要求:

1.掌握多项式的表示和运算

2.拉格朗日插值法的实现(参见吕同富版教材)

3.牛顿插值法的实现(参见吕同富版教材)

实验内容:

1.多项式的表达式和创建;多项式的四则运算、导数与积分。

2.用Matlab实现拉格朗日及牛顿插值法。

3.用多项式插值法拟合数据。

实验步骤:

1.多项式的表达式,MATLAB中使用以为向量来表示多项式,将多项式的系数按照降幂次序存放在向量中。多项式P(x)的具体表示方法:

的系数构成向量为:

。示例如下:

将向量表示的多项式用字符串输出的通用函数示例:

例子

运行示例:

多项式的加法:

结果是

多项式乘法:

结果是

多项式除法:

多项式导数:

2.用Matlab实现拉格朗日,拉格朗日代码:

1 function yi=Lagrange(x,y,xi)2 m=length(x);n=length(y);p=length(xi);3 if m~=n4 error(‘向量x与y的长度必须一致‘);5 end6 s=0;7 for k=1:n8 t=ones(1,p);9 for j=1:n10 if j~=k11 t=t.*(xi-x(j))./(x(k)-x(j));12 end13 end14 s=s+t.*y(k);15 end16 yi=s;17 end

Lagrange

运行示例:

牛顿插值法代码:

1 function yi=newtonint(x,y,xi)2 m=length(x);n=length(y);3 if m~=n4 error(‘向量x与y的长度必须一致‘);5 end6 A=zeros(n);7 A(:,1)=y;8 for j=2:n%j为列标9 for i=1:(n-j+1) %i为行标10 A(i,j)=(A(i+1,j-1)-A(i,j-1))/(x(i+j-1)-x(i));%计算差商表11 end12 end13 %根据差商表,求对应的牛顿插值多项式在x=xi处的值yi14 N(1)=A(1,1);15 for j=2:n16 T=1;17 for i=1:j-1

18 T=T*(xi-x(i));19 end20 N(j)=A(1,j)*T;21 end22 yi=sum(N); %将x=xi带入牛顿插值多项式,得到的yi的值23 %A 输出差商表24 end

newtonint

运行实例:

等距节点的牛顿向后插值代码:

1 function yi=newtonint1(x,y,xi)2 h=x(2)-x(1);t=(xi-x(1))/h;3 n=length(y);Y=zeros(n);Y(:,1)=y‘;

4 for k=1:n-1

5 Y(:,k+1)=[diff(y‘,k);zeros(k,1)];

6 end7 yi=Y(1,1);8 for i=1:n-1

9 z=t;10 for k=1:i-1

11 z=z*(t-k);12 end13 yi=yi+Y(1,i+1)*z/prod([1:i]);14 end

newtonint1

运行实例:

等距节点的牛顿向前插值代码:

1 function yi=newtonint2(x,y,xi)2 n=length(x);h=x(n)-x(n-1);t=(x(n)-xi)/h;3 n=length(y);Y=zeros(n);Y(:,1)=y‘;

4 for k=1:n-1

5 Y(:,k+1)=[zeros(k,1);diff(y‘,k)];

6 end7 h=x(n)-x(n-1);t=(x(n)-xi)/h;yi=Y(n,1);8 for i=1:n-1

9 z=t;10 for k=1:i-1

11 z=z*(t-k);12 end13 yi=yi+Y(n,i+1)*(-1)^i*z/prod([1:i]);14 end

newtonint2

运行示例:

3.使用4次牛顿插值多项式插值,并作图:

解:由4次牛顿插值多项式,

求上述多项式的系数:(修改newtonint.m代码,得到差商表),代码如下:

1 function B=newtonint4(x,y)2 m=length(x);n=length(y);3 if m~=n4 error(‘向量x与y的长度必须一致‘);5 end6 A=zeros(n);7 A(:,1)=y;8 for j=2:n%j为列标9 for i=1:(n-j+1) %i为行标10 A(i,j)=(A(i+1,j-1)-A(i,j-1))/(x(i+j-1)-x(i));%计算差商表11 end12 end13 B=A;14 end

newtonint4

代入数据得到差商表:

0.98

-0.3

-0.625

-0.2083

-0.5208

0.92

-0.55

-0.75

-0.625

0

0.81

-0.85

-1.125

0

0

0.64

-1.3

0

0

0

0.38

0

0

0

0

已知,第一行的便是插值多项式的系数,代入插值多项式:

并作出图像:

1 x0=[0.2 0.4 0.6 0.8 1.0];2 y0=[0.98 0.92 0.81 0.64 0.38];3 plot(x0,y0,‘b-o‘)4 hold on5 k=0:1:10;6 x=0.2+0.08*k;7 for i=1:1:11

8 y(i)=0.98-0.3*(x(i)-0.2)-0.625*(x(i)-0.2)*(x(i)-0.4)-0.2083333*(x(i)-0.2)*(x(i)-0.4)*(x(i)-0.6)-0.520833333*(x(i)-0.2)*(x(i)-0.4)*(x(i)-0.6)*(x(i)-0.8);9 end10 plot(x,y,‘r-o‘);11 legend(‘原图像‘,‘4次插值图像‘);

plot3

小结:

在编写牛顿插值的代码时,我遇到了超出元组索引的问题。我在MATLAB的提示下(它的提示是英语),如图:

这个f是使用迭代来求差商的,但是出现了问题。我根据它的提示创建了一个全零数组用于存储运算得到的差商,在某种程度上解决了这个问题。

在解决第3题时,我特意编写了一个算差商的程序和一个4次牛顿插值多项式代入数据画图的程序。差商的程序是修改第2题的牛顿插值程序得到的,这在一定程度上说明,一个程序的功能是可以分开的同时也可以写在一起的。但在写4次多项式代入画图的程序时,并没有参考的我,只能回看书本关于4次牛顿插值的知识,我得到了这个牛顿插值多项式的公式,并发现它的关键就是每一项的系数,而那些系数就是算得的差商,所以,很快,我就写出了4次多项式代入画图的程序。很开心的是,算得的多项式拟合得很好。

原文:https://www.cnblogs.com/jianle23/p/12817734.html

matlab用插值法plot,Matlab插值法相关推荐

  1. 拉格朗日插值法matlab上机,拉格朗日插值法使用MATLAB做的例题

    <拉格朗日插值法使用MATLAB做的例题>由会员分享,可在线阅读,更多相关<拉格朗日插值法使用MATLAB做的例题(2页珍藏版)>请在人人文库网上搜索. 1.一物体廓线数据如下 ...

  2. 牛顿(Newton)插值法的Matlab实现

    牛顿(Newton)插值法的Matlab实现 算法 程序 运行 对已知点计算 手算例题 本篇为Newton插值法,构造插值多项式 拉格朗日(Lagrange)插值法链接如下: 链接: Lagrange ...

  3. 牛顿法的matlab实现例题,【MATLAB|MATLAB牛顿插值法例题与程序Word版】

    『易坊知识库摘要_MATLAB|MATLAB牛顿插值法例题与程序Word版』x12345678y22.523.324.421.7025.228.524.825.4二.数学原理假设有n+1个不同的节点及 ...

  4. matlab作动态函数曲线图,[转载]Matlab中使用Plot函数动态画图方法总结

    本帖最后由 sonictl 于 2012-12-31 12:18 编辑 请删除我 清楚超靠靠靠 没办法,一会儿限制这不能发表,那不能发表的.... [转载]Matlab中使用Plot函数动态画图方法总 ...

  5. matlab图形编辑,matlab绘制图形plot属性编辑

    matlab绘制图形plot属性编辑 matlab绘制图形plot属性编辑 使用plot绘制图形函数,设置其中的图形参数,包含线条颜色,粗细,线条类型. x=1:15; y=x.^3; 方法一 是在p ...

  6. matlab绘图函数plot调整显示参数

    matlab绘图函数plot调整显示参数 Matlab中,plot绘图的曲线线宽.标记点大小.标记点边框颜色和填充颜色的设置 1.LineWidth:用于设置线宽,其后选项为数值,如0.5,1,2.5 ...

  7. matlab中的plot的用法

    文章目录 画单个带点的黑色实线: 在一张图片里绘制多副可以使用subplot命令: 标题使用title()命令 图片叠加 hold on,box on;用法 matlab中的plot的用法 画单个带点 ...

  8. matlab 二维曲面插值,Matlab曲面拟合和插值

    Matlab曲面拟合和插值 Matlab曲面拟合和插值 Matlab曲面拟合和插值2010-06-02 13:21插值和拟合都是数据优化的一种方法,当实验数据不够多时经常需要用到这种方法来画图.在ma ...

  9. 阿当姆斯matlab,数值计算方法与MATLAB应用

    第1篇 数值计算的基本方法和概念 第1章 算法与误差 1.1 算法 1.2 误差 第2章 方程求解 2.1 引言 2.2 二分法 2.3 迭代法 2.4 牛顿法 2.5 弦截法 2.6 解非线性方程组 ...

  10. 艾特肯法方程解matlab程序,牛顿迭代法matlab代码

    牛顿法 迭代公式: x(k1) xk [2 f (x(k) )]1f (x(k) ) Matlab 代码: function [x1,k] =newton(x1,eps) hs=inline('(x ...

最新文章

  1. Spark源码分析之七:Task运行(一)
  2. 计算公式1!+2!+3!+...+10!的和
  3. Service rootservice does not have a SELinux domain defined
  4. 网线制作ppt_快速制作PPT技巧!
  5. 区块链——据说现在这玩意很火?
  6. 前端工程师的进阶之路
  7. 查找——顺序、二分法、斐波那契、插值、分块
  8. 第二季-专题20-移植bootm命令启动内核
  9. JAVA 获取系统环境变量
  10. 世界七大数学难题与Hilbert的23个问题
  11. 《无痛苦N-S方程笔记》第二章知识点框架
  12. Linux gd库安装步骤说明
  13. 小程序列表倒计时使用wxs实现
  14. 5大输入法突然下架!得知真相的网友懵了:我都用了10年了……
  15. Hibernate ORM - 一对多双向关联关系(我是韦小宝)
  16. ADC基本原理与STM32F030ADC应用
  17. 基于android的检测心率,基于Android系统的心率信息监测软件的研究与实现
  18. 黑马程序员——java基础---网络编程
  19. python处理xml文件_Python处理XML之DOM解析
  20. win本地安装xxl-job服务

热门文章

  1. 车站计算机系统sc英文,【地铁小百科】自动售检票系统概述
  2. 360os比android,手机系统比拼360OS、Flyme究竟哪个好?
  3. Flutter 长截屏适配 Miui 系统,一点都不难
  4. Axure RP安装破解汉化以及发布到至AxureShare
  5. 高通工具QXDM、QCAT和QPST的使用
  6. java论文范文模板_Java专业论文开题报告 论文的开题报告模板
  7. 网站部署——基于Django框架的天天生鲜电商网站项目系列博客(十六)
  8. 【Redis】client客户端 工具 redis-cli
  9. 软考 | 软考高项论文该如何去写?
  10. ubuntu 黑体_linux ubuntu 思源黑体安装