文档库 最新最全的文档下载
当前位置:文档库 › Matlab线性代数实验指导书

Matlab线性代数实验指导书

Matlab线性代数实验指导书
Matlab线性代数实验指导书

Matlab线性代数实验指导书

理学院线性代数课程组

二零零七年十月

目录

一、基础知识 (1)

1.1、常见数学函数 (1)

1.2、系统在线帮助 (1)

1.3、常量与变量 (2)

1.4、数组(矩阵)的点运算 (3)

1.5、矩阵的运算 (3)

二、编程 (4)

2.1、无条件循环 (4)

2.2、条件循环 (5)

2.3、分支结构 (5)

2.4、建立M文件 (6)

2.5、建立函数文件 (6)

三、矩阵及其运算 (7)

3.1、矩阵的创建 (7)

3.2、符号矩阵的运算 (11)

四、秩与线性相关性 (14)

4.1、矩阵和向量组的秩以及向量组的线性相关性 (14)

4.2、向量组的最大无关组 (14)

五、线性方程的组的求解 (16)

5.1、求线性方程组的唯一解或特解(第一类问题) (16)

5.2、求线性齐次方程组的通解 (18)

5.3、求非齐次线性方程组的通解 (19)

六、特征值与二次型 (22)

6.1、方阵的特征值特征向量 (22)

6.2、正交矩阵及二次型 (23)

一、基础知识

1.1常见数学函数

函数数学计算功能函数数学计算功能

abs(x) 实数的绝对值或复数的幅值floor(x) 对x朝-∞方向取整acos(x) 反余弦arcsinx gcd(m,n)

求正整数m和n的最大公约数acosh(x) 反双曲余弦arccoshx imag(x) 求复数x的虚部angle(x) 在四象限内求复数x的相角lcm(m,n)求正整数m和n的最小公倍

自然对数(以e为底数) asin(x) 反正弦arcsinx log(x)

常用对数(以 10 为底数) asinh(x) 反双曲正弦arcsinhx log10(x)

atan(x) 反正切arctanx real(x) 求复数 x 的实部atan2(x,y) 在四象限内求反正切rem(m,n) 求正整数m和n的m/n之余数atanh(x) 反双曲正切arctanhx round(x)

对x四舍五入到最接近的整数

符号函数:求出 x 的符号ceil(x) 对x朝+∞方向取整 sign(x)

conj(x) 求复数x的共轭复数 sin(x) 正弦sinx

反双曲正弦sinhx cos(x) 余弦cosx sinh(x)

cosh(x) 双曲余弦coshx sqrt(x) 求实数x的平方根exp(x) 指数函数e x tan(x) 正切tanx

fix(x) 对 x 朝原点方向取整 tanh(x) 双曲正切tanhx

如:输入 x=[-4.85 -2.3 -0.2 1.3 4.56 6.75],则:

ceil(x)= -4 -2 0 2 5 7

fix(x) = -4 -2 0 1 4 6

floor(x) =-5 -3 -1 1 4 6

round(x) = -5 -2 0 1 5 7

1.2 系统的在线帮助

1.2.1 help 命令:

1.当不知系统有何帮助内容时,可直接输入 help以寻求帮助:

>> help(回车)

2.当想了解某一主题的内容时,如输入:

>> help syntax (了解Matlab的语法规定)

3.当想了解某一具体的函数或命令的帮助信息时,如输入:

>> help sqrt (了解函数sqrt的相关信息)

1.2.2 lookfor 命令

现需要完成某一具体操作,不知有何命令或函数可以完成,如输入:

>> lookfor line (查找与直线、线性问题有关的函数)

1.3 常量与变量

系统的变量命名规则:变量名区分字母大小写;变量名必须以字母打头,其后可以是任意字母,数字,或下划线的组合。此外,系统内部预先定义了几个有特殊意义和用途的变量,见下表:

特殊的变量、常量取值

ans 用于结果的缺省变量名

pi 圆周率π的近似值(3.1416)

eps 数学中无穷小(epsilon)的近似值(2.2204e - 016)

inf 无穷大,如1/0 = inf (infinity)

NaN 非数,如0/0 = NaN(Not a Number),inf / inf = NaN

i,j 虚数单位:i=j=-1

1.3.1 数值型向量(矩阵)的输入

1.任何矩阵(向量),可以直接按行方式输入每个元素:同一行中的元素用逗号(,)或者用空格符来分隔;行与行之间用分号(;)分隔。所有元素处于一方括号([ ])内;

例1:

>> Time =[11 12 1 2 3 4 5 6 7 8 9 10]

>> X_Data = [2.32 3.43;4.37 5.98]

2.系统中提供了多个命令用于输入特殊的矩阵:

函数功能函数功能

compan 伴随阵 toeplitz Toeplitz矩阵

Vandermonde矩阵diag 对角阵 vander

hadamard Hadamard矩阵 zeros 元素全为0的矩阵

hankel Hankel矩阵 ones

元素全为1的矩阵

元素服从均匀分布的随机矩阵invhilb Hilbert矩阵的逆阵 rand

kron Kronercker张量积 randn

元素服从正态分布的随机矩阵

对角线上元素为1的矩阵magic 魔方矩阵 eye

由两个向量生成的矩阵pascal Pascal矩阵 meshgrid

上面函数的具体用法,可以用帮助命令 help 得到。如:meshgrid(x,y)

输入x=[1 2 3 4]; y=[1 0 5]; [X,Y]=meshgrid(x, y),则

X = Y =

1 2 3 4 1 1 1 1

1 2 3 4 0 0 0 0

1 2 3 4 5 5 5 5

目的是将原始数据x,y转化为矩阵数据X,Y。

1.3.2 符号向量(矩阵)的输入

1.用函数 sym定义符号矩阵:

函数 sym实际是在定义一个符号表达式,这时的符号矩阵中的元素可以是任何的符号或者是表达式,而且长度没有限制。只需将方括号置于单引号中。

例2:

>> sym_matrix = sym('[a b c;Jack Help_Me NO_WAY]')

sym_matrix =

[ a, b, c]

[Jack, Help_Me, NO_WAY]

2.用函数 syms 定义符号矩阵

先定义矩阵中的每一个元素为一个符号变量,而后像普通矩阵一样输入符号矩阵。

例3:

>> syms a b c ;

>> M1 = sym('Classical');

>> M2 = sym(' Jazz');

>> M3 = sym('Blues');

>> A = [a b c; M1, M2, M3;sym([2 3 5])]

A =

[ a, b, c]

[Classical, Jazz, Blues]

[ 2, 3, 5]

1.4 数组(矩阵)的点运算

运算符:+(加)、-(减)、./(右除)、.\(左除)、.^(乘方),

例4:

>> g = [1 2 3 4];h = [4 3 2 1];

>> s1 =g + h, s2 =g.*h, s3 =g.^h, s4 =g.^2, s5 =2.^h

1.5 矩阵的运算

运算符:+(加)、-(减)、*(乘)、/(右除)、\(左除)、^(乘方)、’(转置)等;常用函数:det(行列式)、inv(逆矩阵)、rank(秩)、eig(特征值、特征向量)、rref(化矩阵为行最简形) 例5:

>> A=[2 0 –1;1 3 2]; B=[1 7 –1;4 2 3;2 0 1];

>> M = A*B % 矩阵A与B按矩阵运算相乘

>> det_B = det(B) % 矩阵A的行列式

>> rank_A = rank(A) % 矩阵A的秩

>> inv_B = inv(B) % 矩阵B的逆矩阵

>> [V,D] = eig(B) % 矩阵B的特征值矩阵V与特征向量构成的矩阵D >> X = A/B % A/B = A*B-1,即XB=A,求X

>> Y = B\A % B\A = B-1*A,即BY=A,求Y

上机练习(一):

1.练习数据和符号的输入方式,将前面的命令在命令窗口中执行通过;

2.输入A=[7 1 5;2 5 6;3 1 5],B=[1 1 1; 2 2 2; 3 3 3],在命令

窗口中执行下列表达式,掌握其含义:

A(2, 3) A(:,2) A(3,:) A(:,1:2:3) A(:,3).*B(:,2)

A(:,3)*B(2,:) A*B A.*B A^2 A.^2 B/A B./A

3.输入 C=1:2:20,则C(i)表示什么?其中 i=1,2,3, (10)

4.查找已创建变量的信息,删除无用的变量;

5.欲通过系统做一平面图,请查找相关的命令与函数,获取函数的帮助信息。

二、编程

2.1 无条件循环

当需要无条件重复执行某些命令时,可以使用 for循环:

for 循环变量 t=表达式1: 达式2: 表达式3

语句体

end

说明:表达式 1 为循环初值,表达式 2 为步长,表达式3为循环终值;当表达式 2 省略时则默认步长为1;for 语句允许嵌套。

