求教:定义一个字母代表一个矩阵
比如*=,我要得到x1=……*f1+……*f2。其中的a,b,c……,所有的符号都是代表矩阵的,然后让matlab计算,求得x1,x2的表达式。
就要定义a,b,c……是矩阵,让matlab按照矩阵的运算规则求解。如果直接定义a是符号,那计算就直接按照代数的法则了,最后出来的结果不对。
应该怎么实现呢????谢谢啦 1# zselery
你这样表示的方程的话,a b c d应该代表的都是数字,不是矩阵。
至于你说a定义为符号,不能解。
其实可以解啊
syms f1 f2 a b c d
A=;
B=;
inv(A)*B 2# mhkmars
2楼所说的我知道,这样出来的结果就是代数运算的。
而我要的是a,b,c,d等都被定义为矩阵,然后同样用inv(A)*B。来求解x1,x2。谢谢了 3# zselery
不解,如果a,b,c,d为矩阵而来,x1,x2又为什么呢?矩阵,还是一个数? 下面这个程序,能更好的表达我的意思。
矩阵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 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等是矩阵呢?? 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: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的结果相当恐怖, 不贴了。。。 8# nwcwww
我就是想声明a1……是矩阵,按照矩阵的法则运算就可以了…… a1=sym('a1',);
这样a1就是一个m*n的symbolic matrix。 5# zselery
其实你这个程序跟我那个是一个意思,想法都是一样的。nwcwww中也提到,如果全用符号运算的话,计算成本很大。
我给的建议可以这样,你的A1最后用subs来赋值。
Ps:matlab是个工具,程序什么都有一定的应用的方法,如果硬是按照自己的想法去实现,就算能出结果,也可能得不偿失,最好的就是顺着软件的思路走,个人见解,嘿嘿 直接在命令窗口里面运行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); 12# zselery
这样操作时想一次定义多个符号变量,你可以先搜索num2str,sym等关键词。至于你出现的问题,可能是版本问题。今天还有课,中午回来再交流 5# zselery
不知道你的问题解决了没,可否把你的解决方法之类的给大家共享一下,\(^o^)/~
页:
[1]