2013-03-05 139 views
0

我开始学习Mathematica 9.我需要制作一个nx4矩阵“m”,其中第一列是矩阵“A”,第二,三,第四列是矩阵“B”。而且,我需要排除第一行。有谁能够帮助我?使用Mathematica中的数字范围排列矩阵9

`t = 2; a = Range[0, t]; b = Range[0, t]; c = Range[0, t]; 
{A = MatrixForm[ 
    1/Sqrt[Flatten[ 
     Table[a^2 + b^2 + c^2, {a, 0, t, 1}, {b, 0, t, 1}, {c, 0, t, 
     1}]]]], 
B = MatrixForm[Tuples[{a, b, c}]]}` 

我需要的是这样的:

List[List[0, 0, 1, 1], List[0, 0, 2, Rational[1, 4]], 
List[0, 1, 0, 1], List[0, 1, 1, Rational[1, 2]], 
List[0, 1, 2, Rational[1, 5]], List[0, 2, 0, Rational[1, 4]], 
List[0, 2, 1, Rational[1, 5]], List[0, 2, 2, \[Placeholder]], 
List[1, 0, 0, \[Placeholder]], List[1, 0, 1, \[Placeholder]], 
List[1, 0, 2, \[Placeholder]], List[1, 1, 0, \[Placeholder]], 
List[1, 1, 1, \[Placeholder]], List[1, 1, 2, \[Placeholder]], 
List[1, 2, 0, \[Placeholder]], List[1, 2, 1, \[Placeholder]], 
List[1, 2, 2, \[Placeholder]], List[2, 0, 0, \[Placeholder]], 
List[2, 0, 1, \[Placeholder]], List[2, 0, 2, \[Placeholder]], 
List[2, 1, 0, \[Placeholder]], List[2, 1, 1, \[Placeholder]], 
List[2, 1, 2, \[Placeholder]], List[2, 2, 0, \[Placeholder]], 
List[2, 2, 1, \[Placeholder]], List[2, 2, 2, \[Placeholder]]] 

这就是我想在数学made in MathCad

回答

1

做转向解决你的问题之前,我可以看到一个与几个问题你的代码,作为初学者,你应该知道并避免在将来:

  • 您已将评估A =B =包装在一对{}中,以便结果将成为包含评估结果的两个表达式的列表。这不会创建矩阵,它会创建一个包含两个MatrixForm的列表。

  • 将表达式包装到MatrixForm[]中并将其分配给变量通常是个不错的主意。 MatrixForm[]确实用于使输出看起来不错,在Mathematica列表上工作的大多数操作(以及数组和矩阵只是列表的列表)不适用于头部为MatrixForm[]的对象。

  • 评估您的表达式开始1/Sqrt[Flatten[生成错误消息:Power::infy: "Infinite expression 1/0 encountered."a==0,b==0,c==0

最后,一些建议你还没问:使用变量名只相差在他们的信件的情况下,你AaBb做的,就是世界的一个肯定路线痛苦和绝望。只因为你可以不意味着你应该。

编辑

您可以轻松地使用以下命令生成的结果的第3列:

Tuples[Range[0, 2], 3] 

现在这包括元素{0,0,0}所以我们会放弃它,这样

Drop[Tuples[Range[0, 2], 3],1] 

现在用替换规则计算第4列,如下所示:

Drop[Tuples[Range[0, 2], 3], 1] /. {x_, y_, z_} -> {x, y, z, 1/(x^2 + y^2 + z^2)} 

请注意,我没有将此表达式的结果赋值为任何变量的值,您可能需要。还要注意,我还没有创建任何中间变量,这会保持您的工作空间(在Mathematica中称为Context)漂亮整齐。

+0

非常感谢! – user2134418 2013-03-05 11:02:42