例6:

生成 3×4 阶的 Hiltber矩阵。 for i=1 : 3

for j=1 : 4

H(i,j)=1/(i+j-1);

end

end 如:矩阵输入程序

m=input(‘矩阵行数:m=’);

n= input(‘矩阵列数:n=’);

for i=1:m

for j=1:n

disp([‘输入第’,num2str(i),’行,第’, num2str(j),’列元素’]) A(i, j) = input (‘ ’)

end

end

2.2 条件循环

1) if-else-then 语句

if-else-then 语句的常使用三种形式为:(1) if 逻辑表达式

语句体

end

(2) if 逻辑表达式1

语句体1

else

语句体2

End

(3) if 逻辑表达式 1

语句体1

elseif 逻辑表达式 2

语句体 2

elseif 逻辑表达式 3

else

语句体n

end

2) while 循环语句

while 循环的一般使用形式为:

while 表达式 语句体

end 例7:

用二分法计算多项式方程在[0,3]内的一个根。 325x x ??=0解:

a = 0;fa = -inf ;

b = 3;fb = inf ; while b-a > eps*b x =(a+b)/2; fx = x^3-2*x-5; if sign(fx)== sign(fa) a =x ;fa = fx ; else

b = x ;fb = fx ; end end x

运行结果为:x = 2.0945515148154233

2.3 分支结构

若需要对不同的情形执行不同的操作,可用switch 分支语句: switch 表达式(标量或字符串) case 值1

语句体 1 case 值2

语句体 2 …

otherwise

语句体 n end

说明:当表达式不是“case”所列值时,执行otherwise 语句体。

2.4 建立M 文件

将多个可执行的系统命令,用文本编辑器编辑后并存放在后缀为 .m 的文件中,若在MATLAB 命令窗口中输入该m-文件的文件名(不跟后缀.m!),即可依次执行该文件中的多 个命令。这个后缀为.m 的文件,也称为 Matlab 的脚本文件(Script File)。

注意:文件存放路径必须在 Matlab 能搜索的范围内。

2.5 建立函数文件

对于一些特殊用户函数,系统提供了一个用于创建用户函数的命令 function,以备用户随时调用。

2.5.1.格式:

function [输出变量列表]=fun_name(输入变量列表)

用户自定义的函数体

2.5.2函数文件名为:

fun_name,注意:保存时文件名与函数名最好相同;

2.5.3存储路径:

最好在系统的搜索路径上。

2.5.4调用方法:

输出参量=fun_name (输入变量)

例8:

计算 s =n!,在文本编辑器中输入:

function s=pp(n);

s=1;

for i=1:n

s=s*i;

end

s;

在MATLAB命令窗口中输入:s=pp(5)

结果为s = 120

上机练习(二):

1.编写程序,计算 1+3+5+7+…+(2n+1)的值(用input语句输入n值)。

xx <≤ 10

2.编写分段函数

01

()2112

x x

f x x x

≤≤

?

?

=?≤≤

?

?

?其它

的函数文件,存放于文件ff.m中,计算出

(3) f?

、f、的值。

()

f∞

三、矩阵及其运算

3.1 矩阵的创建

3.1.1加、减运算

运算符:“+”和“-”分别为加、减运算符。

运算规则:对应元素相加、减,即按线性代数中矩阵的“十”、“一”运算进行。

例 3-1 在Matlab 编辑器中建立m文件:LX0701.m

A=[1, 1, 1; 1, 2, 3; 1, 3, 6]

B=[8, 1, 6; 3, 5, 7; 4, 9, 2]

A+B=A+B

A-B=A-B

在 Matlab 命令窗口建入 LX0701,则

结果显示:A+B=

9 2 7

4 7 10

5 12 8

A-B=

-7 0 -5

-2 -3 -4

-3 -6 4

3.1.2乘法

运算符:*

运算规则:按线性代数中矩阵乘法运算进行,即放在前面的矩阵的各行元素,分别与放在后面的矩阵的各列元素对应相乘并相加。

(1)两个矩阵相乘

例 3-2 在Mtalab 编辑器中建立 M 文件:LX0702.m

X=[2 3 4 5

1 2 2 1];

Y=[0 1 1

1 1 0

0 0 1

1 0 0];

Z=X*Y

存盘

在命令行中建入 LX0702,回车后显示:

Z=

8 5 6

3 3 3

(2)矩阵的数乘:数乘矩阵 上例中:a=2*X 则显示:a =

4 6 8 10 2 4 4 2

(3)向量的点乘(内积):维数相同的两个向量的点乘。 命令:dot 向量点乘函数 例:X=[-1 0 2]; Y=[-2 -1 1] ; Z=dot(X, Y) 则显示:Z =

4

还可用另一种算法:

sum(X.*Y) ans=

4

(4)向量叉乘

在数学上,两向量的叉乘是一个过两相交向量的交点且垂直于两向量所在平面的向量。atlab 中,用函数 cross 实现。

命令 cross 向量叉乘函数

例 3-3 计算垂直于向量(1, 2, 3)和(4, 5, 6)的向量。 在 Mtalab 编辑器中建立 M 文件:LX0703.m a=[1 2 3]; b=[4 5 6]; c=cross(a,b)

结果显示: c=

-3 6 -3

可得垂直于向量(1, 2, 3)和(4, 5, 6)的向量为±(-3, 6, -3) (5)混合积

混合积由以上两函数实现:

例3-4 计算向量 a=(1, 2, 3)、b=(4, 5, 6)和 c=(-3, 6, -3) 的混合积 ()a b c ?×在Matlab 编辑器中建立 M 文件:LX0704.m a=[1 2 3]; b=[4 5 6]; c=[-3 6 -3]; x=dot(a, cross(b, c)) 结果显示:x = 54

注意:先叉乘后点乘,顺序不可颠倒。

3.1.3矩阵的除法

Matlab 提供了两种除法运算:左除(\)和右除(/)。一般情况下,x=a\b 是方程a*x =b ,而x=b/a 是方程x*a=b 的解

例:a=[1 2 3; 4 2 6; 7 4 9]

b=[4; 1; 2];

x=a\b 则显示:x=

-1.5000

2.0000

0.5000

如果 a 为非奇异矩阵,则 a\b 和 b/a 可通过 a 的逆矩阵与 b 阵得到: a\b = inv(a)*b b/a = b*inv(a)

3.1.4矩阵乘方

运算符:^ 运算规则:

(1)当A 为方阵,p 为大于 0 的整数时,A^P 表示A 的P 次方,即A 自乘P 次;p 为小于0数时,A^P 表示A -1的P 次方。

(2)当 A 为方阵,p 为非整数时,则111

^p p nn d A P V V d ?????=??????

O ,其中V 为A 的特

征向量,

为特征值矩阵

11nn d d ??

???

????O ??3.1.5矩阵的转置

运算符:′

运算规则:与线性代数中矩阵的转置相同。

3.1.6矩阵的逆矩阵

例 3-5 求的逆矩阵

123221343A ????

=?

????

方法一:在 Matlab 编辑器中建立M 文件:LX07051.m

A=[1 2 3; 2 2 1; 3 4 3]; inv(A)或 A^(-1)

则结果显示为

ans =

1.0000 3.0000 -

2.0000 -1.5000 -

3.0000 2.5000 1.0000 1.0000 -1.0000

方法二:由增广矩阵进行初等行变换

123100221010343001A ????

=??????

在 Matlab 编辑器中建立 M 文件:LX07052.m

B=[1, 2, 3, 1, 0, 0; 2, 2, 1, 0, 1, 0; 3, 4, 3, 0, 0, 1];

C=rref(B) %化行最简形

X=C(:, 4:6)

在 Matlab 命令窗口建入 LX07052,则显示结果如下:

C =

1.0000 0 0 1.0000 3.0000 -

2.0000

0 1.0000 0 -1.5000 -3.0000 2.5000

0 0 1.0000 1.0000 1.0000 -1.0000

X =

1.0000 3.0000 -

2.0000

-1.5000 -3.0000 2.5000

1.0000 1.0000 -1.0000

这就是A的逆矩阵。

3.1.7方阵的行列式

命令: det 计算行列式的值

例 3-6 计算上例中A的行列式的值

在 Matlab 编辑器中建立 M 文件:LX0706.m

A=[1 2 3; 2 2 1; 3 4 3];

D=det(A)

则结果显示为

D =

2

3.2 符号矩阵的运算

3.2.1符号矩阵的四则运算

Matlab 5.x抛弃了在 4.2 版中为符号矩阵设计的复杂函数形式,把符号矩阵的四则运算简化为与数值矩阵完全相同的运算方式,其运算符为:加(+),减(-)、乘(×)、除(/、\)等或:符号矩阵的和(symadd),差(symsub),乘 (symmul)。

