MATLAB 数值计算(2)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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