MATLAB数值计算
(1)代数多项式求值
y = polyval(P,x)
若x为一数值,则求多项式在该点的值;若x为向量或矩阵,则 对向量或矩阵中的每个元素求其多项式的值。
(2)矩阵多项式求值 Y = polyvalm(P,X)
•
polyvalm函数要求x为方阵,它以方阵为自变量求多项式的值
设A为方阵,P代表多项式x3-5x2,那么polyvalm(P,A)的含义是: A*A*A-5*A*A 而polyval(P,A)的含义是: A.*A.*A-5*A.*A
[I,n]=quad(fx,1,2.5,1e-10)
(2) k = polyder(P,Q)
例:求有理分式的导数。 命令如下: P=[1]; Q=[1,0,5]; [p,q]=polyder(P,Q)
求两个多项式乘积P·Q的导函数
(3) [p,q] = polyder(P,Q)
求两个多项式除法P/Q的导函数,导函数的分子存入p,分母存入q。
8. 多项式积分
例:求定积分。 (1) 建立被积函数文件fesin.m。
function f=fesin(x) f=exp(-0.5*x).*sin(x+pi/6); (2) 调用数值积分函数quad求定积分。 [S,n]=quad('fesin',0,3*pi) S=
0.9008 n= 77
(2) 牛顿-柯特斯法
➢ method 用 于 指 定 插 值 的 方 法 : ‘ l i n e a r ’ 、 ‘nearest’、‘cubic’、‘spline’
➢ X1,Y1的取值范围不能超出X,Y的给定范围,否则,会 给出“NaN”错误。
运行结果如下图所示。
代数方程
线性方程
方程
非线性方程
微分方程
常微分方程
第四章 数值计算功能
MATLAB提供大量具有强大数值计算功能的函数。本章着重介绍关于数值计算的函数。
4.1 多项式计算 4.2 数值插值和曲线拟合 4.3 线性方程组求解 4.4 非线性方程问题求解 4.5 常微分方程的数值求解 4.6 数值微分与积分 4.7 函数极值
4.1 多项式运算
1.多项式表示法 2.多项式求根 3.多项式求值 4.多项式乘法和除法 5.多项式的微积分 6.多项式曲线拟合
12
5. 多项式乘法-向量卷积 (conv)
w = conv(P1,P2)
用于求多项式P1和P2的乘积。这里,P1、P2是两个多 项式系数向量,返回结果也为多项式的系数向量;
例: 求多项式x4+8x3-10与多项式2x2-x+3的乘积。
6. 多项式除法-向量解卷积(deconv)
[Q,r] = deconv(P1,P2)
4. 多项式加减
多项式加减运算
次数相同的多项式,可直接对其系数向量进行加减运算, 如果两个多项式次数不 同,则应该把低次多项式中系数不足的高次项用 0 补足,然后再进行加减运算
例:
p1 = 2x3 - x2 + 3
p2 =
2x + 1
p1 + p2 = 2x3 - x2 + 2x + 4
[2, -1, 0, 3] [0, 0, 2, 1[2], 1] [2, -1, 2, 4]
病态方程组
4.3.1 直接解法
1.左除运算符“\”或逆矩阵
Ax=b的解 x=A\b或 inv(A)*b
例 用直接解法求解下列线性方程组。 命令如下: A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4]; b=[13,-9,6,0]'; x=A\b or x=inv(A)*b
• >> eig(A) 16.1168 -1.1168 -0.0000
2. 多项式求根
(1)多项式的根
==0
n次多项式具有n个根,当然这些根可能是实根,也可能 含有若干对共轭复根。MATLAB提供的roots函数用于求 多项式的全部根,其调用格式为:
r = roots(P)
P为多项式的系数向量,求得的根赋给向量r,即 b(1),b(2),…,b(n)分别代表多项式的n个根。
基于牛顿-柯特斯法,MATLAB给出了quad8函数 来求定积分。该函数的调用格式:
[I,n]=quad8('fname',a,b,tol,trace)
其中参数的含义和quad函数相似,只是tol的缺省 值取10-6。 该函数可以更精确地求出定积分的值, 且一般情况下函数调用的步数明显小于quad函数, 从而保证能以更高的效率求出所需的定积分值。积 分精度更高。
例:求多项式x4+8x3-10的根。 命令如下:
P=[1,8,0,0,-10];
r=roots(P) 若已知多项式的全部根,则可以用poly函数建立起 该多项式,其调用格式为:
P=poly(r) 若r为具有n个元素的向量,则poly(r)建立以r为其根 的多项式,且将该多项式的系数赋给向量P。
3.多项式求值(polyval)
注意:X1的取值范围不能 超出X的给定范围,否则, 会给出“NaN”错误。
运行结果如下图所示。
3. 二维插值
二维插值是对两变量的函数z=f(x,y)进行插值,二维插值的原理如 下图所示:
2. 函数interp2二维插值:
zi = interp2(x,y,z,xi,yi,method)
➢其中X,Y是两个向量,分别描述两个参数的采样点,Z 是与参数采样点对应的函数值,Xi,Yi是两个向量或标 量,描述欲插值的点。Zi是根据相应的插值方法得到的 插值结果。
采用n次多项式p来拟合数据x和y。
p = polyfit(x,y,n)
拟合的数据
x 1 2 3 4 5 6 7 8 9 10
y 1 3 11 12 28 32 45 70 80 104
x=1:10; y=[1,3,11,12,28,32,45,70,80,104]; %2次多项式拟合 p1=polyfit(x,y,2); y1=polyval(p1,x); %5次多项式拟合 p2=polyfit(x,y,5); y2=polyval(p2,x); hold on; plot(x,y,'or--'); plot(x,y1,'b--'); plot(x,y2,'*--'); xlabel('x'); ylabel(‘y’) Legend(‘原始数据’,’二阶多项式拟合’,’五 次多项拟合’)
➢函数根据X,Y的值,计算函数在Xi处的值。X,Y是两个等 长的已知向量,分别描述采样点和样本值,Xi是一个向 量或标量,描述欲插值的点,Yi是一个与Xi等长的插值 结果。
➢method用于指定插值的方法:‘线性linear’、‘最近 点nearest’、‘立方cubic’、
‘三次样条spline’
4.2曲线拟合和数据插值 4.2.1曲线拟合 4.2.2数据插值
数据插值、拟合的背景知识
在解决实际问题的生产、工程实践和科学实验中,常常需 要从一组实验中观测数据
xi , yi , i 0,1, , n,
揭示自变量与因变量之间的关系,从而帮助人们认识事物的 内在规律和本质属性。
数据插值、拟合的背景知识
1.多项式表示法
多项式
(1)直接法: P=[a0,a1,...an-1,an]
MATLAB采用行向量Байду номын сангаас示多项式系数,多项式系 数按降幂排列。 假如缺某个幂次项,则其幂次项系数为零。
(2) 完整形式法:poly2str(P,'X')
将多项式系数向量转换为完整形式,是一个字符串形式。
(3)根创建多项式
偏微分方程
4.3 线性方程组求解 4.4 非线性方程问题求解 4.5 常微分方程的数值求解
4.3 线性方程组求解
Ax=b,A(n×m);m是独立方程个数,n是未知量x个数
线性方程组
线性方程组分类
唯一解的恰定 线性方程组(n=m)
A为方阵,行列式不等于0,(非奇异)
无数多解的欠定方程组(m<n)
解不存在的超定方程)(m>n)
给出函数关系式的方 法,因观测数据与要求 的不同而异,通常可以 采用两种方法: ✓ 拟合 ✓ 插值
简单的插值与拟合可 以通过手工计算而得出, 但是复杂的计算只能求 助于计算机。
4.2.1. 多项式曲线拟合
1. 多项式曲线拟合
函数polyfit()采用最小二乘法(误差平方和最小)对给定数据 进行多项式拟合.
多项式积分: polyint
I=polyint(p,c) I=polyint(p)
不定积分,常数项取 c 不定积分,常数项取 0
例:已知 p(x) = 2x3 - x2 + 3
求 p( x) dx,常数项取 5
I=polyint([2,-1,0,3],5);
16
MATLAB提供多项式的函数:
多项式的值;根和微分;拟合曲线;部分分式
练习1
设有某实验数据如下:
(1)在MATLAB中作图观察离散点的结构,用多项式拟合的方法拟合一个合适的 多项式函数;
(2)在MATLAB中作出离散点和拟合曲线图.
练习2
在一天24小时内,从零点开始每间隔2小时测得的环境温度( ℃),如下表所示。
一天内间隔2小时测得环境温度表
时间 环境温度 时间 环境温度 时间 环境温度
例:求定积分。 (1) 被积函数文件fx.m。 function f=fx(x) f=x.*sin(x)./(1+cos(x).*cos(x)); (2) 调用函数quad8求定积分。 I=quad8('fx',0,pi) I=