例 3-7 A=sym(‘[1/x,1/(x+1); 1/(x+2); 1/(x+3)]’);

B=sym(‘[x,1;x+2,0]’) ;

C=B-A

D=a\b

则显示:

C=

x-1/x 1-1/(x+1)

x+2-1/(x+2) -1/(x+3)

D=

-6*x-2*x^3-7*x^2 1/2*x^3+x+3/2*x^2

6+2*x^3+10*x^2+14*x -2*x^2-3/2*x-1/2*x^3

3.2.2其他基本运算

符号矩阵的其他一些基本运算包括转置(')、行列式(det)、逆(inv)、秩(rank)、幂(^)和指数(exp 和 expm)等都与数值矩阵相同

3.2.3符号矩阵的简化

符号工具箱中提供了符号矩阵因式分解、展开、合并、简化及通分等符号操作函数。

(1)因式分解

命令:factor 符号表达式因式分解函数

格式:factor(s)

说明:s 为符号矩阵或符号表达式。常用于多项式的因式分解 例3-8将x 6-1分解因式 在 Matlab 命令窗口建入

syms x

factor(x^9-1) 则显示:ans =

(x-1)*(x^2+x+1)*(x 6+x^3+1)

例3-9问入取何值时,齐次方程组

1231231

23(1)2402(3)(1)0

x x x x x x x x x λλλ0??+=??

+?+=??++?=? 有非0解

解:在Matlab 编辑器中建立 M 文件:LX0709.m

symsk

A=[1-k -2 4;2 3-k 1;1 1 1-k]; D=det(A) factor(D) 其结果显示如下:

D =

-6*k+5*k^2-k^3 ans =

-k*(k-2)*(-3+k)

从而得到:当 k=0、k=2或k=3 时,原方程组有非0解。 (2)符号矩阵的展开

命令 expand 符号表达式展开函数 格式:expand(s)

说明:s 为符号矩阵或表达式。常用在多项式的因式分解中,也常用于三角函数,指数函数和对数函数的展开中

例 3-10 将(x+1)3 、sin(x+y)展开

在 Matlab 编辑器中建立 M 文件:LX0710.m syms x y

p=expand((x+1)^3) q=expand(sin(x+y)) 则结果显示为 p =

x^3+3*x^2+3*x+1 q =

sin(x)*cos(y)+cos(x)*sin(y) (3)同类式合并

命令:Collect 合并系数函数

格式:Collect(s,v) 将 s 中的变量 v 的同幂项系数合并。

Collect(s) s—矩阵或表达式,此命令对由命令 findsym 函数返回的默认变量进

行同类项合并。

(4)符号简化

命令:simple 或 simplify 寻找符号矩阵或符号表达式的最简型 格式:Simple(s) s—矩阵或表达式

说明:Simple(s)将表达式s 的长度化到最短。若还想让表达式更加精美,可使用函数Pretty 。

格式:Pretty(s) 使表达式 s 更加精美 例3-11计算行列式

22223333

1111a b c d a b c d a b c d 的值。

在Matlab 编辑器中建立M 文件:LX0711.m syms a b c d

A=[1 1 1 1;a b c d;a^2 b^2 c^2 d^2;a^4 b^4 c^4 d^4]; d1=det(A)

d2=simple(d1) %化简表达式 d1

pretty(d2) %让表达式 d2 符合人们的书写习惯 则显示结果如下: d1 =

b*c^2*d^4-b*d^2*c^4-b^2*c*d^4+b^2*d*c^4+b^4*c*d^2-b^4*d*c^2-a*c^2*d^4+a*

d^^4+a*b^2*d^4-a*b^2*c^4-a*b^4*d^2+a*b^4*c^2+a^2*c*d^4-a^2*d*c^4-a^2*b*d^4+a^2*b*4+a^2*b^4*d-a^2*b^4*c-a^4*c*d^2+a^4*d*c^2+a^4*b*d^2-a^4*b*c^2-a^4*b^2*d+a^4*b^2

d2 =

(-d+c)*(b-d)*(b-c)*(-d+a)*(a-c)*(a-b)*(a+c+d+b) (-d+c)(b-d)(b-c)(-d+a)(a-c)(a-b) (a+c+d+b)

例 3-12 设,, 123221343A ????=??????2153B ??=????132031C ??

??

=??

??

??

求矩阵 X ,使满足:AXB = C

在Matlab 编辑器中建立M 文件:LX0712.m A=[1 2 3;2 2 1;3 4 3]; B=[2,1;5 3]; C=[1 3;2 0;3 1]; X=A\C/B

则结果显示如下: X =

-2.0000 1.0000 10.0000 -4.0000 -10.0000 4.0000

例 3-13 计算

5 cos()sin() sin()cos()

t t

t t

?

??????

在Matlab编辑器中建立M文件:LX0713.m

syms t

A =[cos(t) -sin(t); sin(t), cos(t)];

B=sympow(A, 5) %计算A的5次幂

C=simple(B) %化简

pretty(C)

则显示结果如下

B =

[ cos(t)*(cos(t)*(cos(t)*(cos(t)^2-sin(t)^2)-2*sin(t)^2*cos(t))-sin(t)*(sin(t)*(cos(t)^2-sin(t) ^2)+2*cos(t)^2*sin(t)))-sin(t)*(sin(t)*(cos(t)*(cos(t)^2-sin(t)^2)-2*sin(t)^2*cos(t))+cos(t)*(sin(t)* (cos(t)^2-sin(t)^2)+2*cos(t)^2*sin(t))),

cos(t)*(cos(t)*(-2*cos(t)^2*sin(t)-sin(t)*(cos(t)^2-sin(t)^2))-sin(t)*(cos(t)*(cos(t)^2-sin(t)^2)-2*s in(t)^2*cos(t)))-sin(t)*(sin(t)*(-2*cos(t)^2*sin(t)-sin(t)*(cos(t)^2-sin(t)^2))+cos(t)*(cos(t)*(cos(t) ^2-sin(t)^2)-2*sin(t)^2*cos(t)))]

[ sin(t)*(cos(t)*(cos(t)*(cos(t)^2-sin(t)^2)-2*sin(t)^2*cos(t))-sin(t)*(sin(t)*(cos(t)^2-sin(t) ^2)+2*cos(t)^2*sin(t)))+cos(t)*(sin(t)*(cos(t)*(cos(t)^2-sin(t)^2)-2*sin(t)^2*cos(t))+cos(t)*(sin(t) *(cos(t)^2-sin(t)^2)+2*cos(t)^2*sin(t))),

sin(t)*(cos(t)*(-2*cos(t)^2*sin(t)-sin(t)*(cos(t)^2-sin(t)^2))-sin(t)*(cos(t)*(cos(t)^2-sin(t)^2)-2*si n(t)^2*cos(t)))+cos(t)*(sin(t)*(-2*cos(t)^2*sin(t)-sin(t)*(cos(t)^2-sin(t)^2))+cos(t)*(cos(t)*(cos(t) ^2-sin(t)^2)-2*sin(t)^2*cos(t)))]

C =

[ cos(5*t), -sin(5*t)]

[ sin(5*t), cos(5*t)]

[cos(5t) -sin(5t)]

[ ]

[sin(5t) cos(5t) ]

四、秩与线性相关性

4.1 矩阵和向量组的秩以及向量组的线性相关性。

矩阵 A 的秩是矩阵 A 中最高阶非零子式的阶数;向量组的秩通常由该向量组构成的矩阵来计算。

命令:rank

格式:rank(A) A 为矩阵式向量组构成的矩阵

例 4-1 求向量组1(1223)α=?,2(2413)α=??,3(1203)α=?

4(0623)α=,4(2634)α=?的秩,并判断其线性相关性。

在Matlab 编辑器中建立M 文件:LX0714.m A=[1 -2 2 3;-2 4 -1 3;-1 2 0 3;0 6 2 3;2 -6 3 4]; B=rank(A)

运行后结果如下: B =

3

由于秩为3 <向量个数,因此向量组线性相关。

4.2 向量组的最大无关组

矩阵的初等行变换有三条:

1.交换两行 (第i 、第 j 两行交换) i r r ?j

2.第i 行的 K 倍

i Kr 3.第i 行的 K 倍加到第 j 行上去 j i r Kr +

通过这三条变换可以将矩阵化成行最简形,从而找出列向量组的一个最大无关组,Matlab 将矩阵化成行最简形的命令是:

命令:rref

格式:rref(A) A 为矩阵 例 4-2 求向量组 a1=(1,-2,2,3),a2=(-2,4,-1,3),a3=(-1,2,0,3),a4=(0,6,2,3),a5=(2,-6,3,4)的一个最大无关组。

在 Matlab 编辑器中建立 M 文件:LX0715.m a1=[1 -2 2 3]'; a2=[-2 4 -1 3]';

a3=[-1 2 0 3]';

a4=[0 6 2 3]';

a5=[2 -6 3 4]';

A=[a1 a2 a3 a4 a5]

format rat %以有理格式输出

B=rref(A) %求A的行最简形

运行后的结果为

A =

1 -

2 -1 0 2

-2 4 2 6 -6

2 -1 0 2 3

3 3 3 3 4

B =

1 0 1/3 0 16/9

0 1 2/3 0 -1/9

0 0 0 1 -1/3

0 0 0 0 0 从 B 中可以得到:向量 a1 a2 a4 为其中一个最大无关组

五、线性方程的组的求解

我们将线性方程的求解分为两类:一类是方程组求唯一解或求特解,另一类是方程组求无穷解即通解。可以通过系数矩阵的秩来判断:

若系数矩阵的秩 r=n(n为方程组中未知变量的个数),则有唯一解

若系数矩阵的秩 r

线性方程组的无穷解 =对应齐次方程组的通解+非齐次方程组的一个特解;其特解的求法属于解的第一类问题,通解部分属第二类问题。

5.1 求线性方程组的唯一解或特解(第一类问题)

这类问题的求法分为两类:一类主要用于解低阶稠密矩阵——直接法;另一类是解大型稀疏矩阵——迭代法。

5.1.1 利用矩阵除法求线性方程组的特解(或一个解)

方程:AX=b

解法:X=A\b

例 5-1 求方程组

12

123

234

345

45

56

56

56

56

51

x x

x x x

x x x

x x x

x x

+=

?

?++=

??

1

++=

?

?++=

?

?+=

?

的解

解:在Matlab编辑器中建立M文件:LX0716.m A=[5 6 0 0 0

1 5 6 0 0

0 1 5 6 0

0 0 1 5 6

0 0 0 1 5];

B=[1 0 0 0 1]';

R_A=rank(A) %求秩

X=A\B %求解

运行后结果如下

R_A =

5

X =

2.2662

-1.7218

1.0571 -0.5940 0.3188

这就是方程组的解。 例 5-2 求方程组

123412341

23431334598x x x x x x x x x x x x 40

+??=??

??+=??+??=? 的一个特解

解:在Matlab 编辑器中建立M 文件:LX0717.m A=[1 1 -3 -1;3 -1 -3 4;1 5 -9 -8]; B=[1 4 0]'; X=A\B X = 0 0

-0.5333 0.6000

5.1.2 利用矩阵的 LU 、QR 和 cholesky 分解求方程组的解

1.LU 分解:

LU 分解又称 Gauss 消去分解,可把任意方阵分解为下三角矩阵的基本变换形式(行交换)和上三角矩阵的乘积。即 A=LU ,L 为下三角阵,U 为上三角阵。

则:A*X=b 变成 L*U*X=b

X=U ∴\(L\b) 这样可以大提高运算速度。 命令 [L ,U]=lu (A) 例 5-3 求方程组

1231231

2422321130x x x x x x x x 10+?=??

?+=??+=? 的一个特解

4213121130A ?????

=???????

[2,10,8]'b =

在Matlab 编辑器中建立M 文件:LX0718.m

A=[4 2 -1;3 -1 2;11 3 0]; B=[2 10 8]'; D=det(A) [L,U]=lu(A) X=U\(L\B)

在Matlab命令窗口建入LX0718,回车后显示结果如下:

D =

L =

0.3636 -0.5000 1.0000

0.2727 1.0000 0

1.0000 0 0

U =

11.0000 3.0000 0

0 -1.8182 2.0000

0 0 0.0000

Warning: Matrix is close to singular or badly scaled.

Results may be inaccurate. RCOND =2.018587e-017.

> In D:\Matlab\pujun\lx0720.m at line 4

X =

1.0e+016 *

-0.4053

1.4862

1.3511

说明:结果中的警告是由于系数行列式为零产生的。可以通过 A*X验证其正确性。

2.Cholesky分解

若A为对称正定矩阵,则Cholesky分解可将矩阵A分解成上三角矩阵和其转置的乘积,即:A = R’*R 其中R为上三角阵。

方程 A*X=b 变成R′*R*X=b

所以X=R\(R’\b)

命令 R=chol(A)

3.QR 分解

对于任何长方矩阵A,都可以进行QR分解,其中Q为正交矩阵,R 为上三角矩阵的初等变换形式,即:A=QR

方程 A*X=b 变形成 QRX=b

所以X=R\(Q\b)

命令 [Q, R]=qr(A)

上例中 [Q, R]=qr(A)

X=R\(Q\B)

说明:这三种分解,在求解大型方程组时很有用。其优点是运算速度快、可以节省磁盘空间、节省内存。

5.2 求线性齐次方程组的通解

在 Matlab 中,函数 null用来求解零空间,即满足 A·X=0 的解空间,实际上是求出解空间的一组基(基础解系)。

格式:z = null % z 的列向量为方程组的正交规范基,满足 Z’×Z=1

z = null(A,’r’) % z 的列向量是方程 AX=0 的有理基

例 5-4 求解方程组的通解:

Matlab实验指导书

实验一 Matlab使用方法和程序设计 一、实验目的 1、掌握Matlab软件使用的基本方法; 2、熟悉Matlab的数据表示、基本运算和程序控制语句; 3、熟悉Matlab绘图命令及基本绘图控制; 4、熟悉Matlab程序设计的基本方法。 二、实验内容 1、帮助命令 2、矩阵运算 (1)矩阵的乘法和乘方 已知A=[1 2;3 4]:B=[5 5;7 8]:求A^2*B ( 2 )矩阵除法 已知A=[1 2 3:4 5 6:7 8 9]:B=[1 0 0:0 2 0:0 0 3],求矩阵左除A\B,右除A/B。 ( 3 )矩阵的转置及共轭转置 已知A=[5+i,2-i,1;6*i,4,9-i],求该复数矩阵的转置A',共轭转置A.' ( 4 )使用冒号选出指定元素 已知:A=[1 2 3:4 5 6:7 8 9];求A中第3列前2个元素;A中第2、3行元素。 ( 5 )方括号[] 用magic函数生成一个4阶魔术矩阵,删除该矩阵的第四列 3、多项式 (1)求多项式P(x)=x3-2x-4的根 ( 2 )已知A=[1.2 3 5 0.9;5 1.7 5 6;3 9 0 1;1 2 3 4].,构造多项式,并计算多项式值为20的解。 4、基本绘图命令 ( 1 ) 绘制余弦曲线 ] 2,0[ ), cos(π ∈ =t t y 。 ( 2 ) 在同一坐标系中绘制曲线 ] 2,0[ ), 5.0 sin( ), 25 .0 cos( yπ ∈ - = - =t t y t 5、基本绘图控制 绘制 ] 4,0[π 区间上的y=10sint曲线,并要求: (1)线形为点划线,颜色为红色,数据点标记为加号; (2)坐标轴控制:显示范围,刻度线,比例,网络线; (3)标注控制:坐标轴名称,标题,相应文本。 6、基本程序设计 (1)编写命令文件:计算1+2+....+n<2000时的最大n值; (2)编写函数文件:分别用n和which循环结构编写程序,求2的0到n次幂的和. n=input('输入正数n:') ji=1: for i=1:n; ji=ji+2^i: end ji input('输入正数n:') ji-1:i-1: While i<=n ji=ji+2^i; i=i+1; end ji (3)如果想对一个变量x赋值,当从键盘输入y或Y时,x自动赋为1;当从键盘输入n或N时,x自 动赋为0;输入其他字符时终止程序。 k=input('shuruX:'.'s'): if k=='y' k=='Y' x=1 ; else k=='n' k=='N' x=0; else ruturn end >> n=input('输入正数n:') 输入正数n:20 n =20

用MATLAB解决线性代数问题实验报告

实验三使用MATLAB解决线性代数问题学院:数计学院班级:1003班姓名:黄晓丹学号:1051020144 实验目的: 学习MATLAB有关线性代数运算的指令,主要学习运用MATLAB解决矩阵除法,线性方程组的通解,矩阵相似 对角化问题,以及解决投入产出分析等应用问题。 实验内容: 矩阵转置:A=[1 2;3 4];B=[4 3;2 1]; >> A',B' ans = 1 3 2 4 ans = 4 3 3 1 矩阵加减:A-B ans= -3 -1 1 3 矩阵乘法:A*B,A.*B(数组乘法)||比较矩阵乘法与数组乘法的区别ans= 8 5 20 13 ans= 4 6 6 4 矩阵除法:A\B,B./A ans=

-6 -5 5 4 ans= 4 1.5 0.6667 0.25 特殊矩阵生成:zeros(m,n)||生成m行n列的矩阵 ones(m,n)||生成m行n列的元素全为一的矩阵 eye(n)||生成n阶单位矩阵 rand(m,n)||生成m行n列[0 ,1]上均匀分布随 机数矩阵 zeros(2,3) ans = 0 0 0 0 0 0 >> ones(3,3) ans = 1 1 1 1 1 1 1 1 1 >> eye(3)

ans = 1 0 0 0 1 0 0 0 1 >> rand(2,4) ans = Columns 1 through 3 0.9501 0.6068 0.8913 0.2311 0.4860 0.7621 Column 4 0.4565 0.0185 矩阵处理:trace(A)||返回矩阵的迹 diag(A)||返回矩阵对角线元素构成的向量 tril(A)||提取矩阵的下三角部分 triu(A)||提取矩阵的上三角部分 flipud(A)||矩阵上下翻转 fliplr(A)||矩阵左右翻转 reshape(A,m,n)||将矩阵的元素重排成m行n列矩阵A=[1 2 3;4 5 6;7 8 9]; >> t=trace(A),d=diag(A),u=triu(A)

MATLAB实验指导书

实验一MATLAB 工作环境熟悉及简单命令的执行 一、 实验目的:熟悉MATLAB 的工作环境,学会使用MATLAB 进行一些简单的运算。 二、 实验内容:MATLAB 的启动和退出,熟悉MATLAB 的桌面(Desktop ),包括菜单 (Menu )、工具条(T oolbar )、命令窗口(Command Window)、历史命令窗口、工作 空间(Workspace)等;完成一些基本的矩阵操作;学习使用在线帮助系统。 三、实验步骤: 1、启动MATLAB ,熟悉MATLAB 的桌面。 2、在命令窗口执行命令完成以下运算,观察workspace 的变化,记录运算结果。 (1)(365-52?2-70)÷3; (2)area=pi*2.5^2; (3)已知x=3,y=4,在MATLAB 中求z : ()23 2y x y x z -= ; (4)将下面的矩阵赋值给变量m1,在workspace 中察看m1在内存中占用的字节数。 m1=???? ? ???? ???11514412679810115133216 执行以下命令 >>m1( 2 , 3 ) >>m1( 11 ) >>m1( : , 3 ) >>m1( 2 : 3 , 1 : 3 ) >>m1( 1 ,4 ) + m1( 2 ,3 ) + m1( 3 ,2 ) + m1( 4 ,1) (5)执行命令>>help abs 查看函数abs 的用法及用途,计算abs( 3 + 4i ); (6)执行命令 >>x=0:0.1:6*pi; >>y=5*sin(x); >>plot(x,y) (7)运行MATLAB 的演示程序,>>demo ,以便对MATLAB 有一个总体了解。 四、思考题 1、以下变量名是否合法?为什么? (1)x2; (2)3col ; (3)_row ; (4)for ;

Matlab线性代数实验指导书

Matlab线性代数实验指导书 理学院线性代数课程组 二零零七年十月

目录 一、基础知识 (1) 1.1、常见数学函数 (1) 1.2、系统在线帮助 (1) 1.3、常量与变量 (2) 1.4、数组(矩阵)的点运算 (3) 1.5、矩阵的运算 (3) 二、编程 (4) 2.1、无条件循环 (4) 2.2、条件循环 (5) 2.3、分支结构 (5) 2.4、建立M文件 (6) 2.5、建立函数文件 (6) 三、矩阵及其运算 (7) 3.1、矩阵的创建 (7) 3.2、符号矩阵的运算 (11) 四、秩与线性相关性 (14) 4.1、矩阵和向量组的秩以及向量组的线性相关性 (14) 4.2、向量组的最大无关组 (14) 五、线性方程的组的求解 (16) 5.1、求线性方程组的唯一解或特解(第一类问题) (16) 5.2、求线性齐次方程组的通解 (18) 5.3、求非齐次线性方程组的通解 (19) 六、特征值与二次型 (22) 6.1、方阵的特征值特征向量 (22) 6.2、正交矩阵及二次型 (23)

一、基础知识 1.1常见数学函数 函数数学计算功能函数数学计算功能 abs(x) 实数的绝对值或复数的幅值floor(x) 对x朝-∞方向取整acos(x) 反余弦arcsinx gcd(m,n) 求正整数m和n的最大公约数acosh(x) 反双曲余弦arccoshx imag(x) 求复数x的虚部angle(x) 在四象限内求复数x的相角lcm(m,n)求正整数m和n的最小公倍 自然对数(以e为底数) asin(x) 反正弦arcsinx log(x) 常用对数(以 10 为底数) asinh(x) 反双曲正弦arcsinhx log10(x) atan(x) 反正切arctanx real(x) 求复数 x 的实部atan2(x,y) 在四象限内求反正切rem(m,n) 求正整数m和n的m/n之余数atanh(x) 反双曲正切arctanhx round(x) 对x四舍五入到最接近的整数 符号函数:求出 x 的符号ceil(x) 对x朝+∞方向取整 sign(x) conj(x) 求复数x的共轭复数 sin(x) 正弦sinx 反双曲正弦sinhx cos(x) 余弦cosx sinh(x) cosh(x) 双曲余弦coshx sqrt(x) 求实数x的平方根exp(x) 指数函数e x tan(x) 正切tanx fix(x) 对 x 朝原点方向取整 tanh(x) 双曲正切tanhx 如:输入 x=[-4.85 -2.3 -0.2 1.3 4.56 6.75],则: ceil(x)= -4 -2 0 2 5 7 fix(x) = -4 -2 0 1 4 6 floor(x) =-5 -3 -1 1 4 6 round(x) = -5 -2 0 1 5 7 1.2 系统的在线帮助 1.2.1 help 命令: 1.当不知系统有何帮助内容时,可直接输入 help以寻求帮助: >> help(回车) 2.当想了解某一主题的内容时,如输入: >> help syntax (了解Matlab的语法规定) 3.当想了解某一具体的函数或命令的帮助信息时,如输入: >> help sqrt (了解函数sqrt的相关信息) 1.2.2 lookfor 命令 现需要完成某一具体操作,不知有何命令或函数可以完成,如输入: >> lookfor line (查找与直线、线性问题有关的函数) 1.3 常量与变量

matlab实验2MATLAB基础知识

实验2 MATLAB基础知识 一、实验目的 1.熟悉MATLAB的数据类型 2.熟悉MATLAB的基本矩阵操作 3.熟悉MATLAB的运算符 4.熟悉MATLAB的字符串处理 二、实验内容 1.创建结构体DataTypes,属性包含MATLAB支持的所有数据类型,并通过赋值构 造结构体二维数组。 DataTypes.char=char([65]); DataTypes.string='hello'; DataTypes.int=100; DataTypes.single=1.560 DataTypes = char: 'A' string: 'hello' int: 100 single: 1.5600 >> DataTypes(2).char=char([66]); DataTypes(2).string='kugou'; DataTypes(2).int=200; DataTypes(2).single=3.14 DataTypes = 1x2 struct array with fields: char string int single 2.用满矩阵和稀疏矩阵存储方式分别构造下述矩阵。 A=

答: A = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 B = A = 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 A = 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 A = 0 1 0 0 1 1 0 0 0 0 1 0 0 0 0 1 A = 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 1

matlab基础实验

实验一 MATLAB基础知识 一、实验目的 1.熟练掌握Matlab的启动与退出; 2. 熟悉Matalb的命令窗口,常用命令和帮助系统; 3. 熟悉Matalb的数据类型; 4. 熟悉Matlab的基本矩阵操作,运算符和字符串处理 二、实验设备 1.方正电脑 2.MATLAB软件 三、实验内容 1. 已知矩阵 A=[3 4 -1 1 -9 10;6 5 0 7 4 -16;1 -4 7 -1 6 -8;2 -4 5 -6 12 -8;-3 6 -7 8 -1 1;8 -4 9 1 3 0] 写出完成下列操作的命令: (1) 将矩阵A的第2-5行中第1,3,5列元素赋给矩阵B; (2) 删除矩阵A的第7号元素; (3) 将矩阵A的每个元素加上30; (4) 求矩阵A的大小和维数; (5) 将矩阵A的右下角3*2矩阵构成矩阵C; (6) 输出[-5,5]范围内的所有元素; 程序: A=[3 4 -1 1 -9 10;6 5 0 7 4 -16;1 -4 7 -1 6 -8;2 -4 5 -6 12 -8;-3 6 -7 8 -1 1;8 -4 9 1 3 0] %(1) B=A(2:5,[1 3 5]) %(2) A2=A; A2(7)=[] %(3) A3=A+30 %(4) length(A) size(A) %(5) C=A(end-2:end,end-1:end) %(6) A6=A.*(A>=-5 & A<=5) 结果: A =

3 4 -1 1 -9 10 6 5 0 7 4 -16 1 -4 7 -1 6 -8 2 -4 5 -6 12 -8 -3 6 -7 8 -1 1 8 -4 9 1 3 0 B = 6 0 4 1 7 6 2 5 12 -3 -7 -1 A2 = Columns 1 through 7 3 6 1 2 -3 8 5 Columns 8 through 14 -4 -4 6 -4 -1 0 7 Columns 15 through 21 5 -7 9 1 7 -1 - 6 Columns 22 through 28 8 1 -9 4 6 12 -1 Columns 29 through 35 3 10 -16 -8 -8 1 0 A3 = 33 34 29 31 21 40 36 35 30 37 34 14

Matlab 使用之线性代数综合实例讲解

一、上机目的 1、培养学生运用线性代数的知识解决实际问题的意识、兴趣和能力; 2、掌握常用计算方法和处理问题的方法; 二、上机内容 1、求向量组的最大无关组; 2、解线性方程组; 三、上机作业 1、设A=[2 1 2 4; 1 2 0 2; 4 5 2 0; 0 1 1 7]; 求矩阵A列向量组的一个最大无关组. >> A=[2 1 2 4;1 2 0 2;4 5 2 0;0 1 1 7] A = 2 1 2 4 1 2 0 2 4 5 2 0 0 1 1 7 >> rref(A) ans = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 所以矩阵A的列向量组的一个最大无关组就是它本身; 2、用Matlab解线性方程组 (1) >> A=[2 4 -6;1 5 3;1 3 2] A = 2 4 -6 1 5 3 1 3 2 >> b=[-4;10;5]

b = -4 10 5 >> x=inv(A)*b x = -3.0000 2.0000 1.0000 >> B=[3 41 -62;4 50 3;11 38 25] B = 3 41 -62 4 50 3 11 38 25 >> c=[-41;100;50] c = -41 100 50 >> x=inv(B)*c x = -8.8221 2.5890 1.9465 3、(选作)减肥配方的实现 设三种食物每100克中蛋白质、碳水化合物和脂肪的含量如下表,表中还给出了20世纪80年代美国流行的剑桥大学医学院的简捷营养处方。现在的问题是:如果用这三种食物作为每天的主要食物,那么它们的用量应各取多少才能全面准确地实现这个营养要求? 四、上机心得体会

matlab实验二

实验2 MATLAB数值计算、符号运算功能 一、实验目的 1、掌握建立矩阵、矩阵分析与处理的方法。 2、掌握线性方程组的求解方法。 3、掌握数据统计和分析方法、多项式的常用运算。 4、掌握求数值导数和数值积分、常微分方程数值求解、非线性代数方程数值求解的方法。 5、掌握定义符号对象的方法、符号表达式的运算法则及符号矩阵运算、符号函数极限及导数、符号函数定积分和不定积分的方法。 二、预习要求 (1)复习4、5、6章所讲内容; (2)熟悉MATLAB中的数值计算和符号运算的实现方法和主要函数。 三、实验内容 1、已知 29618 20512 885 A -?? ?? =?? ?? - ?? ,求A的特征值及特征向量,并分析其数学意义。 >> A=[-29,6,18;20,5,12;-8,8,5]; >> [V,D]=eig(A) V = 0.7130 0.2803 0.2733 -0.6084 -0.7867 0.8725 0.3487 0.5501 0.4050 D = -25.3169 0 0 0 -10.5182 0 0 0 16.8351 V为A的特征向量,D为A的特征值,3个特征值是-25.3169、10.5182和16.8351。 >> A*V ans = -18.0503 -2.9487 4.6007 15.4017 8.2743 14.6886 -8.8273 -5.7857 6.8190 >> V*D

ans = -18.0503 -2.9487 4.6007 15.4017 8.2743 14.6886 -8.8273 -5.7857 6.8190 经过计算,A*V=V*D 。 2、 不用rot90函数,实现方阵左旋90°或右旋90°的功能。例如,原矩阵为A ,A 左旋后得到B ,右旋后得到C 。 147102581136912A ????=??????,101112789456123B ??????=??????,321654987121110B ??????=?????? 提示:先将A 转置,再作上下翻转,则完成左旋90°;如将A 转置后作左右翻转,则完成右旋转90°,可用flipud 、fliplr 函数。 >> a=[1 4 7 10;2 5 8 11;3 6 9 12] a= 1 4 7 10 2 5 8 11 3 6 9 12 >> B=rot90(a) B = 10 11 12 7 8 9 4 5 6 1 2 3 >>C= rot90(s,3) C= 3 2 1 6 5 4 9 8 7 12 11 10

MATLAB)课后实验答案[1]

