2017-09-12 15 views
1

私は現在mathematicaを使っていますが、私はいくつかの専門分野で立ち往生しています。forループで行列を作る

Rvec[R_] := UnitVector[Length[R], RandomInteger[{1, Length[R]}]] 
Fvec[R_] := R - Rvec[R] + Rvec[R] 
vec[R_] := Module[{S = Fvec[R]}, If[Count[S, -1] > 0, R, S]] 
Loop[R_, n_] := For[i = 1; L = R, i < n + 1, i++, L = vec[L]; Print[L]] 

アイデアは、私は今、ループがランダムにセット内の1つのエントリから1つの数を減算し、次の反復で別のものにそれを追加することを予定していますが、キャッチでエントリがゼロを下回らないことができるということです。私が得た出力は、お互いの下に置かれた一連の結果です。

が、私は私は1つのマトリックスの形で出力全体を置くことができる方法を知りたいと行われた:

https://i.gyazo.com/a4ef70ba5670fd53003e0ac5ec1e434e.png

代わりに、そのような出力を有するので、私はそれを持っていると思いますそれらの集合を要素として含むより大きな集合に配置された出力の集合を持つように、行列形式である。これは、出力全体を操作して作業できるようになるので、私にとって大きな助けになります。

+0

「For」の代わりに、「Nest」を提案します。手続きループで結果を収集するには、 'Sow' /' Reap'を参照してください。あなたが初心者の場合は、[しばらくForループについて忘れてください(https://mathematica.stackexchange.com/q/134609/12)。最後に、組み込みシンボルやパッケージシンボルとの衝突を避けるため、大文字で始まる名前は避けてください。 – Szabolcs

+0

私は実際に 'NestList 'を意味しました。' Nest'ではありません。 – Szabolcs

+0

多分私は何かを見逃してしまったでしょうが、単に 'For'ループを' Table'にするのはなぜですか? – agentp

答えて

0

あなたは結果的にベクトルでベクトルを追加することにより、マトリックスを作成する必要がある場合は、次のように行うことができます:私はきちんとyouy問題をunderstanfしなかった場合

vector = {1, 2, 3, 4, 5}; 
matrix = {}; (* Initialize matrix *) 
Do[matrix = Append[matrix, vector], 5]; (* Construct matrix by adding line by line*) 
MatrixForm[matrix] (* Print matrix *) 

を教えてください。

関連する問題