zselery 发表于 2011-3-31 17:42:13

求教:定义一个字母代表一个矩阵

比如*=,我要得到x1=……*f1+……*f2。
其中的a,b,c……,所有的符号都是代表矩阵的,然后让matlab计算,求得x1,x2的表达式。
    就要定义a,b,c……是矩阵,让matlab按照矩阵的运算规则求解。如果直接定义a是符号,那计算就直接按照代数的法则了,最后出来的结果不对。
   应该怎么实现呢????谢谢啦

mhkmars 发表于 2011-3-31 18:00:00

1# zselery
你这样表示的方程的话,a b c d应该代表的都是数字,不是矩阵。
至于你说a定义为符号,不能解。
其实可以解啊
syms f1 f2 a b c d
A=;
B=;
inv(A)*B

zselery 发表于 2011-3-31 21:03:45

2# mhkmars

2楼所说的我知道,这样出来的结果就是代数运算的。
而我要的是a,b,c,d等都被定义为矩阵,然后同样用inv(A)*B。来求解x1,x2。谢谢了

mhkmars 发表于 2011-3-31 21:21:34

3# zselery
不解,如果a,b,c,d为矩阵而来,x1,x2又为什么呢?矩阵,还是一个数?

zselery 发表于 2011-3-31 21:24:37

下面这个程序,能更好的表达我的意思。
矩阵A,B中的元素A1,A2都是2*2矩阵,但我要的inv(A)*B的结果只包含A1,A2,等,就是事先要定义A1,A2是个矩阵,让MATLAB按照矩阵的法则运算。怎么实现?

clear all
syms a b c d f1 f2
A1=;A2=;A3=;A4=;
F1=;F2=;
A=;
B=;
inv(A)*B

zselery 发表于 2011-3-31 21:35:43

http://bbs.simwe.com/viewthread.php?tid=910634&highlight=%BE%D8%D5%F3
如果解这样的矩阵方程组
方程, 矩阵
Ax+By=U, Cx+Dy=V,
A,B,C,D,U,V 都是n×n的已知矩阵,x,y为n×1的数组,如何求解x,y?
%%%%%%%%%%%%%%%%%

而我的是Ax+By+Cz+Di=U……四个未知量,四个方程。而且其中的系数都是n*n的矩阵,但并不赋值,只是矩阵,怎么求x,y,c,i。注意都是符号,绝对不是数字。

是不是事先要定义A等是矩阵呢??

zselery 发表于 2011-3-31 21:39:24

3# zselery
不解,如果a,b,c,d为矩阵而来,x1,x2又为什么呢?矩阵,还是一个数?
mhkmars 发表于 2011-3-31 21:21 http://bbs.simwe.com/images/common/back.gif
x1,x2也是矩阵。哈哈

nwcwww 发表于 2011-3-31 21:46:53

本帖最后由 nwcwww 于 2011-3-31 21:51 编辑

不知道楼主是不是这个意思:

a1=sym('a1',);a2=sym('a2',);a3=sym('a3',);a4=sym('a4',);
% 4个子矩阵

a=
%a是4*4的矩阵
a =

[ a11_1, a11_2, a21_1, a21_2]
[ a12_1, a12_2, a22_1, a22_2]
[ a31_1, a31_2, a31_3,   a41]
[ a32_1, a32_2, a32_3,   a42]

inv(a)
%求逆,但是symbolic的结果相当恐怖, 不贴了。。。

zselery 发表于 2011-3-31 22:15:06

8# nwcwww
我就是想声明a1……是矩阵,按照矩阵的法则运算就可以了……

nwcwww 发表于 2011-3-31 22:20:58

a1=sym('a1',);

这样a1就是一个m*n的symbolic matrix。

mhkmars 发表于 2011-3-31 22:44:24

5# zselery
其实你这个程序跟我那个是一个意思,想法都是一样的。nwcwww中也提到,如果全用符号运算的话,计算成本很大。
我给的建议可以这样,你的A1最后用subs来赋值。
Ps:matlab是个工具,程序什么都有一定的应用的方法,如果硬是按照自己的想法去实现,就算能出结果,也可能得不偿失,最好的就是顺着软件的思路走,个人见解,嘿嘿

zselery 发表于 2011-4-1 07:12:47

直接在命令窗口里面运行a1=sym('a1',);提示下面的是什么意思啊?
我的版本是2007b。

??? Error using ==> error
Formatted arguments cannot be non-scalar numeric matrices.

Error in ==> sym.sym at 106
         error('symbolic:sym:sym:errmsg4','Second argument %s not recognized.',a);

mhkmars 发表于 2011-4-1 07:50:11

12# zselery
这样操作时想一次定义多个符号变量,你可以先搜索num2str,sym等关键词。至于你出现的问题,可能是版本问题。今天还有课,中午回来再交流

mhkmars 发表于 2011-4-1 18:03:33

5# zselery
不知道你的问题解决了没,可否把你的解决方法之类的给大家共享一下,\(^o^)/~
页: [1]
查看完整版本: 求教:定义一个字母代表一个矩阵