| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3610 人关注过本帖
标题:将矩阵中元素值带入线性方程求解的问题!
只看楼主 加入收藏
woody390
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-9-21
收藏
 问题点数:0 回复次数:10 
将矩阵中元素值带入线性方程求解的问题!
向各位大师请教:

两个矩阵:
Mrem=[0.675 18 1.575;3.4 414.8 4.59;5.6 1.4 520.8]
Cout=[15 400 35;120 12500 180;220 45 9500]
想解线性方程:

(1)直接带入数据求:
[x,y]=solve('0.4*x+1.4=0.045*(x+y)','0.035*x+520.8=9.5*(x+y)')
得:
x =2.6684744334822985842816430494218
y =52.162409419693688831555184056550

(2)带入矩阵元素求:
[x,y]=solve('Cout(1,2)/1000*x+Mrem(3,2)=Cout(2,3)/1000*(x+y)','Cout(1,3)/1000*x+Mrem(3,3)=Cout(3,3)/1000*(x+y)')
得:
x =-1000*(Mrem(3,2)*Cout(3,3)-Cout(2,3)*Mrem(3,3))/(Cout(1,2)*Cout(3,3)-Cout(2,3)*Cout(1,3))

y =1000*(-Cout(1,3)*Mrem(3,2)+Mrem(3,3)*Cout(1,2)+Mrem(3,2)*Cout(3,3)-Cout(2,3)*Mrem(3,3))/(Cout(1,2)*Cout(3,3)-Cout(2,3)*Cout(1,3))
请问如何使(2)过程能得到如(1)中的数值结果?
拜托了!急用!谢谢!
搜索更多相关主题的帖子: 线性方程 矩阵 元素 求解 带入 
2006-10-17 09:41
ydgsl
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:107
专家分:20
注 册:2006-9-20
收藏
得分:0 

请运行下列小程序:
clear,clc
Mrem=[0.675 18 1.575;3.4 414.8 4.59;5.6 1.4 520.8]
Cout=[15 400 35;120 12500 180;220 45 9500]
[x,y]=solve('Cout12/1000*x+Mrem32=Cout23/1000*(x+y)','Cout13/1000*x+Mrem33=Cout33/1000*(x+y)')
for i=1:3
for j=1:3
str1=char(['Cout', num2str(i), num2str(j)]);
str2=char(['Mrem', num2str(i), num2str(j)]);
x=subs(x,str1,Cout(i,j))
y=subs(y,str1,Cout(i,j))
x=subs(x,str2,Mrem(i,j))
y=subs(y,str2,Mrem(i,j))
end
end

2006-10-17 19:42
woody390
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-9-21
收藏
得分:0 

我试了,可以输出数值结果了,但结果不对呀???

2006-10-18 08:57
woody390
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-9-21
收藏
得分:0 

哈哈!知道了!我输错一个数据!不好意思!非常感谢!

2006-10-18 10:31
woody390
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-9-21
收藏
得分:0 
若是想向线性方程中带入一个固定值呢?
比如:Freal=21 F1=10 x=3 y=6
x1=solve('(Source11+Source21*x1+Mrem31)/((F1-x)+(Freal2-y)*x1)=Cout31/1000')
2006-10-18 17:16
ydgsl
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:107
专家分:20
注 册:2006-9-20
收藏
得分:0 
用subs(变量,'字符串',数值)即用数值替代字符串,求算变量的数值。如:
subs(x1,'Freal2',21)
随后依次替代(每次只能代一个)。
2006-10-18 18:50
woody390
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-9-21
收藏
得分:0 
版主帮我看看这个程序哪儿有问题吧,为什么出不来结果呢?

Source =[2.0486 5.7617 0.3841;0.9002 1.5303 2.1605; 24.8000 28.0000 31.6000;49.9912 58.3579 56.4754]
Cout =[160 450 30;158.8 270 381.2;1240 1400 1580;796.7 930 900]
Mrem=[5.44 15.3 1.02;7.5 12.75 18;12.8 11 23.8;40 37.6 40]
F=[34;75;20;80]
n=4;m=3;
a=solve('(Source11+Source21*a+Mrem31)/((F1-x)+(Freal2-y)*a)=Cout31/1000')
a=subs(a,'Freal2',47.2222)
a=subs(a,'x',21.1961)
a=subs(a,'y',41.5543)
for i=1:n
for j=1:m
str1=char(['Cout', num2str(i), num2str(j)]);
str2=char(['Mrem', num2str(i), num2str(j)]);
str3=char(['Source',num2str(i),num2str(j)]);
str4=char(['F',num2str(i)]);
a=subs(a,str1,Cout(i,j))
a=subs(a,str2,Mrem(i,j))
a=subs(a,str3,Source(i,j))
end
a=subs(a,str4,F(i))
end

谢谢啦!
2006-10-19 15:09
woody390
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-9-21
收藏
得分:0 

呵呵我知道了!
a=solve('(Source11+Source21*a+Mrem31)/((F1-x)+(Freal2-y)*a)=Cout31/1000','a')
这样才对!呵呵
但是为什么三个方程一起求又不认 x,y,Freal2了呢?

2006-10-19 17:20
woody390
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-9-21
收藏
得分:0 
哎呀!不好意思!我找到错误了!得到结果了!
不过我还是不明白:
有的书上写:[var1,var2,……,varN]=solve('eqn1','eqn2',……,'eqnN')
而有的就写:X=solve('eqn1','eqn2',……,'eqnN','var1','var2',……,'varN')
用后者上面的例子就出结果,用前者就出错,可平时用前者也没问题呀!

2006-10-19 17:39
ydgsl
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:107
专家分:20
注 册:2006-9-20
收藏
得分:0 
需在输出端指明待求的变量名
2006-10-20 19:43
快速回复:将矩阵中元素值带入线性方程求解的问题!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017006 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved