MATLAB 数值计算(2)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数值计算

MATLAB 数值计算

第四章MATLAB

1

主要内容

基本数据运算

数据统计与分析

数据插值与曲线拟合

多项式计算

数值微积分

线性方程组求解

非线方与问求解

非线性方程与最优化问题求解2

常微分方程的数值求解

多项式计算

N次多项式表示为

–P(x)=a 0x n +a 1x n-1+a 2x n-2…a n-1x+a n

Matlab中n次多项式用一个长度为n+1的行向量(系数向量)表示

–[a a …a n-1a [01n 1n ]

多项式的四则运算

–多项式的加减运算

»系数向量的加减运算

要求次数相同不足时用“»要求次数相同,不足时用“0”补起——向量化处理

»例54322()352756

f x x x x x x =−+−++3

()353

g x x x =+−

多项式乘法运算

–函数conv(P1,P2)用于求多项式P1和P2的乘积。这里,P1、P2是两个多项式系数向量 多项式除法运算

–函数[Q,r]=deconv(P1,P2)用于对多项式P1和P2作除法运算。其中Q 返回多项式P1除的商式的余式这里仍是多项式系数向量

以P2的商式,r 返回P1除以P2的余式。这里,Q 和r 仍是多项式系数向量。–deconv 是conv 的逆函数,即有P1=conv(P2,Q)+r 。

5432−− 例–求f(x)+g(x)、f(x)-g(x)。

2()352756

()353

f x x x x x x

g x x x =+++=+−–求f(x)×g(x)、f(x)/g(x)。

–f=[3,-5,2,-7,5,6];g=[3,5,-3];g1=[0,0,0,g];

–f+g1%求f(x)+g(x)f+g1 %求f(x)+g(x)

–f-g1 %求f(x)-g(x)

–conv(f,g) %求f(x)*g(x)

[]()求()/()商式送余式送

4–[Q,r]=deconv(f,g) %求f(x)/g(x),商式送Q,余式送r。

多项式的导函数

–p=polyder(P):求多项式P的导函数

l d(P)求多项式

多项式求值

–MATLAB 提供了两种求多项式值的函数:polyval 与polyvalm ,它们的输入参数均为多项式系数向量P 和自变量x 。

–两者的区别在于前者是代数多项式求值,而后者是矩阵多项式求值。

代数多项式求值

–Y=polyval(P,x)

–若为一数值,则求多项式在该点的值;若x 为数值,则求多项式在该点的值;若x 为向量或矩阵,则对向量或矩阵中的每个元素求其多项式的值。

矩阵多项式求值

–polyvalm 函数用来求矩阵多项式的值,其调用格式与polyval 相同,但含义不同。–polyvalm 函数要求x 为方阵,它以方阵为自变量求多项式的值。

polyval 与polyvalm 的区别

–设A 为方阵,P 代表多项式x 3-5x 2+8,那么polyvalm(P,A)的含义是:

A*A*A-5*A*A+8*eye(size(A))

6–polyval(P,A)的含义是:A.*A.*A-5*A.*A+8*ones(size(A))

以多项式x4+8x3-10为例,取一个2×2矩阵为自变量分别用polyval和polyvalm计算该多项式的值。

l l l l计算该多项式的值

–A=[1,8,0,0,-10]; % 多项式系数

–x=[-1,1.2;2,-1.8] % 给出一个矩阵x

–y1=polyval(A,x) % 计算代数多项式的值

–y2=polyvalm(A,x) % 计算矩阵多项式的值

7

多项式求根

n次多项式具有n个根,当然这些根可能是实根,也可能含有若干对共轭复根

–MATLAB提供的roots函数用于求多项式的全部根,其调用格式为:x=roots(P)

»其中P为多项式的系数向量,求得的根赋给向量x,即x(1),x(2),…,x(n)分别代表多项式的n个根。

–P=poly(x)

»若x为具有n个元素的向量,则poly(x)建立以x为其根的多项式,且将该多项式的系数赋给向量P。

8

例已知5

2.7543)(235+−−+=x x x x x f (1) 计算f(x)=0 的全部根。

(2)f(x)=0的根构造一个多项式(2) 由方程f(x)0的根构造个多项式g(x),并与f(x)进行对比。

命令如下

命令如下:P=[3,0,4,-5,-7.2,5];

X=roots(P) %求方程f(x)=0的根

G=poly(X)%G=poly(X) %求多项式g(x)

9

主要内容

基本数据运算 数据统计与分析 数据插值与曲线拟合 多项式计算 数值微积分 线性方程组求解非线方与问求解 非线性方程与最优化问题求解10 常微分方程的数值求解

数值微分的两种方法

g()对()进行逼近插值或拟合,然后用逼近函数g()–用多项式或样条函数g(x)f(x)进行逼近(插值或拟合),然后用逼近函数g(x)在点x处的导数作为f(x)在点x处的导数

–用f(x)在点x处的某种差商作为其导数

在MATLAB中,没有直接提供求数值导数的函数,只有计算向前差分的函数diff,其调用格式为:

–DX=diff(X):计算向量X的向前差分,DX(i)=X(i+1)-X(i),i=1,2,…,n-1

–DX=diff(X,n):计算X的n阶向前差分。例如,diff(X,2)=diff(diff(X))

–DX=diff(A,n,dim):计算矩阵A的n阶差分,dim=1时(缺省状态),按列计算差分;dim=2,按行计算差分。

例设x由[0,2π]间均匀分布的10个点组成,求sin x的1~3阶差分–X=linspace(0,2*pi,10);

–Y=sin(X);

–DY=diff(Y); %计算Y的一阶差分

–D2Y=diff(Y,2); %计算Y的二阶差分,也可用命令diff(DY)计算

–D3Y=diff(Y,3); %计算Y的三阶差分,也可用diff(D2Y)或diff(DY,2)

11

相关文档
最新文档