多项式均表示为数组形式,数组元素为多项式降幂系数

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多项式及多项式拟合的更多相关文章

  1. MATLAB中的多项式运算

    作者:长沙理工大学 交通运输工程学院 王航臣 1.多项式求根 在MATLAB中求取多项式的根用roots函数. 函数:roots 功能:一元高次方程求解. 语法:roots(c) 说明:返回一个列向量 ...

  2. 【Cogs2187】帕秋莉的超级多项式(多项式运算)

    [Cogs2187]帕秋莉的超级多项式(多项式运算) 题面 Cogs 题解 多项式运算模板题 只提供代码了.. #include<iostream> #include<cstdio& ...

  3. MATLAB之数据处理+公式拟合

    MATLAB之数据处理+公式拟合 前言:由试验得到一组数据,对该组数据进行处理,作图分析,分析各变量的关系,期望得到拟合公式. 试验数据背景 本次试验有三个自变量:V.M.G,因变量为F,每组试验重复 ...

  4. 多项式总结&多项式板子

    多项式总结&多项式板子 三角/反三角是不可能放的(也不可能真香的 多项式乘法(DFT,FFT,NTT,MTT) 背板子 前置知识:泰勒展开 如果\(f(x)\)在\(x_0\)处存在\(n\) ...

  5. MATLAB用“fitgmdist”函数拟合高斯混合模型(一维数据)

    MATLAB用“fitgmdist”函数拟合高斯混合模型(一维数据) 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 在MATLAB中“fitgmdis ...

  6. MATLAB实例:多元函数拟合(线性与非线性)

    MATLAB实例:多元函数拟合(线性与非线性) 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 更多请看:随笔分类 - MATLAB作图 之前写过一篇博 ...

  7. MATLAB学习笔记(六)——MATLAB数据分析与多项式计算

    (一)数据处理统计 一.最大值和最小值 1.求向量的最大值和最小值 y=max(X); %返回向量X的最大值存入y,如果X中含有复数则按模最大的存入y [y,I]=max(X);%返回向量X的最大值存 ...

  8. matlab中的多项式计算

    在做多项式加法的时候需要做多项式扩展.这里将g1扩展到与f等长 多项式的乘积,是两个多项式之和减1, 多项式求导函数:ployder() 先建立两个多项式,再求a的导函数 在计算两个多项式乘积的导函数 ...

  9. MATLAB实现插值和拟合

    插值问题在应用领域中,由有限个已知数据点,构造一个解析表达式,由此计算数据点之间的函数值,称之为插值.实例:海底探测问题某公司用声纳对海底进行测试,在5×5海里的坐标点上测得海底深度的值,希望通过这些 ...

随机推荐

  1. const在c/c++中的区别

    #include <iostream> using namespace std; int main() { ; ; }; ; i < sizeof array / sizeof *a ...

  2. java05笔记

  3. LevelDB速记

    LevelDb的基本结构如下: 由六大部分组成: 一.MemTable,用户写入和读取的直接对象, 二.Immutable MemTable,用户状态写入的对象写满的MemTable之后会转为Immu ...

  4. 《深入浅出 Java Concurrency》—并发容器 ConcurrentMap

    (转自:http://blog.csdn.net/fg2006/article/details/6404226) 在JDK 1.4以下只有Vector和Hashtable是线程安全的集合(也称并发容器 ...

  5. SSH整合主要XML代码

    web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version="2 ...

  6. hdu 1575 Tr A (二分矩阵)

    Tr A Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  7. 【BZOJ 3772】精神污染 主席树+欧拉序

    这道题的内存…………………真·精神污染……….. 这道题的思路很明了,我们就是要找每一个路径包含了多少其他路径那么就是找,有多少路径的左右端点都在这条路径上,对于每一条路径,我们随便选定一个端点作为第 ...

  8. 你对javascript的原生操作或者工具了解多少呢?

    1.有一个长度未知的数组a,如果它的长度为0就把数字1添加到数组里面,否则按照先进先出的队列规则让第一个元素出队. 分析:这道题主要是考核了数组的队列方法和栈方法.另外,原题还有字数限制的,只有在字数 ...

  9. mysql之蠕虫复制

    蠕虫复制 蠕虫复制:从已有的数据表中获取数据,然后将数据进行新增操作,数据成倍(以指数形式)的增加. 根据已有表创建新表,即复制表结构,其基本语法为: create table + 表名 + like ...

  10. Optimize Prime Sieve

    /// A heavily optimized sieve #include <cstdio> #include <cstring> #include <algorith ...