matlab用插值法plot,Matlab插值法
实验目的:
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插值法相关推荐
- 拉格朗日插值法matlab上机,拉格朗日插值法使用MATLAB做的例题
<拉格朗日插值法使用MATLAB做的例题>由会员分享,可在线阅读,更多相关<拉格朗日插值法使用MATLAB做的例题(2页珍藏版)>请在人人文库网上搜索. 1.一物体廓线数据如下 ...
- 牛顿(Newton)插值法的Matlab实现
牛顿(Newton)插值法的Matlab实现 算法 程序 运行 对已知点计算 手算例题 本篇为Newton插值法,构造插值多项式 拉格朗日(Lagrange)插值法链接如下: 链接: Lagrange ...
- 牛顿法的matlab实现例题,【MATLAB|MATLAB牛顿插值法例题与程序Word版】
『易坊知识库摘要_MATLAB|MATLAB牛顿插值法例题与程序Word版』x12345678y22.523.324.421.7025.228.524.825.4二.数学原理假设有n+1个不同的节点及 ...
- matlab作动态函数曲线图,[转载]Matlab中使用Plot函数动态画图方法总结
本帖最后由 sonictl 于 2012-12-31 12:18 编辑 请删除我 清楚超靠靠靠 没办法,一会儿限制这不能发表,那不能发表的.... [转载]Matlab中使用Plot函数动态画图方法总 ...
- matlab图形编辑,matlab绘制图形plot属性编辑
matlab绘制图形plot属性编辑 matlab绘制图形plot属性编辑 使用plot绘制图形函数,设置其中的图形参数,包含线条颜色,粗细,线条类型. x=1:15; y=x.^3; 方法一 是在p ...
- matlab绘图函数plot调整显示参数
matlab绘图函数plot调整显示参数 Matlab中,plot绘图的曲线线宽.标记点大小.标记点边框颜色和填充颜色的设置 1.LineWidth:用于设置线宽,其后选项为数值,如0.5,1,2.5 ...
- matlab中的plot的用法
文章目录 画单个带点的黑色实线: 在一张图片里绘制多副可以使用subplot命令: 标题使用title()命令 图片叠加 hold on,box on;用法 matlab中的plot的用法 画单个带点 ...
- matlab 二维曲面插值,Matlab曲面拟合和插值
Matlab曲面拟合和插值 Matlab曲面拟合和插值 Matlab曲面拟合和插值2010-06-02 13:21插值和拟合都是数据优化的一种方法,当实验数据不够多时经常需要用到这种方法来画图.在ma ...
- 阿当姆斯matlab,数值计算方法与MATLAB应用
第1篇 数值计算的基本方法和概念 第1章 算法与误差 1.1 算法 1.2 误差 第2章 方程求解 2.1 引言 2.2 二分法 2.3 迭代法 2.4 牛顿法 2.5 弦截法 2.6 解非线性方程组 ...
- 艾特肯法方程解matlab程序,牛顿迭代法matlab代码
牛顿法 迭代公式: x(k1) xk [2 f (x(k) )]1f (x(k) ) Matlab 代码: function [x1,k] =newton(x1,eps) hs=inline('(x ...
最新文章
- Spark源码分析之七:Task运行(一)
- 计算公式1!+2!+3!+...+10!的和
- Service rootservice does not have a SELinux domain defined
- 网线制作ppt_快速制作PPT技巧!
- 区块链——据说现在这玩意很火?
- 前端工程师的进阶之路
- 查找——顺序、二分法、斐波那契、插值、分块
- 第二季-专题20-移植bootm命令启动内核
- JAVA 获取系统环境变量
- 世界七大数学难题与Hilbert的23个问题
- 《无痛苦N-S方程笔记》第二章知识点框架
- Linux gd库安装步骤说明
- 小程序列表倒计时使用wxs实现
- 5大输入法突然下架!得知真相的网友懵了:我都用了10年了……
- Hibernate ORM - 一对多双向关联关系(我是韦小宝)
- ADC基本原理与STM32F030ADC应用
- 基于android的检测心率,基于Android系统的心率信息监测软件的研究与实现
- 黑马程序员——java基础---网络编程
- python处理xml文件_Python处理XML之DOM解析
- win本地安装xxl-job服务
热门文章
- 车站计算机系统sc英文,【地铁小百科】自动售检票系统概述
- 360os比android,手机系统比拼360OS、Flyme究竟哪个好?
- Flutter 长截屏适配 Miui 系统,一点都不难
- Axure RP安装破解汉化以及发布到至AxureShare
- 高通工具QXDM、QCAT和QPST的使用
- java论文范文模板_Java专业论文开题报告 论文的开题报告模板
- 网站部署——基于Django框架的天天生鲜电商网站项目系列博客(十六)
- 【Redis】client客户端 工具 redis-cli
- 软考 | 软考高项论文该如何去写?
- ubuntu 黑体_linux ubuntu 思源黑体安装