Matlab中插值,拟合,多项式,极限
前言
在做一些数据处理的时候,经常使用一些数学工具,对于这些数学工具的定义一定要严谨。
数据的拟合:最小二乘法,表示大致的情况。
数据的插值:一定要过数据点
数据三条样方插值:把线分为若干个片段,每一段用三次多项式表示
多项式:代表数据点的公式,项数越多,次数越大,函数线越曲折,插值数据点越精确。
数据的拟合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | clc; clear all; x=[0.2 0.3 0.5 0.6 0.8 0.9 1.2 1.3 1.5 1.8]; y=[1 2 3 5 6 7 6 5 4 1]; p5=ployfit(x,y,5); %5阶多项式拟合 y5=ployval(p5,x); %拟合完成得到的系数 p5=vpa(poly2sym(y5),5); %显示5阶多项式 p9=ployfit(x,y,9); %9阶多项式拟合 y9=polyval(p9,x); %改变函数值后得到的新y9值 figure; %画图显示 plot(x,y, 'bo' ); %图上的第一根线 hold on; plot(x,y5, 'r:' ); %图上的第二根线,以红色线表示 plot(x,y9, 'g--' ); %图上的第三根线,以绿色线表示 legend( '原始数据' , '5阶多项式拟合' , '9阶多项式拟合' ); xlabel( 'x' ); ylabel( 'y' ); |
另一种拟合的方法
1 2 3 4 5 6 | %先把x,y显示出来 x=[0.2 0.3 ... 1.5 1.8]; y=[1 2 ... 4 1]; figure ; plot (x,y, 'bo' ); %再在图像界面 工具-----基本拟合-------(右下角,显示拟合后的多项式) |
多项式
多项式:将多项式的系数按照降幂次序存放在向量中。
1 2 3 4 | clc ; clear all ; p1=[4 3 2 1]; y=poly3sym(p1); %由向量创建多项式,并显示 |
结果是
逆运算,已知根求多项式:
1 2 3 4 | clc ; clear all ; p= poly (r); %由多项式的根创建多项式 y=poly2sym(p); %显示多项式 |
1 2 3 4 | clc ; p=[1 -1 -6]; %多项式的系数向量 x=2:1:5; y= polyval (p,x); %多项式在x处的值 |
多项式的求值:已知x,求y值
1 2 | polyval () %以矩阵中的元素为计算单位 polyvalm () %以矩阵为计算单位 |
多项式的求根: 当y=0时,求x的值
1 | roots (p) %参数p为多项式系数 |
多项式相乘
1 | c= conv (a,b) |
多项式的积分
1 | y1= polyint (p1,3); %对多项式p1求积分,常数项为3 |
数据的插值
一维多项式插值用
1 | interp1 () |
二维插值(用于图像处理)
1 2 3 | zi= interp2 (x,y,z,xi,yi) %先是根据x,y,z产生插值函数,F=f(x,y) %再次把xi,yi输入f(x,y)得到zi |
三次样条插值,用spline()
1 2 3 4 | yi= spline (x,y,xi) %这一步也可以拆分为两步 pp= spline (x,y); yi= ppval (xi); %ppval()对数据xi进行插值计算 |
函数(多项式)的极限
1 2 3 4 | y=limit(f); %当x趋向于0时,f的值 y=limit(f,x,a); %等同于y=limit(f,a);当x趋向于a时,f的值 y=limit(f,x,a, 'left' ); %左极限 y=limit(f,x,a, 'right' ); %右极限 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话