实验一 MATLAB 运算基础 1. 先求下列表达式的值,然后显示MATLAB 工作空间的使用情况并保存全部变量。 (1) 0 12 2sin 851z e =+ (2) 21ln(2 z x =,其中2 120.45 5i x +??=? ?-?? (3) 0.30.330.3sin(0.3)ln , 3.0, 2.9,,2.9,3.022a a e e a z a a --+= ++=--L (4) 2242011 122123t t z t t t t t ?≤

4. 完成下列操作: (1) 求[100,999]之间能被21整除的数的个数。 (2) 建立一个字符串向量,删除其中的大写字母。解:(1) 结果: (2). 建立一个字符串向量例如: ch='ABC123d4e56Fg9';则要求结果是:

实验二 MATLAB 矩阵分析与处理 1. 设有分块矩阵33322322E R A O S ?????? =? ??? ,其中E 、R 、O 、S 分别为单位矩阵、随机矩阵、零矩阵和对角阵,试通过数值计算验证2 2 E R RS A O S +?? =???? 。 解: M 文件如下; 5. 下面是一个线性方程组: 1 231 1 12340.951110.673450.521114 5 6x x x ?? ??????????????=??? ??????????????????? (1) 求方程的解。 (2) 将方程右边向量元素b 3改为0.53再求解,并比较b 3的变化和解的相对变化。 (3) 计算系数矩阵A 的条件数并分析结论。 解: M 文件如下: 123d4e56g9

线性代数Matlab开卷考试

线性代数开卷考试题目Matlab解析过程: 1.习题1第4题(1) >> A=[1,2,0,-1;-1,-4,1,2;1,-4,3,1;2,-10,7,3];B=[-1,3,1,4]'; >> C=[A,B]; >> rank(A) %求系数矩阵的秩 ans = 3 >> rank(C) %求增广矩阵的秩 ans = 3 >> rref(C) %用rref()函数求解,最后一列即为解 ans = 1.0000 0 1.0000 0 1.0000 0 1.0000 -0.5000 0 1.0000 0 0 0 1.0000 4.0000 0 0 0 0 0 说明:如果用用除法求X的值或者用inv()函数求解会出现警告:Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 4.440892e-18. 而且两者的计算结果都为x = 4.0000 -0.5000 -3.0000 4.0000 原因是:矩阵奇异!所以不能求逆!结果可能不准确!必须换成不用求逆的算法 查阅资料如下: 奇异矩阵的判断方法:首先,看这个矩阵是不是方阵(即行数和列数相等的矩阵。若行数和列数不相等,那就谈不上奇异矩阵和非奇异矩阵)。然后,再看此方阵的行列式|A|是否等于0,若等于0,称矩阵A为奇异矩阵;若不等于0,称矩阵A为非奇异矩阵。同时,由|A|≠0可知矩阵A可逆,这样可以得出另外一个重要结论:可逆矩阵就是非奇异矩阵,非奇异矩阵也是可逆矩阵。如果A为奇异矩阵,则AX=0有无穷解,AX=b有无穷解或者无解。如果A为非奇异矩阵,则AX=0有且只有唯一零解,AX=b有唯一解。 如果A(n×m)为奇异矩阵(singular matrix)<=> A的秩Rank(A) A满秩,Rank(A)=n. 2.(1)当a取值为学号时 >> A=[1,-1,-2,3;1,-3,-6,2;1,5,0,-10;3,1,7,4];B=[0,-1,112,8]'; % 当a取值为学号时>> C=[A,B]; >> rank(A) %求系数矩阵的秩 ans =

MATLAB基础及应用实验指导书

MATLAB基础及应用实验指导书

MATLAB基础及应用课程实验指导书 实验一软件环境和基本操作熟悉 一、实验目的 ①熟悉MATLAB 主界面,并学会简单的菜单操作。 ②学会简单的矩阵输入与信号输入。 ③掌握部分绘图函数。 二、实验内容 熟悉MATLAB操作环境,通过简单操作熟悉MATLAB的基本使用方法。 三、实验要求与步骤 1、用户第一次使用MATLAB 时,建议首先在屏幕上键入demo 命令,它将启动MATLAB 的演试程序,用户可在此演示程序中领略MATLAB 所提供的强大的运算与绘图功能。也可以键入help 进行进一步了解。 MATLAB 启动界面如图所示: MATLAB 语言最基本的赋值语句结构为:变量名列表= 表达式。表达式由操作符或其它字符,函数和变量名组成,表达式的结果为一个矩阵,显示在屏幕上,同时输送到一个变量中并存放于工作空间中以备调用。如果变量名和“= ”省略,则ans 变量将自动建立,例如键入:1900/81 ,得到输出结果:ans =23.4568 。 MATLAB 中变量命名的原则要求必须以英文字母开头,文件夹名字中可以

还包括、下划线和数字,不要使用其他的字符,更不要单纯使用数字或者中文名命名,有时在运行MATLAB 中一些莫名的错误可能就是不规范的命名引起的。这种规则包括将来为自己编写的脚本文件、函数文件命名以及为使用的变量命名也应遵循这个规则。 2、用户工作目录和当前目录的建立和设置 1)为管理方便,每个用户在使用MATLAB 前,尽量为自己建立一个专门的工作目录,即“用户目录”,用来存放自己创建应用文件。例如首先打开资源管理器,在E 驱动器下可以根据自己喜好建立一个新文件夹,但应注意:该文件夹必须以英文开头,文件夹名字中可以包括字母、下划线和数字,不要使用其他的字符,更不要单纯使用数字或者中文名命名,有时在运行MATLAB 中一些莫名的错误可能就是不规范的命名引起的,这与MATLAB 中为变量和文件名命名原则是一致的。尽管MATLAB\work 允许用户存放用户文件,但最好把它仅作为临时工作目录来使用。 2)为了用户运行方便,在开始工作前可把用户定义的目录设置为当前目录,方法是可直接在MATLAB 命令窗口桌面上方通过目录设置栏来实现。 3)把自己的工作目录加到MATLAB 搜索路径上,这样可以在任何情况下方便地调用自己的编写文件。MATLAB 工作时,基本搜索过程为:首先在工作空间,即MATLAB 内存中进行检查,看输入的指令是不是变量;如不是,则检查输入指令是不是内建函数(比如sin 函数等);如不是,则在当前目录上,检查是否有与输入指令相同的M 文件存在;如还没有,则在MATLAB 定义的搜索路径其他目录中,检查是否有该M 文件存在。设置方法是通过File 菜单下设置路径对话框进行。 3、熟悉简单的矩阵输入 1)从屏幕上输入矩阵A=[1 2 3 ;4 5 6;7 8 9] 回车 A=[1,2,3;4,5,6;7,8,9] 回车 观察输出结果。 2)试用回车代替分号,观察输出结果。 3)输入size(A) ,观察结果。 4)输入矩阵B=[9,8,7;6,5,4;3,2,1];回车 输入矩阵C=[4,5,6;7,8,9;1,2,3];回车,然后分别键入 A B C 回车观察结果。 5)选择File | new 菜单中的M-file ,输入B=[9,8,7;6,5,4;3,2,1] ;保存为

