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海里的坐标点上测得海底深度的值,希望通过这些 ...
随机推荐
- htm,html,xhtml,xml,xsl,dhtml,shtm和shtml的区分
介绍一下htm,html,xhtml,xml,shtml的区分,以下内容来自百度后的知识整理. HTML和htm: HTML(Hypertext Markup Language)超文本传输语言,是ww ...
- MYSQL 服务无法启动,错误日志:InnoDB: .\ibdata1 must be writable
这几天安装MYSQL 5.7版本的时候,出现了服务无法启动的问题,尝试了各种修改配置文件my.ini的方法都不行,查看到错误日志,一般错误日志在C:\Program Files\MySQL\MySQL ...
- IPad Pro 2018 & sketch
IPad Pro 2018 & sketch https://sketch.cloud/s/MyY5w/LJmLgW
- BZOJ1875: [SDOI2009]HH去散步 图上边矩乘
这道题十分的坑…… 我作为一只连矩乘都不太会的渣渣看到这道题就只能神搜了….. 首先说一下普通的矩乘求方案,就是高出邻接矩阵然后一顿快速幂….. 矩乘一般就是一些秘制递推….. 再说一下这道题,我们可 ...
- HttpClient测试类请求端和服务端即可能出现乱码的解决
junit HttpClient 请求端 代码: package com.taotao.httpclient; import java.util.ArrayList; import java.util ...
- innodb_force_recovery
Warning Before using innodb_force_recovery ensure that you have a backup copy of your database in ca ...
- codeforces 799C Fountains
C. Fountains time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
- 转:A Painless Q-learning Tutorial (一个 Q-learning 算法的简明教程)
demo 参见 MDP DEMO 本文是对 http://mnemstudio.org/path-finding-q-learning-tutorial.htm 的翻译,共分两部分,第一部分为中文 ...
- Spring - IoC(8): 基于 Annotation 的配置
除了基于 XML 的配置外,Spring 也支持基于 Annotation 的配置.Spring 提供以下介个 Annotation 来标注 Spring Bean: @Component:标注一个普 ...
- noip2013 提高组
T1 转圈游戏 题目传送门 果不其然 第一题还是模拟题 一波快速幂解决问题 #include<cstdio> #include<cstring> #include<alg ...