声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1351|回复: 9

[编程技巧] 问一个线性方程组求解问题

[复制链接]
发表于 2010-1-28 10:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
变量为矩阵的线性方程组怎么求解,用求普通变量的线性方程组的方法好像不行,不知道系数矩阵怎么表示。如
x+2y+3z=s1
3x+7y+z=s2
x+y+5z=s3
其中x、y、z是变量矩阵,s1,s2,s3是三个常量矩阵,怎么求出矩阵x、y、z?
回复
分享到:

使用道具 举报

发表于 2010-1-28 12:22 | 显示全部楼层
这种情况只能将x、y、z中的变量都代入方程,用solve求解。因为你的s1,s2,s3不确定,所以很难判定三者之间的相互关系,因此很难求解。
发表于 2010-1-28 15:11 | 显示全部楼层
抱歉! 怕用词理解错误! 常量矩阵是否指已知常数矩阵?
若是的话, 就跟Ax=b求x的问题一样嘛!
初步考虑应有两种具体方式可达成
 楼主| 发表于 2010-1-28 16:51 | 显示全部楼层
s1,s2,s3是已知的常数矩阵。
不能象普通变量的方程Ax=b那样求解,因为系数矩阵是[1 2 3;3 7 1;1 1 5],而x,y,z都分别是32×32的矩阵。
发表于 2010-1-29 00:46 | 显示全部楼层
基本上, 假设x/y/z为m*n矩阵, 当然s1/s2/s3也是m*n矩阵, 所以共有2*m*n的未知数及等式, 有解!
举例说明m=3; n=2; x=[x11,x12;x21,x22;x31,x32]; 其他类似
1.重新将x/y..改为6*1的向量, X=[x;y;z]为18*1, b=[s1;s2;s3]为18*1, 三组等式即可重写为类似AX=b型式!
  其中A=[1*I, 2*I, 3*I;3*I, 7*I, I;I, I, 5*I];为18*18的矩阵
2.或则将18个未知数分成6组, 个别都是AX=b型式!
其中A=[1,2,3;3,7,1;1,1,5]; 第一组b=[s1_11;s2_11;s3_11]; 第二组b=[s1_21;s2_21;s3_21]; ...

个人水平有限, 不知有否说明白!

评分

1

查看全部评分

发表于 2010-1-29 08:29 | 显示全部楼层
A=[1,2,3;3,7,1;1,1,5];
B=[s1;s2;s3]
C=B/A;%Ok啦
 楼主| 发表于 2010-1-29 10:42 | 显示全部楼层
没明白“其中A=[1*I, 2*I, 3*I;3*I, 7*I, I;I, I, 5*I];为18*18的矩阵”。我想是不是要对系数矩阵A=[1 2 3;3 7 1;1 1 5]进行扩展,否则无法利用AX=b进行求解。
另外第2种方法中的s1_11表示s1的第一行一列元素吗?
发表于 2010-1-29 14:45 | 显示全部楼层

回复 7楼 sherri 的帖子

忘了说明A=[1*I, 2*I, 3*I;3*I, 7*I, I;I, I, 5*I];中的I为6*6(m*n=6)单元矩阵
s1_11表示s1的第一行一列元素

晚上或明天若有空, 再举例试试!
发表于 2010-1-30 05:04 | 显示全部楼层
以变量矩阵的元素为变量重新列方程组【和ChaChing老师的思路应是一致的,呵呵】,即可求解:
  1. clc
  2. clear
  3. % x+2y+3z=s1
  4. % 3x+7y+z=s2
  5. % x+y+5z=s3
  6. s1=[2,4,6;1,3,5];
  7. s2=[3,8,3;4,7,9];
  8. s3=[2,4,1;7,9,2];
  9. A=[1,2,3;3,7,1;1,1,5];
  10. [m,n]=size(s1);
  11. x=zeros(m,n);
  12. y=zeros(m,n);
  13. z=zeros(m,n);
  14. for i=1:m
  15.     for j=1:n
  16.         B=[s1(i,j);s2(i,j);s3(i,j)];
  17.         c=A\B;
  18.         x(i,j)=c(1);
  19.         y(i,j)=c(2);
  20.         z(i,j)=c(3);
  21.     end
  22. 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 编辑 ]

评分

2

查看全部评分

发表于 2010-1-30 23:12 | 显示全部楼层
不知道是否跟年龄有关, 现在真的有点懒实践想法, 还好friendchj实现验证了想法可行! 谢谢
friendchj的程式同我说的第二种方式! 第一种方式应该也可行, 只不过矩阵较大些, 但只需求解一次不必求解多次, 有兴趣者试试吧
还有楼主在本版的帖不少, 感觉互动嫌少些, 有空自己整理下, 可以与大家分享的, 尽量做个结束!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-29 19:37 , Processed in 0.056695 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表