matlab实验4MATLAB基本编程

实验4 MATLAB 基本编程 一、实验目的 1. 熟悉MATLAB 的脚本编写 2. 熟悉MATLAB 的函数编写 3. 熟悉MATLAB 的变量使用 4. 熟悉MATLAB 的程序控制结构 二、实验内容 1. 分别选用if 或switch 结构实现下述函数表示。 -1 x ≤-a f(x)= x/a -a ≤<--≤<≤<--≤=d x d x c d x d c c x b b x a a x a b a x x f 0)(11)(10)(

昆明理工大学MATLAB实验指导书(第二次实验)

************************ MATLAB上机指导书 ************************ 昆明理工大学机电学院 彭用新 2015年3月

实验三符号计算 一、操作部分:在命令窗口执行命令完成以下运算,记录运算结果。 1.findsym:帮助我们获取系统定义的自变量 f= sym('sin(a*x+b*y)'); findsym(f) 2.numden(获取分子分母), sym2poly,(获取多项式时系数)poly2sym(根据多项式系 数获得符号表达式) [n,d]=numden(sym('x*x+y')+sym('y^2')) p=sym('2*x^3+3*x^2+4'); sym2poly(p) x=[2,3,0,4]; poly2sym(x) 3. collect :合并同类项;expand:展开多项式;horner: 分解成嵌套形式;factor:因式 分解;simplify: 对表达式化简 syms x y; collect(x^2*y+y*x-x^2-2*x) collect((x+y)*(x^2+y^2+1), y) syms x y; expand((x-2)*(x-4)) syms x;horner(x^3-6*x^2+11*x-6) syms x;factor(x^3-6*x^2+11*x-6) syms x;simplify((x^2+5*x+6)/(x+2)) 4. finverse :求得符号函数的反函数。 syms x y; finverse(1/tan(x)) f= x^2+y; finverse(f,y) finverse(f) https://www.wendangku.net/doc/146173244.html,pose 求符号函数的复合函数 syms x y; f = 1/(1 + x^2); g = sin(y); compose(f,g) 6. subs :表达式替换。 syms a b;subs(a+b,a,4)

实验一 Matlab基本操作(2016)

实验一 MATLAB 基本操作 一、实验目的 1. 学习和掌握MA TLAB 的基本操作方法 2. 掌握命令窗口的使用 3. 熟悉MATLAB 的数据表示、基本运算 二、实验内容和要求 1. 实验内容 1) 练习MATLAB7.0或以上版本 2) 练习矩阵运算与数组运算 2. 实验要求 1) 每位学生独立完成,交实验报告 2) 禁止玩游戏! 三、实验主要软件平台 装有MATLAB7.0或以上的PC 机一台 四、实验方法、步骤及结果测试 1. 实验方法:上机练习。 2. 实验步骤: 1) 开启PC ,进入MA TLAB 。 2) 使用帮助命令,查找sqrt 函数的使用方法 答: help sqrt 3) 矩阵、数组运算 a) 已知 ??????????=987654321A ,???? ??????=963852741B ,求)2()(A B B A -?+ 答: A=[1, 2, 3; 4, 5, 6; 7, 8, 9]; B=[1, 4, 7; 2, 5, 8; 3, 6, 9]; (A+B)*(2*B-A) b) 已知?? ????-=33.1x ,??????=π24y ,求T xy ,y x T c) 已知??????????=987654321A ,???? ??????=300020001B ,求A/B, A\B. d) 已知???? ??????=987654321A ,求:(1) A 中第三列前两个元素;(2) A 中所有第二行元素;(3) A 中四个角上的元素;(4) 交换A 的第1、3列。(5) 交换A 的第1、2行。(6) 删除A 的第3列。

