没有合适的资源?快使用搜索试试~ 我知道了~
第三章 解线性方程组的直接方法的matlab程序.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 52 浏览量
2022-11-13
01:26:48
上传
评论
收藏 275KB DOCX 举报
温馨提示
试读
16页
。。。
资源推荐
资源详情
资源评论
第三章 解线性方程组的直接方法
在科技、工程、医学和经济等各个领域中,经常遇到求解包含n 个未知数、由 m 个
方程构成的线性方程组
�
a x a x
a x b
11 1
12 2
1n n
1
�
a x a x a x b
21 1
22 2
2n n
2
(3.1)
��
�
a x a x a x b
m1 1
m2 2
mn n
m
的问题.线性方程组(3.1)的解法一般有直接法和迭代法.迭代法是求解大型稀疏矩
阵方程组,尤其是由微分方程离散后得到的大型方程组的重要方法.在这章中我们要学习
线性方程组的直接法,特别是适合用数学软件在计算机上求解的方法.
3.1 方程组的逆矩阵解法及其 MATLAB 程序
3.1.1 逆矩阵、行列式及其MATLAB命令
det(A)
A
.当
det(A) 0
时, 可
A
当矩阵 A 为方阵时, A 的行列式通常表示为
或
逆,且可以用表 3-1中的 MATLAB 命令求 A 的逆矩阵和行列式.
表 3-1
命 令
NA=inv(A)
功
能
输入矩阵 A ,运行后输出 A 的逆矩阵
A
1
;
HA=det(A)
A
A
det(A)
输入矩阵 ,运行后输出 的行列式 的值.
3.1.2 方程组的逆矩阵解法及其MATLAB程序
在 MATLAB 中引进了矩阵除法的概念,它包括左除和右除.设两矩阵 A
, B
为 阶方阵,
n
C YB D AZB F
且 A , B 皆可逆,则矩阵方程 AX
的命令求出.
,
,
的解都可以用表 3-2中
表 3-2
相同功能的命令
功
能
输入矩阵 A 和 ,运行后输出矩阵方程
AX C 的解 X A C
1
输入矩阵 B 和 D ,运行后输出矩阵方程
YB D 的解Y DB
1
Y=D*inv(B)
输入矩阵 A , B 和 F ,运行后输出矩阵
Z=A\ F/B
Z= inv(A)*F* inv(B)
F
Z A FB
方程 AZB
的解
1
1
3.1.3 线性方程组有解的判定条件及其 MATLAB 程序
解非齐次线性方程组,将其增广矩阵化成行阶梯形矩阵,便可判断其是否有解.若
有解,化成行最简形矩阵,便可写出其通解.
判定线性方程组 A
X
b
是否有解的 MATLAB 程序
mn
b
输出的量:RA 和 RB 分别是系数矩阵A 和增广矩阵B 的秩, n 是方程组中未知量的
个数,另外还输出有关方程组解的信息.
A
(2)如果有唯一解,则用表 3-2方法求解; 如果有无穷多解,则将其增广矩阵化成
行最简形矩阵,便可写出其通解.
根据线性方程组有解的判定条件,现提供判定线性方程组是否有解的 MATLAB 程序
function [RA,RB,n]=jiepb(A,b)
B=[A b];n=length(b); RA=rank(A);
RB=rank(B);zhica=RB-RA;
if zhica>0,
disp('请注意:因为RA~=RB,所以此方程组无解.')
return
end
if RA==RB
if RA==n
disp('请注意:因为RA=RB=n,所以此方程组有唯一解.')
else
disp('请注意:因为RA=RB<n,所以此方程组有无穷多解.')
end
end
例 3.1.4 判断下列线性方程组解的情况.如果有唯一解,则用表 3-2方法求解.
3x 4x 5x 7 x 0,
2 x 3x x 5x 0,
1
2
3
4
1
2
3
4
2x 3x 3x 2x 0,
3x x 2 x 7 x 0,
(1)
(2)
(4)
1
2
3
4
1
2
3
4
4x 11x 13 x 16 x 0,
4 x x 3x 6 x 0,
1
2
3
4
1
2
3
4
0;
7
2
3
x 2 x 4 x 7 x 0;
x x x x
1
1
2
3
4
2
3
4
4x 2x x 2,
1,
2
x y z w
1
2
3
(3)
3
2
x
10,
4
x
2
2
2,
y z w
x
x
1
2
3
11x 3x 8;
x y z w
2 1.
解 在 MATLAB 工作窗口输入程序
1
2
>> A=[2 3 -1 5;3 1 2 -7;4 1 -3 6;1 -2 4 -7];
b=[ 0; 0; 0; 0]; [RA,RB,n]=jiepb(A,b)
运行后输出结果为
请注意:因为RA=RB=n,所以此方程组有唯一解.
RA = 4,RB =4,n =4
在 MATLAB 工作窗口输入
>>X=A\b,
运行后输出结果为 X =(0 0 0 0)’.
(2) 在 MATLAB 工作窗口输入程序
>> A=[3 4 -5 7;2 -3 3 -2;4 11 -13 16;7 -2 1 3];b=[ 0; 0; 0; 0];
[RA,RB,n]=jiepb(A,b)
运行后输出结果
请注意:因为RA=RB<n,所以此方程组有无穷多解.
RA =2,RB =2,n =4
(3) 在 MATLAB 工作窗口输入程序
>> A=[4 2 -1;3 -1 2;11 3 0]; b=[2;10;8]; [RA,RB,n]=jiepb(A,B)
运行后输出结果
请注意:因为RA~=RB,所以此方程组无解.
RA =2,RB =3,n =3
(4)在 MATLAB 工作窗口输入程序
>> A=[2 1 -1 1;4 2 -2 1;2 1 -1 -1];
b=[1; 2; 1]; [RA,RB,n]=jiepb(A,b)
运行后输出结果
请注意:因为 RA=RB<n,所以此方程组有无穷多解.
RA =2,RB =2,n =3
3.2 三角形方程组的解法及其 MATLAB 程序
用初等行变换解线性方程组是解线性方程组的一般方法.从例 3.1.6 可见,当方程的
个数和未知量的个数很大时,用初等行变换解线性方程组的工作量相当的大,如果在计
算过程中某一步发生错误,那么就会得出错误的结果.人们非常想用计算机的程序解线性
方程组,而高斯(Gauss)消元法以及各种变形的高斯消元法使得用初等行变换解线性方
程组实现机械化计算成为可能.
3.2.2 解三角形方程组的 MATLAB 程序
现提供的 MATLAB程序是利用回代法解上三角形线性方程组,解下三角形线性方程
组的程序类似.
解上三角形线性方程组 AX b 的 MATLAB 程序
输入的量:系数矩阵 A 和常系数向量b;
运行后输出的量:系数矩阵 A 和增广矩阵 B 的秩 RA,RB, 方程组中未知量的个数 n
和有关方程组解 X 及其解的信息.
function [RA,RB,n,X]=shangsan(A,b)
B=[A b]; n=length(b); RA=rank(A); RB=rank(B);zhica=RB-RA;
if zhica>0,
disp('请注意:因为RA~=RB,所以此方程组无解.')
return
end
if RA==RB
if RA==n
disp('请注意:因为RA=RB=n,所以此方程组有唯一解.')
X=zeros(n,1); X(n)=b(n)/A(n,n);
for k=n-1:-1:1
X(k)=(b(k)-sum(A(k,k+1:n)*X(k+1:n)))/A(k,k);
end
else
disp('请注意:因为RA=RB<n,所以此方程组有无穷多解.')
end
end
例 3.2.2 用解上三角形线性方程组的 MATLAB程序解例 3.2.1 中的方程组.
解
在 MATLAB 工作窗口输入程序
>>A=[5 -1 2 3;0 -2 7 -4;0 0 6 5;0 0 0 3];
b=[20; -7; 4;6];
[RA,RB,n,X]=shangsan(A,b)
运行后输出结果
请注意:因为 RA=RB=n,所以此方程组有唯一解.
RA =
n =
RB =
4,
4,
4,
X =[2.4 -4.0 -1.0 2.0]’
3.3 高斯(Gauss)消元法和列主元消元法及其 MATLAB 程序
3.3.1 高斯消元法及其 MATLAB 程序
b
现提供的 MATLAB程序是利用高斯消元法解线性方程组 AX
的 MATLAB 程序.
b
用高斯消元法解线性方程组 AX
输入的量:系数矩阵 A 和常系数向量b ;
的 MATLAB 程序
输出的量:系数矩阵 A 和增广矩阵 B 的秩 RA,RB, 方程组中未知量的个数 n 和有关
方程组解 X 及其解的信息.
function [RA,RB,n,X]=gaus(A,b)
B=[A b]; n=length(b); RA=rank(A);
RB=rank(B);zhica=RB-RA;
if zhica>0,
disp('请注意:因为RA~=RB,所以此方程组无解.')
return
end
if RA==RB
if RA==n
disp('请注意:因为RA=RB=n,所以此方程组有唯一解.')
X=zeros(n,1); C=zeros(1,n+1);
for p= 1:n-1
for k=p+1:n
m= B(k,p)/ B(p,p); B(k,p:n+1)= B(k,p:n+1)-m* B(p,p:n+1);
end
end
b=B(1:n,n+1);A=B(1:n,1:n); X(n)=b(n)/A(n,n);
for q=n-1:-1:1
X(q)=(b(q)-sum(A(q,q+1:n)*X(q+1:n)))/A(q,q);
end
else
disp('请注意:因为RA=RB<n,所以此方程组有无穷多解.')
end
end
例 3.3.2 用高斯消元法和 MATLAB 程序求解下面的非齐次线性方程组,并且用逆矩
阵解方程组的方法验证.
x
x
x
3x 1,
1
2
3
4
x x x 0,
2
3
4
2x 2x 4x 6x 1,
1
2
3
4
2x 4x x 1.
x
解 在 MATLAB 工作窗口输入程序
1
2
3
4
>> A=[1 -1 1 -3; 0 -1 -1 1;2 -2 -4 6;1 -2 -4 1];
b=[1;0; -1;-1]; [RA,RB,n,X] =gaus (A,b)
运行后输出结果
请注意:因为 RA=RB=n,所以此方程组有唯一解.
RA =
X =
4
0
RB =
-0.5000
0.5000
4
4
n =
0
3.3.2 列主元消元法及其 MATLAB 程序
剩余15页未读,继续阅读
资源评论
คิดถึง643
- 粉丝: 3919
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功