0

Mathematica 9 の学習を開始します。最初の列が行列「A」で、2 番目、3 番目、4 番目の列が行列「B」である、数値の範囲の順列で nx4 行列「m」を作成する必要があります。さらに、最初の行を除外する必要があります。誰でも私を助けることができますか?

`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]]]

これがMathCadで作ったMathematicaでやりたいこと

4

1 に答える 1

1

問題の解決策に移る前に、初心者として認識し、将来回避する必要があるコードの問題をいくつか確認できます。

  • 結果が評価の結果である 2 つの式を含むリストになるように、評価A =を とB =のペアでラップしました。{}これはマトリックスを作成しません。2 つMatrixFormの を含むリストを作成します。

  • 一般に、式をラップMatrixForm[]して変数に代入することはお勧めできません。 MatrixForm[]Mathematica のリスト(および配列と行列は単なるリストのリスト)で機能するほとんどの操作は、 head を持つオブジェクトでは機能しませんMatrixForm[]

  • 開始する式を評価すると1/Sqrt[Flatten[、エラー メッセージPower::infy: "Infinite expression 1/0 encountered."whenが生成されますa==0,b==0,c==0

最後に、あなたが求めていないアドバイスがあります: と と と のように、大文字と小文字だけが異なる変数名を使用することはAa苦痛と絶望の世界への確実な道です。できるからといって、そうすべきだというわけではありません。Bb

編集

次のコマンドを使用して、結果の最初の 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)}

この式の結果を変数の値に割り当てていないことに注意してください。私は中間変数を作成していないことにも注意してくださいContext.

于 2013-03-05T09:51:31.790 に答える