1

今日、 Mathematicaで次のエラーが発生しました。

Set::shape: "Lists {0,0,0,0,0,0,0,0,0,0} and {0,0,0,0,0,0,0,0,0,0,{1}} are not the same shape" >>

そして、そのうちの3つの後:

General::stop : Further output of Set::shape will be suppressed during this calculation. >>

ゼロのリストに「1」を追加できない理由がわかりません。これは、関数に渡されたリストを編集できないためですか? もしそうなら、どうすればそのリストを編集して、どうにかしてそれを返したり印刷したりできますか?

ここに私の完全なコードがあります:

notFunctioningFunction[list_] := (For[i = 1, i < 10, i++, list = Append[list, {1}]]; 
  Print[list])
list = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
notFunctioningFunction[list]

「{1}」を追加する理由は、関数で方程式を解いて、{1} を出力する変数の値を取得しているためです。そのための私のコードは次のとおりです。

varName / . Solve[ function1 == function2 ]

明らかに私はMathematicaの初心者なので、しばらくお待ちください :)

ありがとう、
ブッコ

4

2 に答える 2

3

Append は、1 つのリストと 1 つの要素を取る必要があります。そのようです:

 Append[{1,2,3,4},5]

リストが 2 つある場合は、Join を使用できます。そのようです:

 Join[{1,2,3,4},{5}]

どちらも同じ結果になります: {1,2,3,4,5}。

于 2013-02-06T06:27:01.647 に答える
2

親愛なる Mathematica 初心者へ。

まず、次のようなものを使用する場合

{a,b} = {c,d,e};

Mathematica では、2 つのリスト間でプログラムに問題が生じます。これは変数に値を代入するために使用される構造であり、(とりわけ) 2 つのリストが等しい必要があるためです。

既存の名前付きリストに「1」を 1 つずつ追加するだけの場合、最適な構成は次のとおりです。

AppendTo[list, 1];

(この構成は、変数「リスト」を変更します)

また

list = Join[list, {1}];

2 つ目: エラー メッセージについては、デフォルトで評価時に 3 回出力され、その後、同じエラー メッセージの長いリストが表示を乱雑にしないようにミュートされます。

第 3 に、リストに 10 個の 1 を追加する必要がある場合、それをループで構築する必要はありません。1回のパスでそれを行うことができます:

list = Join[list, Table[1, {10}]]

または、初心者にとってはより不可解です

list = Join[list, Array[1&, 10]]
于 2013-02-06T16:10:48.993 に答える