MATLAB多项式及多项式拟合
多项式均表示为数组形式,数组元素为多项式降幂系数
1. polyval函数
求多项式在某一点或某几个点的值.
p = [1,1,1];%x^2+x+1
x = [-1,0,1];y = polyval(p,x);
另外求函数在某一点或某几个点的值可以用函数feval.
x = [-1,0,1];
y = feval(@(x)exp(x),x);%注意用的乘法和乘法都改用.运算符
2. roots函数
求多项式的零点.
p = [1,-3,2,0];x0 = roots(p);
3. polyfit函数
用多项式拟合一组数据,返回多项式降幂系数.
xa = [0.1 0.2 0.15 0 -0.2 0.3];ya = [0.950.84 0.86 1.06 1.50 0.72];p = polyfit(xa,ya,3);
上述代码是对xa和ya进行2次多项式拟合.
如何找到最佳的拟合次数?
定义误差,以不同的多项式次数进行拟合,并求出对应的误差,找到误差最小的拟合即可.如下是对数组xa和ya进行拟合的代码,尝试了多项式拟合的次数分别为1~4(拟合次数太高可能出现龙格现象).
xa = [0.1 0.2 0.15 0 -0.2 0.3 -0.1 ];
ya = [0.95 0.84 0.86 1.06 1.50 0.72 1.0];
plot(xa,ya,'r*');
hold on;
err0 = 9999999;
syms x;
for k=1:4
p = polyfit(xa,ya,k);
y = 0;
for i=1:k+1
y = y + p(i) * x^(k-i+1);
end
xb = min(xa):0.01:max(xa);
yb = subs(y,x,xb);
plot(xb,yb);
hold on;
new_ya = subs(y,x,xa);
n = length(xa);
errk = 0;
errk = errk + sum(abs(new_ya-ya));
if errk < err0
err0 = errk;
remember = k;
end
end
pause;
hold off;
plot(xa,ya,'r*');
hold on;
p = polyfit(xa,ya,remember);
y = 0;
for i=1:k+1
y = y + p(i) * x^(k-i+1);
end
vpa(y,4)
xb = min(xa):0.01:max(xa);
yb = subs(y,x,xb);
plot(xb,yb);
在命令窗口或保存为m脚本文件运行上述代码,会看到一个图形出现,是次数分别为1~4的拟合效果图,按任意键,会看到最佳拟合的效果图.
MATLAB多项式及多项式拟合的更多相关文章
- MATLAB中的多项式运算
作者:长沙理工大学 交通运输工程学院 王航臣 1.多项式求根 在MATLAB中求取多项式的根用roots函数. 函数:roots 功能:一元高次方程求解. 语法:roots(c) 说明:返回一个列向量 ...
- 【Cogs2187】帕秋莉的超级多项式(多项式运算)
[Cogs2187]帕秋莉的超级多项式(多项式运算) 题面 Cogs 题解 多项式运算模板题 只提供代码了.. #include<iostream> #include<cstdio& ...
- MATLAB之数据处理+公式拟合
MATLAB之数据处理+公式拟合 前言:由试验得到一组数据,对该组数据进行处理,作图分析,分析各变量的关系,期望得到拟合公式. 试验数据背景 本次试验有三个自变量:V.M.G,因变量为F,每组试验重复 ...
- 多项式总结&多项式板子
多项式总结&多项式板子 三角/反三角是不可能放的(也不可能真香的 多项式乘法(DFT,FFT,NTT,MTT) 背板子 前置知识:泰勒展开 如果\(f(x)\)在\(x_0\)处存在\(n\) ...
- MATLAB用“fitgmdist”函数拟合高斯混合模型(一维数据)
MATLAB用“fitgmdist”函数拟合高斯混合模型(一维数据) 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 在MATLAB中“fitgmdis ...
- MATLAB实例:多元函数拟合(线性与非线性)
MATLAB实例:多元函数拟合(线性与非线性) 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 更多请看:随笔分类 - MATLAB作图 之前写过一篇博 ...
- MATLAB学习笔记(六)——MATLAB数据分析与多项式计算
(一)数据处理统计 一.最大值和最小值 1.求向量的最大值和最小值 y=max(X); %返回向量X的最大值存入y,如果X中含有复数则按模最大的存入y [y,I]=max(X);%返回向量X的最大值存 ...
- matlab中的多项式计算
在做多项式加法的时候需要做多项式扩展.这里将g1扩展到与f等长 多项式的乘积,是两个多项式之和减1, 多项式求导函数:ployder() 先建立两个多项式,再求a的导函数 在计算两个多项式乘积的导函数 ...
- MATLAB实现插值和拟合
插值问题在应用领域中,由有限个已知数据点,构造一个解析表达式,由此计算数据点之间的函数值,称之为插值.实例:海底探测问题某公司用声纳对海底进行测试,在5×5海里的坐标点上测得海底深度的值,希望通过这些 ...
随机推荐
- const在c/c++中的区别
#include <iostream> using namespace std; int main() { ; ; }; ; i < sizeof array / sizeof *a ...
- java05笔记
- LevelDB速记
LevelDb的基本结构如下: 由六大部分组成: 一.MemTable,用户写入和读取的直接对象, 二.Immutable MemTable,用户状态写入的对象写满的MemTable之后会转为Immu ...
- 《深入浅出 Java Concurrency》—并发容器 ConcurrentMap
(转自:http://blog.csdn.net/fg2006/article/details/6404226) 在JDK 1.4以下只有Vector和Hashtable是线程安全的集合(也称并发容器 ...
- SSH整合主要XML代码
web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version="2 ...
- hdu 1575 Tr A (二分矩阵)
Tr A Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- 【BZOJ 3772】精神污染 主席树+欧拉序
这道题的内存…………………真·精神污染……….. 这道题的思路很明了,我们就是要找每一个路径包含了多少其他路径那么就是找,有多少路径的左右端点都在这条路径上,对于每一条路径,我们随便选定一个端点作为第 ...
- 你对javascript的原生操作或者工具了解多少呢?
1.有一个长度未知的数组a,如果它的长度为0就把数字1添加到数组里面,否则按照先进先出的队列规则让第一个元素出队. 分析:这道题主要是考核了数组的队列方法和栈方法.另外,原题还有字数限制的,只有在字数 ...
- mysql之蠕虫复制
蠕虫复制 蠕虫复制:从已有的数据表中获取数据,然后将数据进行新增操作,数据成倍(以指数形式)的增加. 根据已有表创建新表,即复制表结构,其基本语法为: create table + 表名 + like ...
- Optimize Prime Sieve
/// A heavily optimized sieve #include <cstdio> #include <cstring> #include <algorith ...