e) 已知[]321=x ,[]654=y ,求:y x *.,y x /.,y x \.,y x .^, 2.^x ,x .^2。 f) 给出x=1,2,…,7时,x x sin 的值。 3)常用的数学函数 a )随机产生一个3x3的矩阵A ,求:(1) A 每一行的最大、最小值,以及最大、最小值所在的列;(2) A 每一列的最大、最小值,以及最大、最小值所在的行;(3) 整个矩阵的最大、最小值;(4) 每行元素之和;(5) 每列元素之和;(6) 每行元素之积;(7) 每列元素之积。 b) 随机产生两个10个元素的向量x ,y 。(1) 求x 的平均值、标准方差。(2) 求x ,y 的相关系数。(3)对x 排序,并记录排序后元素在原向量中的位置。 4) 字符串操作函数 建立一个字符串向量(如‘ABc123d4e56Fg9’),然后对该向量做如下处理: (1) 取第1~5个字符组成的子字符串。 (2) 将字符串倒过来重新排列。 (3) 将字符串中的小写字母变成相应的大写字母,其余字符不变。 (4) 统计字符串中小写字母的个数。

MATLAB实验指导书(学生定稿)

实验一 MATLAB语言平台及基本运算 一、实验目的 1、熟悉MATLAB基本的操作界面。 2、掌握MATLAB中变量、数组、向量等对象的生成方法。 3、掌握矩阵的生成和基本运算方法。 4、掌握MATLAB中的常用绘图命令使用方法 二、实验设备 计算机,MATLAB语言环境 三、实验指导原理 1、常见数学函数 如:输入 x=[-4.85 -2.3 -0.2 1.3 4.56 6.75],则 ceil(x)= -4 -2 0 2 5 7 fix(x) = -4 -2 0 1 4 6 floor(x) = -5 -3 -1 1 4 6 round(x) = -5 -2 0 1 5 7 系统的在线帮助 (1) help 命令: 1).当不知系统有何帮助内容时,可直接输入 help以寻求帮助: >> help(回车) 2).当想了解某一主题的内容时,如输入: >> help syntax (了解 Matlab 的语法规定) 3).当想了解某一具体的函数或命令的帮助信息时,如输入: >> help sqrt (了解函数 sqrt 的相关信息)

