1 / 18

MATLAB 数值计算

MATLAB 数值计算. 矩阵和向量及其数值运算 多项式的运算 求函数的极值和零点.   . 矩阵和向量及其运算. 矩阵与向量的输入. MATLAB 的基本数据单元是无需指定维数的矩阵 , 数量可看成 1×1 矩阵 ,n 维行向量或列向量看做 1×n 或 n×1 矩阵. >>A=[1 2 3 4 5 6 7 8 9]. >>clear;A=[1,2,3;4,5,6;7,8,9]. A= 1 2 3 4 5 6 7 8 9. A=

Download Presentation

MATLAB 数值计算

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. MATLAB数值计算 矩阵和向量及其数值运算 多项式的运算 求函数的极值和零点   

  2. 矩阵和向量及其运算 • 矩阵与向量的输入 MATLAB的基本数据单元是无需指定维数的矩阵,数量可看成1×1矩阵,n维行向量或列向量看做1×n或n×1矩阵. >>A=[1 2 3 4 5 6 7 8 9] >>clear;A=[1,2,3;4,5,6;7,8,9] A= 1 2 3 4 5 6 7 8 9 A= 1 2 3 4 5 6 7 8 9 >>clear;B=[0 1 2] B= 0 1 2 输入矩阵元素时,同行元素间用空格或逗号分隔,不同行间用分号或回车分隔.

  3. n=length(A):取出矩阵A的行数和列数的最大值. [m,n]=size(A):取出矩阵A的行数m和列数n. • 向量的快捷生成 • 利用冒号”:”生成等差数列 ①a=i:j初值:终值 如果i<j,则生成向量a=[i,i+1,…,j]; 如果i>j,则生成空向量. ②a=i:k:j初值:步长:终值 如果i<j且k>0,或者i>j且k<0,则生成步长为k的向量a=[i,i+1,…,j]; 如果i<j且k<0,或者i>j,且k>0,则生成空向量. 例1.利用冒号生成等差数列. >>X=1:5%初值:终值 X= 12345 >>Y=0:2:10%初值:步长:终值 Y= 0246810

  4. 利用linspace函数生成向量 ①a=linspace(i,j). 生成有100个元素的行向量,在i,j,之间等分分布. ②a=linspace(i,j,n). 生成有n个元素的行向量,在i,j,之间等分分布. • 利用logspace函数生成向量 ①a=logspace(i,j). 生成有50个元素的对数等分行向量,第一个元素是10i,最后一个元素是10j. ②a=logspace(i,j,n). 生成有n个元素的对数等分行向量,第一个元素是10i,最后一个元素是10j. ③a=logspace(i,pi). 生成有50个元素的对数等分行向量,第一个元素是10i,最后一个元素是pi.

  5. 例2.利用linspace和logspace生成向量示例. >>x1=linspace(1.2,5.8,4) x1= 1.2000 2.7333 4.2667 5.8000 >>x2=logspace(1.0,2.9,5) x2= 10.0000 29.8538 89.1251 266.0725 794.3282 • 矩阵的快捷生成 • 用函数建立矩阵 用于建立矩阵的函数,常见的有: trace(A):矩阵的迹 zeros(m,n):m行n列零矩阵 ones(m,n):m行n列元素全为1的矩阵 eye(n):n阶单位矩阵 d=eig(A),[v,d]=eig(A):特征值与特征向量 rand(m,n):m行n列均匀分布随机数矩阵 randn(m,n):m行n列正态分布随机数矩阵 det(A):行列式计算 AT:转置.若是复阵,则为共轭转置 inv(A):矩阵的逆 orth(A):正交化 poly(A):特征多项式 rank(A):矩阵的秩

  6. 例3.设 ,试生成矩阵A-1,AT,与A同阶的单位矩阵. 解 所用MATLAB命令及运行结果为 >>A=[2 1 1;3 1 2;1 -1 0]; >>inv(A) ans= 1.0000 -0.5000 0.5000 1.0000 -0.5000 -0.5000 -2.0000 1.5000 -0.5000 >>eye(length(A)) ans = 2 3 1 1 1 -1 1 2 0 >>A′ ans = 2 3 1 1 1 -1 1 2 0

  7. 矩阵的调用 假如A是一个已知10*10的方阵,那么: A(:,3)是A的第3列元素构成的列向量; A(5,:)是A的第5行元素构成的行向量; A(1:5,3)是A的前5行的第3列元素构成的列向量; A(1:5,7:10)是A的前5行,第7到第10列元素构成的子矩阵; A([1 3 5 ],[2 4 6])是A的第1、3、5行,第2、4、6列元素构成的子矩阵; A(:,7:-1:3)是A的第7、6、5、4、3列元素构成的子矩阵. A(:,[2 4])=[]用于把A的第2、4列删除,形成A的一个子矩阵. • 矩阵运算 • 矩阵的四则运算 ①矩阵相加减. 同型矩阵相加减等于对应矩阵的元素相加减,用符号“+”和“-”表示.

  8. ②矩阵相乘. 矩阵相乘用符号*表示,两个矩阵相乘以及数量和矩阵相乘遵循通常的数学规则. ③矩阵相除. 分右除和左除两种,分别用符号“/”和“\”表示.例如,如果A和B都是n阶矩阵,且A非奇异,则A\B=A-1B,B/A=BA-1. • 矩阵的乘方 方阵A的乘方用符号“^”表示. 当p是正整数时, Ap是A的p次幂,即:A^p=Ap; 当p为0时,A^0是单位阵; 当p为负数时,只有当A非奇异才有意义,例如: A^(-1)=A-1,A^(-2)=A-2.

  9. 例4.设 试求A+B,A*B,B*A,A2,AB-1. 解 所用MATLAB命令及运行结果为 >>A=[-2 4;1 -2]; >>B=[2 4;-1 -6]; >>A+B ans = 0 8 0 -8 >>B*A ans = 0 0 -4 8 >>D=A/B ans = -2 -2 1 1 >>A*B ans = -8 -32 4 16 >>A^2 ans = 8 -16 -4 8

  10. 多项式的运算 • 多项式的表示方法及其运算 • MATLAB中,无论是一个多项式,还是它的根,都是向量,MATLAB规定,多项式是行向量,根是列向量.例如,多项式p(x)=x3-3x+5可以表示成p=[1 0 -3 5].给定一个多项式的根,也可以构造相应的多项式.在MATLAB中,函数poly(r)执行这个任务. • 求多项式p=[1 0 -3 5]在x=5时的值p(5),可以用函数polyval(p,5).其中第一个参数是多项式的系数向量,第二个是自变量的取值(可以是矩阵). • 函数polyvalm(p,X)的第二个参数是方阵,求以矩阵为自变量的多项式的值. • 函数roots(p)可以找一个多项式的根.

  11. 例5. 改变自变量时多项式的取值及求多项式的根. >>p=[1 0 -3 5] p = 1 0 -3 5 >>result=polyval(p,5) %自变量为数 result= 115 >>A=[9 1;6 8;2 7]; >>c=polyval(p,A) %自变量为矩阵 c= 707 3 203 493 7 327

  12. >>A=[9 1;6 8]; >>c=polyvalm(p,A) %自变量为方阵 c= 863 220 1320 643 >>p=[1 0 -3 5]; >>r=roots(p) r= -2.2790 1.1395+0.9463i 1.1395-0.9463i

  13. 常见的多项式函数 • 函数conv支持多项式乘法 例6.求a(x)=x3+2x2+3x+4和b(x)=x3+4x2+9x+16的乘积. >>a=[1 2 3 4];b=[1 4 9 16] >>c=conv(a,b) c= 1 6 20 50 75 84 64 • 多项式的加法 结果是d(x)=2x3+6x2+12x+20 >>d=a+b d= 2 6 12 20 低阶多项式用首零填补,使其与高阶多项式有相同的阶数 >>e=c+[0 0 0 d] e= 1 6 20 52 81 96 84

  14. 一个多项式除以另一个多项式 由函数deconv完成,格式为[g,r]=deconv(c,b)表示c除以b,给出商多项式g和余数r,若r=0,则c=bg. 例7.用例6中的多项式b和c,求它们的商. >>[g,r]=deconv(c,b) g = 1 2 3 4 r = 0 0 0 0 0 0 0 g = 1 6 20 48 69 72 44 >>h=polyder(g) h = 6 30 80 144 138 72 • 多项式的求导函数polyder 例8.对于一个新的多项式g求导 >>g=[1 6 20 48 69 72 44]

  15. 求函数的极值和零点 • 求解一元函数的取小值 可以通过函数fminbnd来求一元函数y=f(x)在指定区间[a,b]上的函数局部极小值,该函数返回函数在极小值点时自变量x的值,调用格式为:x=fminbnd(′fun′,a,b). 例9.求humps函数在开区间(0.3,1)内的最小值.humps是MATLAB内置的M文件函数,实际上是y=1/((x-0.3)^2+ 0.01)+1/((x-0.9)^2+0.04)-6. >>x=fminbnd(′humps′,0.3,1) x = 0.6370 >>f=inline(′sin(x)+3′); %用内联函数表达 >>x=fminbnd(f,2,5) x = 4.7124

  16. 求解多元函数的取小值 函数fminsearch用于求多元函数在向量x0附近的最小值.它指定一个开始的向量(x0),并非指定一个区间.此函数返回一个向量,为此多元函数局部最小函数值对应的自变量的取值,调用格式为 x=fminsearch(′fun′,x0) 例10.把一个3个自变量的函数创建在一个M文件里. %three.m function b=three(v) x=v(1); y=v(2); z=v(3); b=x*x+2.5*sin(y)-z*z*x*y*y; 求这个函数在[1,-1,0]点附近的最小值可以得到:

  17. >>v=[1 -1 0]; >>fminsearch(′three′,v) ans = -0.0000 -1.5708 0.0008 也可以简单输入如下: f=′x(1)^2+2.5*sin(x(2))-x(3)^2*x(1)*x(2)^2′ >>x=fminsearch(f,[1 -1 0]),f=eval(f) x = -0.0000 -1.5708 0.0008 %函数的最小值点 f = -2.5000 %函数的最小值

  18. 求函数的零点 在MATLAB中使用fzero可以找到函数零点,调用格式为 x=fzero(fun,x0) 寻找零点可以指定一个开始的位置,或者指定一个区间. 例11.仍然考虑humps函数,把[1,2]作为函数的参数,命令及结果为 >>fzero(′humps′,[1 2]) ans = 1.2995

More Related