如何用Mathmatica求矩阵外积?

来源:百度知道 编辑:UC知道 时间:2024/06/05 16:04:00
刚刚学Mathmatica,用Mathmatica求矩阵外积时
用的是MatrixForm[Outer[Times, a, b]]
结果变成了大矩阵里还有小矩阵,请问高手们如何把里面的小矩阵的括号去掉啊?万分感谢
有满意回答者,再奖50分,多谢

矩阵的外积运算与矩阵的Dot运算一样,可有矩阵之间,矩阵与向量之间外积运算,Mathematica用Outer命令执行外积运算,

你用的命令"MatrixForm[Outer[Times, a, b]]
",是想将外积的结果表示成矩阵结构,这是不允许的,因为矩阵外积的结果不是一个矩阵,而是一个张量.

1.分号

教材给出的程序中,有的语句后加了分号,有的没有加,分号的作用究竟是什么?在scilab中,分号的作用有两个:一是禁止输出变量的值;二是在括号内作为矩阵中一行的分隔符。明白了这一点,就能够理解在下列程序中加不加分号的异同了。
s=0
for i=1:1:1000
s=s+i;
end
此程序最终的执行结果是
s=
0.
原因就是由于在语句s=s+i;中有分号,禁止了s值的输出。如果去掉了分号,则输出结果就不一样了。当然,对于这道题,为了看到最终结果,建议在执行完成后输入s,以显示s的值。或者在源程序的最后添加输出语句:print(%io(2),s);或s都可以显示出最后的结果。

3x-y=13

x+y=-1

对于分号的第二个作用,在课本中出现的不多,主要是利用高斯算法求解方程组的问题时使用过。
比如求解方程组

需要设计的程序如下:
a=[1,1;3,-1]; ---------;作为系数的分隔符。
b=[-1;13];

linsolve(a,-b)

执行后输出:
ans =
3.
-4.

2.逗号

学过c语言的知道逗号在c语言里面是作为一个运算符使用的,在很多情况下,往往作为多条表达式的分隔符,以起到求解多条表达式的作用。在scilab中,逗号的作用和c语言中的功能类似,起分割scilab指令的作用。
例如在求解立方和不大于1000的程序内,就可以使用逗号分割两条指令。
i=1;