(2) lookfor 命令 现需要完成某一具体操作,不知有何命令或函数可以完成,如输入: >> lookfor line (查找与直线、线性问题有关的函数) 3、常量与变量 系统的变量命名规则:变量名区分字母大小写;变量名必须以字母打头,其后 可以是任意字母,数字,或下划线的组合。此外,系统内部预先定义了几个有特殊意义和用途的变量,见下表: (1)数值型向量(矩阵)的输入 1).任何矩阵(向量),可以直接按行方式输入每个元素:同一行中的元素用逗号(,)或者用空格符来分隔;行与行之间用分号(;)分隔。所有元素处于一方括号([ ]内;例1: >> Time = [11 12 1 2 3 4 5 6 7 8 9 10] >> X_Data = [2.32 3.43;4.37 5.98] 2).系统中提供了多个命令用于输入特殊的矩阵: 上面函数的具体用法,可以用帮助命令 help 得到。如:help zeros ZEROS Zeros array. ZEROS(N) is an N-by-N matrix of zeros. ZEROS(M,N) or ZEROS([M,N]) is an M-by-N matrix of zeros.等等 4、数组(矩阵)的点运算 运算符:+(加)、-(减)、./(右除)、.\(左除)、.^(乘方), 例4: >> g = [1 2 3 4];h = [4 3 2 1]; >> s1 = g + h, s2 = g.*h, s3 = g.^h, s4 = g.^2, s5 = 2.^h 5、矩阵的运算

