问一个线性方程组求解问题
变量为矩阵的线性方程组怎么求解,用求普通变量的线性方程组的方法好像不行,不知道系数矩阵怎么表示。如x+2y+3z=s1
3x+7y+z=s2
x+y+5z=s3
其中x、y、z是变量矩阵,s1,s2,s3是三个常量矩阵,怎么求出矩阵x、y、z? 这种情况只能将x、y、z中的变量都代入方程,用solve求解。因为你的s1,s2,s3不确定,所以很难判定三者之间的相互关系,因此很难求解。 抱歉! 怕用词理解错误! 常量矩阵是否指已知常数矩阵?
若是的话, 就跟Ax=b求x的问题一样嘛!
初步考虑应有两种具体方式可达成 s1,s2,s3是已知的常数矩阵。
不能象普通变量的方程Ax=b那样求解,因为系数矩阵是,而x,y,z都分别是32×32的矩阵。 基本上, 假设x/y/z为m*n矩阵, 当然s1/s2/s3也是m*n矩阵, 所以共有2*m*n的未知数及等式, 有解!
举例说明m=3; n=2; x=; 其他类似
1.重新将x/y..改为6*1的向量, X=为18*1, b=为18*1, 三组等式即可重写为类似AX=b型式!
其中A=;为18*18的矩阵
2.或则将18个未知数分成6组, 个别都是AX=b型式!
其中A=; 第一组b=; 第二组b=; ...
个人水平有限, 不知有否说明白! A=;
B=
C=B/A;%Ok啦 没明白“其中A=;为18*18的矩阵”。我想是不是要对系数矩阵A=进行扩展,否则无法利用AX=b进行求解。
另外第2种方法中的s1_11表示s1的第一行一列元素吗?
回复 7楼 sherri 的帖子
忘了说明A=;中的I为6*6(m*n=6)单元矩阵s1_11表示s1的第一行一列元素
晚上或明天若有空, 再举例试试! 以变量矩阵的元素为变量重新列方程组【和ChaChing老师的思路应是一致的,呵呵】,即可求解:clc
clear
% x+2y+3z=s1
% 3x+7y+z=s2
% x+y+5z=s3
s1=;
s2=;
s3=;
A=;
=size(s1);
x=zeros(m,n);
y=zeros(m,n);
z=zeros(m,n);
for i=1:m
for j=1:n
B=;
c=A\B;
x(i,j)=c(1);
y(i,j)=c(2);
z(i,j)=c(3);
end
end结果:
>> x
x =
-1.5000 -0.6667-27.3333
21.1667 19.6667-11.5000
>> y
y =
1.0000 1.3333 11.6667
-8.3333 -7.3333 6.0000
>> z
z =
0.5000 0.6667 3.3333
-1.1667 -0.6667 1.5000
验证:
>> x+2*y+3*z
ans =
2.0000 4.0000 6.0000
1.0000 3.0000 5.0000
>> 3*x+7*y+z
ans =
3.0000 8.0000 3.0000
4.0000 7.0000 9.0000
>> x+y+5*z
ans =
2.0000 4.0000 1.0000
7.0000 9.0000 2.0000
[ 本帖最后由 friendchj 于 2010-1-30 05:09 编辑 ] 不知道是否跟年龄有关, 现在真的有点懒实践想法, 还好friendchj实现验证了想法可行! 谢谢
friendchj的程式同我说的第二种方式! 第一种方式应该也可行, 只不过矩阵较大些, 但只需求解一次不必求解多次, 有兴趣者试试吧
还有楼主在本版的帖不少, 感觉互动嫌少些, 有空自己整理下, 可以与大家分享的, 尽量做个结束!
页:
[1]