MATLAB数值计算
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
其中Q返回多项式P1除以P2的商式,r返回P1除以P2的 余式。这里,Q和r仍是多项式系数向量。
deconv是conv的逆函数, P1=conv(P2,Q)+r
例:求多项式x4+8x3-10除以多项式2x2-x+3的结果。
7.多项式的导数(polyder)
(1) k = polyder(P)
求多项式P的导函数
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]
例:求定积分。 (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) 牛顿-柯特斯法
4.2曲线拟合和数据插值 4.2.1曲线拟合 4.2.2数据插值
数据插值、拟合的背景知识
在解决实际问题的生产、工程实践和科学实验中,常常需 要从一组实验中观测数据
xi , yi , i 0,1, , n,
揭示自变量与因变量之间的关系,从而帮助人们认识事物的 内在规律和本质属性。
数据插值、拟合的背景知识
0
12
10
30
20
20
2
9
12
36
22
16
4
12
14
35
24
13
6wenku.baidu.com
15
16
31
8
23
18
27
推测在每一秒时的温度,并利用不同的插值方法描绘温度曲线。
4.6 数值积分和微分 4.6.1 数值积分 4.6.2 数值微分
4.6.1 数值积分
1.数值积分基本原理
求解定积分的基本思想都是将整个积分区 间[a,b]分成n个子区间[xi,xi+1],i=1,2,…,n,其中 x1=a,xn+1=b。这样求定积分问题就分解为求和 问题。 数值方法多种多样,如简单的梯形法、 辛普生(Simpson)•法、牛顿-柯特斯(NewtonCotes)法等都是经常采用的方法。
多项式积分: 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提供多项式的函数:
多项式的值;根和微分;拟合曲线;部分分式
病态方程组
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
注意:X1的取值范围不能 超出X的给定范围,否则, 会给出“NaN”错误。
运行结果如下图所示。
3. 二维插值
二维插值是对两变量的函数z=f(x,y)进行插值,二维插值的原理如 下图所示:
2. 函数interp2二维插值:
zi = interp2(x,y,z,xi,yi,method)
➢其中X,Y是两个向量,分别描述两个参数的采样点,Z 是与参数采样点对应的函数值,Xi,Yi是两个向量或标 量,描述欲插值的点。Zi是根据相应的插值方法得到的 插值结果。
➢ method 用 于 指 定 插 值 的 方 法 : ‘ l i n e a r ’ 、 ‘nearest’、‘cubic’、‘spline’
➢ X1,Y1的取值范围不能超出X,Y的给定范围,否则,会 给出“NaN”错误。
运行结果如下图所示。
代数方程
线性方程
方程
非线性方程
微分方程
常微分方程
(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. 多项式积分
偏微分方程
4.3 线性方程组求解 4.4 非线性方程问题求解 4.5 常微分方程的数值求解
4.3 线性方程组求解
Ax=b,A(n×m);m是独立方程个数,n是未知量x个数
线性方程组
线性方程组分类
唯一解的恰定 线性方程组(n=m)
A为方阵,行列式不等于0,(非奇异)
无数多解的欠定方程组(m<n)
解不存在的超定方程)(m>n)
>> A=[1,2,3;4,5,6;7,8,9]; >> C=poly(A) C= 1.0000 -15.0000 -18.0000 -0.0000 >> d=poly2str(C,'X') d= X^3 - 15 X^2 - 18 X - 2.3466e-014
• >> roots(C) • ans = • 16.1168 • -1.1168 • -0.0000
基于牛顿-柯特斯法,MATLAB给出了quad8函数 来求定积分。该函数的调用格式:
[I,n]=quad8('fname',a,b,tol,trace)
其中参数的含义和quad函数相似,只是tol的缺省 值取10-6。 该函数可以更精确地求出定积分的值, 且一般情况下函数调用的步数明显小于quad函数, 从而保证能以更高的效率求出所需的定积分值。积 分精度更高。
采用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(‘原始数据’,’二阶多项式拟合’,’五 次多项拟合’)
[I,n]=quad(fx,1,2.5,1e-10)
1.多项式表示法
多项式
(1)直接法: P=[a0,a1,...an-1,an]
MATLAB采用行向量表示多项式系数,多项式系 数按降幂排列。 假如缺某个幂次项,则其幂次项系数为零。
(2) 完整形式法:poly2str(P,'X')
将多项式系数向量转换为完整形式,是一个字符串形式。
(3)根创建多项式
2. 数值积分的实现方法
(1).变步长辛普生法
基于变步长辛普生法,MATLAB给出了quad函数来求定积 分。该函数的调用格式为:
[I,n]=quad('fname',a,b,tol,trace)
其中fname是被积函数名。a和b分别是定积分的下限和上 限。tol用来控制积分精度,缺省时取tol=0.001。trace控制 是否展现积分过程,若取非0则展现积分过程,取0则不展 现,缺省时取trace=0。返回参数I即定积分值,n为被积函数 的调用次数。
➢函数根据X,Y的值,计算函数在Xi处的值。X,Y是两个等 长的已知向量,分别描述采样点和样本值,Xi是一个向 量或标量,描述欲插值的点,Yi是一个与Xi等长的插值 结果。
➢method用于指定插值的方法:‘线性linear’、‘最近 点nearest’、‘立方cubic’、
‘三次样条spline’
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.2.1. 多项式曲线拟合
1. 多项式曲线拟合
函数polyfit()采用最小二乘法(误差平方和最小)对给定数据 进行多项式拟合.
• >> 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个根。
P=poly(r) 根据
多项式的根,建立r向量[b0,b1,...bn-1,bn],则创 建多项式向量系数
P=poly(A)
输入A是方阵,返回值为A的特征多项式。
Ax=λx ,λ就称为n次方阵A的特征值, |A-λE|=0是λ的 n次多项式,也称为方阵A的特征多项式.
A的特征值就是A的特征多项式的根
练习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=
2.4674
例:分别用quad函数和quad8函数求定积分 的近似值,并在相同的积分精度下,比较 函数的调用次数。 调用函数quad求定积分: format long; fx=inline('exp(-x)');
运行结果如下图所示
4.2.2 数据插值
插值是根据已知输入/输出数据集和当前输入估计输出值。MATLAB 提供大量的插值函数。
1. 插值函数
2.一维插值
一维插值就是对函数y=f(x)进行插值,一维插值的原理如下图所示。
2. 函数interp1一维插值:
yi = interp1(x,y,xi,'method')
例:求多项式x4+8x3-10的根。 命令如下:
P=[1,8,0,0,-10];
r=roots(P) 若已知多项式的全部根,则可以用poly函数建立起 该多项式,其调用格式为:
P=poly(r) 若r为具有n个元素的向量,则poly(r)建立以r为其根 的多项式,且将该多项式的系数赋给向量P。
3.多项式求值(polyval)
(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
第四章 数值计算功能
MATLAB提供大量具有强大数值计算功能的函数。本章着重介绍关于数值计算的函数。
4.1 多项式计算 4.2 数值插值和曲线拟合 4.3 线性方程组求解 4.4 非线性方程问题求解 4.5 常微分方程的数值求解 4.6 数值微分与积分 4.7 函数极值
4.1 多项式运算
1.多项式表示法 2.多项式求根 3.多项式求值 4.多项式乘法和除法 5.多项式的微积分 6.多项式曲线拟合
deconv是conv的逆函数, P1=conv(P2,Q)+r
例:求多项式x4+8x3-10除以多项式2x2-x+3的结果。
7.多项式的导数(polyder)
(1) k = polyder(P)
求多项式P的导函数
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]
例:求定积分。 (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) 牛顿-柯特斯法
4.2曲线拟合和数据插值 4.2.1曲线拟合 4.2.2数据插值
数据插值、拟合的背景知识
在解决实际问题的生产、工程实践和科学实验中,常常需 要从一组实验中观测数据
xi , yi , i 0,1, , n,
揭示自变量与因变量之间的关系,从而帮助人们认识事物的 内在规律和本质属性。
数据插值、拟合的背景知识
0
12
10
30
20
20
2
9
12
36
22
16
4
12
14
35
24
13
6wenku.baidu.com
15
16
31
8
23
18
27
推测在每一秒时的温度,并利用不同的插值方法描绘温度曲线。
4.6 数值积分和微分 4.6.1 数值积分 4.6.2 数值微分
4.6.1 数值积分
1.数值积分基本原理
求解定积分的基本思想都是将整个积分区 间[a,b]分成n个子区间[xi,xi+1],i=1,2,…,n,其中 x1=a,xn+1=b。这样求定积分问题就分解为求和 问题。 数值方法多种多样,如简单的梯形法、 辛普生(Simpson)•法、牛顿-柯特斯(NewtonCotes)法等都是经常采用的方法。
多项式积分: 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提供多项式的函数:
多项式的值;根和微分;拟合曲线;部分分式
病态方程组
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
注意:X1的取值范围不能 超出X的给定范围,否则, 会给出“NaN”错误。
运行结果如下图所示。
3. 二维插值
二维插值是对两变量的函数z=f(x,y)进行插值,二维插值的原理如 下图所示:
2. 函数interp2二维插值:
zi = interp2(x,y,z,xi,yi,method)
➢其中X,Y是两个向量,分别描述两个参数的采样点,Z 是与参数采样点对应的函数值,Xi,Yi是两个向量或标 量,描述欲插值的点。Zi是根据相应的插值方法得到的 插值结果。
➢ method 用 于 指 定 插 值 的 方 法 : ‘ l i n e a r ’ 、 ‘nearest’、‘cubic’、‘spline’
➢ X1,Y1的取值范围不能超出X,Y的给定范围,否则,会 给出“NaN”错误。
运行结果如下图所示。
代数方程
线性方程
方程
非线性方程
微分方程
常微分方程
(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. 多项式积分
偏微分方程
4.3 线性方程组求解 4.4 非线性方程问题求解 4.5 常微分方程的数值求解
4.3 线性方程组求解
Ax=b,A(n×m);m是独立方程个数,n是未知量x个数
线性方程组
线性方程组分类
唯一解的恰定 线性方程组(n=m)
A为方阵,行列式不等于0,(非奇异)
无数多解的欠定方程组(m<n)
解不存在的超定方程)(m>n)
>> A=[1,2,3;4,5,6;7,8,9]; >> C=poly(A) C= 1.0000 -15.0000 -18.0000 -0.0000 >> d=poly2str(C,'X') d= X^3 - 15 X^2 - 18 X - 2.3466e-014
• >> roots(C) • ans = • 16.1168 • -1.1168 • -0.0000
基于牛顿-柯特斯法,MATLAB给出了quad8函数 来求定积分。该函数的调用格式:
[I,n]=quad8('fname',a,b,tol,trace)
其中参数的含义和quad函数相似,只是tol的缺省 值取10-6。 该函数可以更精确地求出定积分的值, 且一般情况下函数调用的步数明显小于quad函数, 从而保证能以更高的效率求出所需的定积分值。积 分精度更高。
采用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(‘原始数据’,’二阶多项式拟合’,’五 次多项拟合’)
[I,n]=quad(fx,1,2.5,1e-10)
1.多项式表示法
多项式
(1)直接法: P=[a0,a1,...an-1,an]
MATLAB采用行向量表示多项式系数,多项式系 数按降幂排列。 假如缺某个幂次项,则其幂次项系数为零。
(2) 完整形式法:poly2str(P,'X')
将多项式系数向量转换为完整形式,是一个字符串形式。
(3)根创建多项式
2. 数值积分的实现方法
(1).变步长辛普生法
基于变步长辛普生法,MATLAB给出了quad函数来求定积 分。该函数的调用格式为:
[I,n]=quad('fname',a,b,tol,trace)
其中fname是被积函数名。a和b分别是定积分的下限和上 限。tol用来控制积分精度,缺省时取tol=0.001。trace控制 是否展现积分过程,若取非0则展现积分过程,取0则不展 现,缺省时取trace=0。返回参数I即定积分值,n为被积函数 的调用次数。
➢函数根据X,Y的值,计算函数在Xi处的值。X,Y是两个等 长的已知向量,分别描述采样点和样本值,Xi是一个向 量或标量,描述欲插值的点,Yi是一个与Xi等长的插值 结果。
➢method用于指定插值的方法:‘线性linear’、‘最近 点nearest’、‘立方cubic’、
‘三次样条spline’
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.2.1. 多项式曲线拟合
1. 多项式曲线拟合
函数polyfit()采用最小二乘法(误差平方和最小)对给定数据 进行多项式拟合.
• >> 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个根。
P=poly(r) 根据
多项式的根,建立r向量[b0,b1,...bn-1,bn],则创 建多项式向量系数
P=poly(A)
输入A是方阵,返回值为A的特征多项式。
Ax=λx ,λ就称为n次方阵A的特征值, |A-λE|=0是λ的 n次多项式,也称为方阵A的特征多项式.
A的特征值就是A的特征多项式的根
练习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=
2.4674
例:分别用quad函数和quad8函数求定积分 的近似值,并在相同的积分精度下,比较 函数的调用次数。 调用函数quad求定积分: format long; fx=inline('exp(-x)');
运行结果如下图所示
4.2.2 数据插值
插值是根据已知输入/输出数据集和当前输入估计输出值。MATLAB 提供大量的插值函数。
1. 插值函数
2.一维插值
一维插值就是对函数y=f(x)进行插值,一维插值的原理如下图所示。
2. 函数interp1一维插值:
yi = interp1(x,y,xi,'method')
例:求多项式x4+8x3-10的根。 命令如下:
P=[1,8,0,0,-10];
r=roots(P) 若已知多项式的全部根,则可以用poly函数建立起 该多项式,其调用格式为:
P=poly(r) 若r为具有n个元素的向量,则poly(r)建立以r为其根 的多项式,且将该多项式的系数赋给向量P。
3.多项式求值(polyval)
(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
第四章 数值计算功能
MATLAB提供大量具有强大数值计算功能的函数。本章着重介绍关于数值计算的函数。
4.1 多项式计算 4.2 数值插值和曲线拟合 4.3 线性方程组求解 4.4 非线性方程问题求解 4.5 常微分方程的数值求解 4.6 数值微分与积分 4.7 函数极值
4.1 多项式运算
1.多项式表示法 2.多项式求根 3.多项式求值 4.多项式乘法和除法 5.多项式的微积分 6.多项式曲线拟合