论将MATLAB融入《线性代数》

论将MA TLAB融入《线性代数》 郑成勇 (五邑大学数学与计算科学学院广东江门 529020) 摘要探讨如何将ATLAB引入《线性代数》课程,提出了一些个人的看法和主张。 关键词MATLAB线性代数 中图分类号:G64 文献标识码:A Introducing MA TLAB Into Linear Algebra Zheng Chengyong (Dept. of Mathematics & Physics, Wuyi University, Jiangmen , Guangdong ,529020) Abstract In this paper, we discuss how to introduce MA TLAB into course of linear algebra, and put forward some personal ideas and opinions. Keyword MATLAB, Linear Algebra 一、当前主流线性代数教材存在的不足 《线性代数》(以下简称《线代》) 同济版教材[1],书写简洁、体系完整,知识前后联系紧密,环环相扣。从数学角度而言,该书堪称经典,非常符合一般数学老师要求,而且配套的ppt课件也做的很好,也就不难解释该教材为何在全国采用率如此之高了。 但因为该书是给工科学生用的,对工科学生而言,其内容有些过于偏重理论,缺乏必要的应用实例,缺乏与工程实际及工科专业课的联系。如缺乏对工程实际中广泛涉及的超定方程的讨论,对工程应用中较少涉及的欠定方程组的通解问题花费较多笔墨。而且,由于过于强调内容体系的完整以及知识间的逻辑联系,第一章从古古怪怪的逆序数,引出古古怪怪的行列式的定义,到行列式的性质、克拉默法则,还有不少的习题,这需要花费较多的学时来讲授。但行列式不应该是《线代》的重点,《线代》的核心应该是矩阵、线性方程组等,主轴是矩阵的初等行变换。从行列式开始引入不符合先易后难的认知规律,容易使初学者误认为行列式是重点,不利于学生把握《线代》的重点和主轴。 另外,现在流行的教材仍然没有引入科学计算软件,导致学生学完了该课程也难以求解4阶或4阶以上的矩阵问题,无法实现该课程应有的对学生科学计算能力的培养以及该课程在后续课程中的应用。二、引入MATLAB的必要性 1、更新教学内容,加强课程工科特性,需要引入MATLAB 工科《线代》是面向工科学生,内容必须具有工科特性。要使内容具有工科特性,必须适当地引入具体的应用实例。而一般的实际问题,靠手工计算是不现实的,必须借助必要的科学计算软件。而MA TLAB是目前国内外最流行的标准的科学计算软件,借助MA TLAB,许多工程应用问题都可以利用线性代数的有关知识进行建模求解,从而增强《线代》的工科特性。有了实际的应用背景,学生才会真正体会到线性代数“有用”,并掌握具体的应用技巧。 2、提高学生科学计算能力,需要引入MATLAB 科学计算能力是理工科学生理应具备的一种重要能力。那么,什么是科学计算能力?学生的科学计算能力从何而来? 科学计算能力是指的利用现代计算工具(包括硬件和软件)解决教学和科研中计算问题的能力[2]。既然科学计算能力要求学生掌握现代的计算工具,而MA TLAB是目前国内外最流行的标准的科学计算软,那么我们就没有理由仍坚持传统偏重理论的以笔算为主的《线代》课程教学。应将MA TLAB 融入《线代》课程教学中去,让学生在掌握一般的原理方法的基础上,将学生从低级繁琐的初等行列变换中解脱出来,重点培养学

南邮MATLAB数学实验答案(全)

第一次练习 教学要求:熟练掌握Matlab 软件的基本命令和操作,会作二维、三维几何图形,能够用Matlab 软件解决微积分、线性代数与解析几何中的计算问题。 补充命令 vpa(x,n) 显示x 的n 位有效数字,教材102页 fplot(‘f(x)’,[a,b]) 函数作图命令,画出f(x)在区间[a,b]上的图形 在下面的题目中m 为你的学号的后3位(1-9班)或4位(10班以上) 1.1 计算30sin lim x mx mx x →-与3 sin lim x mx mx x →∞- syms x limit((902*x-sin(902*x))/x^3) ans = 366935404/3 limit((902*x-sin(902*x))/x^3,inf) ans = 0 1.2 cos 1000 x mx y e =,求''y syms x diff(exp(x)*cos(902*x/1000),2) ans = (46599*cos((451*x)/500)*exp(x))/250000 - (451*sin((451*x)/500)*exp(x))/250 1.3 计算 22 11 00 x y e dxdy +?? dblquad(@(x,y) exp(x.^2+y.^2),0,1,0,1) ans = 2.1394 1.4 计算4 2 2 4x dx m x +? syms x int(x^4/(902^2+4*x^2)) ans = (91733851*atan(x/451))/4 - (203401*x)/4 + x^3/12 1.5 (10)cos ,x y e mx y =求 syms x diff(exp(x)*cos(902*x),10) ans = -356485076957717053044344387763*cos(902*x)*exp(x)-3952323024277642494822005884*sin(902*x)*exp(x) 1.6 0x =的泰勒展式(最高次幂为4).

实验一:MATLAB软件入门(2015版)

实验一:MATLAB 软件入门 一、 实验目的及意义 [1] 熟悉MATLAB 软件的用户环境; [2] 了解MATLAB 软件的一般目的命令; [3] 掌握MATLAB 数组操作与运算函数; [4] 掌握MATLAB 软件的基本绘图命令; [5] 掌握MATLAB 语言的几种循环、条件和开关选择结构。 通过该实验的学习,使学生能灵活应用MATLAB 软件解决一些简单问题,能借助MATLAB 软件的绘图功能,对函数的特性进行探讨,广泛联想,大胆猜想,发现进而证实其中的规律。 二、实验内容 1.MATLAB 软件的数组操作及运算练习; 2.直接使用MATLAB 软件进行作图练习; 3.用MATLAB 语言编写命令M-文件和函数M-文件。 三、实验步骤 1. 在D 盘建立一个自己的文件夹; 2.开启软件平台——MATLAB ,将你建立的文件夹加入到MATLAB 的搜索路径中。 3.利用帮助了解函数max, min, sum, mean, sort, length ,rand, size 和diag 的功能和用法。 4.开启MATLAB 编辑窗口,键入你编写的M 文件(命令文件或函数文件); 5.保存文件(注意将文件存入你自己的文件夹)并运行; 6.若出现错误,修改、运行直到输出正确结果; 7.写出实验报告,并浅谈学习心得体会。 四、实验要求与任务 根据实验内容和步骤,完成以下具体实验,要求写出实验报告(实验目的→问题→算法与编程→计算结果或图形→心得体会) 1.设有分块矩阵??????=????223 22333S O R E A ,其中E,R,O,S 分别为单位阵、随机阵、零阵和对角阵,试通过数值计算验证??????+= 22S 0RS R E A 。 2.某零售店有9种商品的单件进价(元)、售价(元)及一周的销量如表1.1,问哪种商品的利润最大,哪种商品的利润最小;按收入由小到大,列出所有商品及其收入;求这一周该10种商品的总收入和总利润。 表1.1

相关文档