2013-03-05 40 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