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

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. Elicpse新建userLibrary导入jar包时抛出NotFoundException异常

    最近刚开始学Struts2.0框架.再导入jar包的时候突然心血来潮.为方便区分jar包的功能,于是想在WEB-INF -> lib 目录下想新建一个struts文件夹,以方便分类查看. 像上图 ...

  2. 微信公众号开发java框架:wx4j(MaterialUtils篇)

    wx4j-MaterialUtils的使用 函数说明:上传永久视频素材 参数:文件路径.视频描述(通过setter填充内容即可) 返回值:微信服务器返回的json字符串 public static S ...

  3. akka与slf4j导致jvm直接crash的诡异

    流程很简单,创建actorSystem,通过actorSystem获取AkkaQueryServiceRetriever,进而通过传递path获得的Gateway进行通信. 之前在主项目里跑的很稳定, ...

  4. BZOJ1975 SDOI2010魔法猪学院(启发式搜索+最短路+堆)

    对反图跑最短路求出每个点到终点的最短路径,令其为估价函数大力A*,第k次到达某个点即是找到了到达该点的非严格第k短路,因为估价函数总是不大于实际值.bzoj可能需要手写堆.正解是可持久化可并堆,至今是 ...

  5. BZOJ4690 Never Wait for Weights(并查集)

    带权并查集按秩合并即可维护. #include<iostream> #include<cstdio> #include<cmath> #include<cst ...

  6. [洛谷P2711]小行星

    题目大意:有$n$颗行星,每颗行星的位置是$(x,y,z)$.每次可以消除一个面(即$x,y$或$z$坐标相等)的行星,求消除这些行星的最少次数. 题解:最小割,对于每一颗小行星,从 x 面的出点向  ...

  7. linux管理(二)---网络使用情况的监控

    我们经常在监控服务器或者排查程序性能瓶颈时需要知道  网络带宽的使用情况,看看带宽是不是瓶颈. linux系统中监控网络的工具和命令很多. 但其实主要分2种,一种是实时监控带宽情况(速度如何),一种是 ...

  8. 解决Vue方法中setTimeout改变变量的值无效

    把data里的变量继承过来重新封装一下 let that = this; this.rightAnswer = false; setTimeout(function() { that.rightAns ...

  9. SQLMap的前世今生(Part1)

    http://www.freebuf.com/sectool/77948.html 一.前言 谈到SQL注入,第一时间就会想到神器SQLMAP,SQLMap是一款用来检测与利用的SQL注入开源工具.那 ...

  10. remove computer from join with powershell

    Removes the local computer from its domain. Remove-Computer [-UnjoinDomainCredential] <PSCredenti ...