matlab的应用-多项式函数及多项式拟合
Matlab 的应用- 多项式函数及多项式拟合 本节将向大家简要介绍 matlab 在多项式处理方面的应用。 多项式函数主要有: roots 求多项式的根 poly 特征多项式 polyval 多 项式的计算 poly2str(p, x )多项式代换 polyfit 多项式曲线拟合 conv 多项式乘法 deconv 多项式除法 polyder 微分多项式 下面我们将介绍这些函数的用法: 1,roots---求多项式的根 格式:roots(c) 说明:它表示计算一个多项式的根,此多项式系数是向量 c 的元素.如果 c 有 n+1 个元素,那么此多项式为: c(1)*x^n+c(2)*x^(n-1)+c(3)*x^(n-2)+--+c(n)*x+c(n+1) 2,poly---特征多项式 格式:poly(a) 说明:(1)如果 a 是一个 n 阶矩阵,poly(a) 是一个有 n+1 个元素的行向量,这 n+1 个 元素是特征多项式的系数(降幂排列). (2)如果 a 是一个 n 维向量,则 poly(a)是多项式(x-a(1))*(x-a(2))*(x-a(n)),即该多 项式以向量 a 的元素为根。 3,polyval—多项式计算 格式:polyval(v,s) 说明: 如果 v 是一个向量,它的元素是一个多项式的系数,那麽 polyval(v,s)是多项式在 s 处的值.如果 s 是一个矩阵或是一个向量,则多项式在 s 中所有元素上求值 例如: v=[1 2 3 4];vv=poly2str(v,’s’) (即 v=s^3+2*s^2+3*s+4) s=2; x=polyval(v,s) x =26 例如: v=[1 2 3 4]; s=[2 4]; polyval(v,s) ans=26 112 4,conv-多项式乘法 例:as=[1 2 3] as =1 2 3 >> az=[2 4 2 1] az =2 4 2 1 >> conv(as,az) ans =2 8 16 17 8 3 conv(az,as) ans =2 8 16 17 8 3 5,deconv- 多项式除法 例:deconv(az,as)%返回结果是商式的系数 ans = 2 0 [awwq,qw]=deconv(az,as)%awwq 是商式的系数,qw 是余式的系数 awwq =2 0 qw =0 0 -4 1 6,polyder 微分多项式 polyder(as) ans =2 2 7,polyfit-- 多项式曲线拟合 格式::polyfit(x,y,n) 说明:polyfit(x,y,n)是找 n 次多项式 p(x) 的系数,这些系数 满足在最小二乘法意义 下 p(x(i)) ~= y(i). “人口问题”是我国最大社会 问题之一,估计人口数量和发展趋势是我们制定一系 列相关政策的基础。有人口统计年鉴,可 查到我国从 1949 年至 1994 年人口数据 资料如下: 年份 1949 1954 1959 1964 1969 1974 1979 1984 1989 1994 人口 数 (百万) 541. 67 602.6 6 672.0 9 704.9 9 806.7 1 908.5 9 975.4 2 1034. 75 1106. 76 1176. 74 如何确定我国人口的发展变化规律呢? 一般地,我们采用下面的分析处理方法: 首先,在直角坐标系上作出人口数与年份的散点图象。观察随着年份的增加人口 数与年份变化关系,初步估计出他们之间的关系可近似地可看做一条直线。那么 我们如何把这条直线方程确定出来呢?并用他来估计 1999 年我国的人口数。方法一:先选择能反映直线变化的两个点,如(1949,541.67), (1984,1034.75)二 点确定一条直线,方程为 N = 14.088 t – 26915.842 ,代入 t =1999,得 N 12.46 亿 方法二:可以多取几组点对,确定几条直线方程,将 t = 1999 代入,分 别求出人口 数,在取其算数平值。 方法三:可采用“ 最小二乘法” 求出直线方程。 这就是曲线拟合的问题。 方法一与方法二都具有一定的局限性,下面我们重点介绍数据的曲线拟合。所谓 曲线拟合是指给定平面上的 n 个点(x i ,y i ),i=1,2,….,n,找出一条曲线使之与这些点 相当吻合,这个过程称之为曲线拟合。最常 见的曲线拟合是使用多项式来作拟合 曲线。曲线拟合最常用的方法是最小二乘法。其原理是求 f(x),使 达到最小。matlab 提供了基本的多项式曲线拟合函数命令 2 1 ] ) ( [ i n i i y x f polyfit 格式::polyfit(x,y,n) 说明:polyfit(x,y,n)是找 n 次多项式 p(x) 的系数,这些系数 满足在最小二乘法意义 下 p(x(i)) ~= y(i). 已知一组数据,用什么样的曲线拟合最好呢? 可以根据散点 图进行直观观察,在 此基础上,选择几种曲线分别拟合,然后比 较, 观察那条曲 线的最小二乘指标最 小。 下面我们给出常用的曲线(下面的 为变量, 等为参数) , x y , a b 直线:y ax b 多项式:(一般情况下,n 不宜过高,n=2,3) 1 2 1 2 3 1 n n n n n y a x a x a x a x a 双曲线:y= a y b x 指数曲线: bx y ae 幂函数: b y ax 有些曲线的拟合,为了利用数学软件,在 拟合前需作变量替换,化 为对未知数的 线性函数。 思考:如果根据经验,曲线是双曲线 或指数曲线 及幂函数 a y b x bx y ae 等,如何利用 matlab 的多项式拟合函数来作曲线拟合? b y ax 例2:在化学反应中,为研究某化合物的浓度随时间的变化规律。测得一组数据如 下表所示: x(分) 1 2 3 4 5 6 7 8 浓度 y 4 6.4 8.0 8.4 9.28 9.5 9.7 9.86 x(分) 9 10 11 12 13 14 15 16 浓度 y 10 10.2 10.32 10.42 10.5 10.55 10.58 10.6 试求浓度 y 与时间 t 的经验函数关系。并推断第 20 、40 分钟时的浓度值。 本题是一个可以用数据的曲线拟合来解决的问题。下面是利用 matlab 编的一段 程序。 clear; %录入数据 xy=[1 4 2 6.4 3 8.0 4 8.45 9.286 9.57 9.7 8 9.86 9 1010 10.2 11 10.32 12 10.42 13 10.5 14 10.55 15 10.58 16 10.6]; x=xy(:,1); y=xy(: