質問編集履歴
2
test
CHANGED
File without changes
|
test
CHANGED
@@ -202,6 +202,8 @@
|
|
202
202
|
|
203
203
|
また、連立数が多い方程式を解く場合も想定し、for分を使って連立方程式を記述しました。
|
204
204
|
|
205
|
+
必要な基底関数のみ直接記述し、対応する係数をcsvなどで用意する方法をとりました。
|
206
|
+
|
205
207
|
|
206
208
|
|
207
209
|
一応計算はできましたが、効率の悪いコードになっていると思っております。
|
1
toast-uz様の回答を参考に、【詳細2】に対応するコードを考えてみました。 ベストアンサーはtoast-uz様につけさせていただいたので、こちらに追記することにしました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -16,6 +16,8 @@
|
|
16
16
|
|
17
17
|
ローレンツ方程式
|
18
18
|
|
19
|
+
【式1】
|
20
|
+
|
19
21
|
![イメージ説明](f5697a86168a35bff8c71ca8e79b03cc.png)
|
20
22
|
|
21
23
|
を
|
@@ -50,6 +52,8 @@
|
|
50
52
|
|
51
53
|
例えば、ローレンツ方程式を
|
52
54
|
|
55
|
+
【式2】
|
56
|
+
|
53
57
|
![イメージ説明](9b3be88b3b640ecee74b783e85ad4013.png)
|
54
58
|
|
55
59
|
のように行列表現にし、
|
@@ -133,3 +137,73 @@
|
|
133
137
|
何か良い方法がありましたら、ご教授いただけると幸いです。
|
134
138
|
|
135
139
|
よろしくお願いいたします。
|
140
|
+
|
141
|
+
|
142
|
+
|
143
|
+
|
144
|
+
|
145
|
+
#####追記
|
146
|
+
|
147
|
+
toast-uz様の回答を参考に、【詳細2】に対応するコードを考えてみました。
|
148
|
+
|
149
|
+
ベストアンサーはtoast-uz様につけさせていただいたので、こちらに追記することにしました。
|
150
|
+
|
151
|
+
|
152
|
+
|
153
|
+
詳細1の式1のAをmatとして
|
154
|
+
|
155
|
+
【表5】
|
156
|
+
|
157
|
+
![イメージ説明](e2c62a9c3551118dc4942e432d90bac3.png)
|
158
|
+
|
159
|
+
のように行列で定義しました。
|
160
|
+
|
161
|
+
|
162
|
+
|
163
|
+
さらに、パラメーターpの時間変動分を
|
164
|
+
|
165
|
+
【表6】
|
166
|
+
|
167
|
+
![イメージ説明](67c7001deafc16cc7aa7134a57fa73f2.png)
|
168
|
+
|
169
|
+
のようにしました。
|
170
|
+
|
171
|
+
表6の列0はt、列1はpです。
|
172
|
+
|
173
|
+
行数 = 計算終了時間/計算間隔にしています。
|
174
|
+
|
175
|
+
|
176
|
+
|
177
|
+
関数部分は
|
178
|
+
|
179
|
+
```Python
|
180
|
+
|
181
|
+
def func_lorenz(var, t, mat, p_list):
|
182
|
+
|
183
|
+
x, y, z = tuple(var)
|
184
|
+
|
185
|
+
mat[0,0] = - p_list[p_list[:,0] == round(t,2), 1]
|
186
|
+
|
187
|
+
mat[0,1] = p_list[p_list[:,0] == round(t,2), 1]
|
188
|
+
|
189
|
+
dXdt = [0,0,0]
|
190
|
+
|
191
|
+
for i in range(len(dXdt)):
|
192
|
+
|
193
|
+
dXdt[i] = mat[i,0]*x + mat[i,1]*y + mat[i,2]*z + mat[i,3]*x*y + mat[i,4]*x*z
|
194
|
+
|
195
|
+
return dXdt
|
196
|
+
|
197
|
+
```
|
198
|
+
|
199
|
+
のように定義しました。
|
200
|
+
|
201
|
+
パラメーターpに対応するmat[0,0]とmat[0,1]を」関数内で書き換えるようにしました。
|
202
|
+
|
203
|
+
また、連立数が多い方程式を解く場合も想定し、for分を使って連立方程式を記述しました。
|
204
|
+
|
205
|
+
|
206
|
+
|
207
|
+
一応計算はできましたが、効率の悪いコードになっていると思っております。
|
208
|
+
|
209
|
+
もし、改善するところがありましたらコメントいただけると大変助かります。
|