質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.40%
for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

2回答

393閲覧

Pythonの繰り返し演算処理を行いたい

east-site.3

総合スコア1

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2023/06/05 07:40

実現したいこと

dydx=x+c
(xは1から10までの整数値をとる変数、cは定数である)
という微分方程式を定数c=1,2,3,4,5の場合それぞれ解きたい.

具体的には
dydx=x+1
dydx=x+2
dydx=x+3
dydx=x+4
dydx=x+5
の5つの微分方程式をfor文を用いて順番に解いていきそれぞれのyをリスト型の
c=1の場合はypoints_1
c=2の場合はypoints_2
c=3の場合はypoints_3
c=4の場合はypoints_4
c=5の場合はypoints_5
に代入したい

  • ▲▲機能を動作するようにする

前提

ここに質問の内容を詳しく書いてください。
上記の内容を解く

発生している問題・エラーメッセージ

NameError Traceback (most recent call last) <ipython-input-18-9cb7432c946d> in <cell line: 18>() 18 for c in crange: 19 for x in xrange: ---> 20 ypoints_c.append(dydx) 21 k_1=func(x,a,b) 22 dydx +=k_1 NameError: name 'ypoints_c' is not defined

該当のソースコード

Python

import numpy as np import matplotlib.pyplot as plt xrange=np.arange(1,11,1) c=0 crange=np.arange(1,6,1) dydx=0 ypoints_1=[] ypoints_2=[] ypoints_3=[] ypoints_4=[] ypoints_5=[] def func(x,a,b): dydx=x+c return dydx for c in crange: for x in xrange: ypoints_c.append(dydx) k_1=func(x,a,b) dydx +=k_1

試したこと

リストypointsの名前を変えてみたりした

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ypointsnumpy.ndarray にするとよいかと思います。

python

1xrange = np.arange(1, 11, 1) 2crange = np.arange(1, 6, 1) 3ypoints = np.empty((len(crange), len(xrange))) 4 5for c in crange: 6 for x in xrange: 7 ypoints[c-1, x-1] = dydx 8 k_1 = func(x, a, b) 9 dydx += k_1 10 11print(ypoints) 12 13# [[ 0. 2. 5. 9. 14. 20. 27. 35. 44. 54.] 14# [ 65. 68. 72. 77. 83. 90. 98. 107. 117. 128.] 15# [140. 144. 149. 155. 162. 170. 179. 189. 200. 212.] 16# [225. 230. 236. 243. 251. 260. 270. 281. 293. 306.] 17# [320. 326. 333. 341. 350. 360. 371. 383. 396. 410.]]

投稿2023/06/05 08:09

melian

総合スコア20422

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ypoints_1のような別個のリスト変数を用意するのではなくcの値をキーとするypointsという辞書変数を利用してはどうでしょうか。
なお、以下の例示コードでは微分方程式うんぬんはおいといて、変数の使い方のみを示しています

Python

1import numpy as np 2 3xrange=np.arange(1,11,1) 4crange=np.arange(1,6,1) 5dydx=0 6 7ypoints = {} 8 9for c in crange: 10 ypoints[c] = [] 11 for x in xrange: 12 ypoints[c].append(dydx) 13 #k_1=func(x,a,b) 14 k_1 = 1 15 dydx +=k_1 16 17print(ypoints) 18# {1: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 2: [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], 3: [20, 21, 22, 23, 24, 25, 26, 27, 28, 29], 4: [30, 31, 32, 33, 34, 35, 36, 37, 38, 39], 5: [40, 41, 42, 43, 44, 45, 46, 47, 48, 49]}

投稿2023/06/05 08:07

can110

総合スコア38337

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

east-site.3

2023/06/05 08:51

丁寧なご回答ありがとうございました.出力なのですが5つの微分方程式を個別に解いた値をypointsに代入したいのです. 具体的には微分方程式 dydx=x+1 dydx=x+2 dydx=x+3 dydx=x+4 dydx=x+5 を積分した式のyを以下のように5つのリストまたは辞書変数に代入したいのです y=(1/2)*x**2+x. x=1から10までを代入した値  1.5 4 7.5 12. 17.5 24. 31.5 40. 49.5 y=(1/2)*x**2+2*x x=1から10までを代入した値 2.5 6. 10.5 16. 22.5 30. 38.5 48. 58.5 y=(1/2)*x**2+3*x x=1から10までを代入した値 3.5 8. 13.5 20. 27.5 36. 45.5 56. 67.5 y=(1/2)*x**2+4*x x=1から10までを代入した値 4.5 10. 16.5 24. 32.5 42. 52.5 64. 76.5 y=(1/2)*x**2+5*x x=1から10までを代入した値 5.5 12. 19.5 28. 37.5 48. 59.5 72. 85.5
can110

2023/06/05 08:56

x=1~10の順で、(1/2)*x**2+c*x の値をリストに追加すればよいかと思いますが。
east-site.3

2023/06/05 10:53

度重なるご返信ありがとうございます.ご返答頂いたプログラムにそれを組み込もうと色々取り組んでみたのですがどうもうまく行きません.もしよろしければご回答頂いたプログラムに dydx=x+1を積分したy=(1/2)*x**2+x. の結果  1.5 4 7.5 12. 17.5 24. 31.5 40. 49.5 dydx=x+2を積分したy=(1/2)*x**2+2*x  2.5 6. 10.5 16. 22.5 30. 38.5 48. 58.5 dydx=x+3を積分したy=(1/2)*x**2+3*x  3.5 8. 13.5 20. 27.5 36. 45.5 56. 67.5 dydx=x+4を積分したy=(1/2)*x**2+4*x  4.5 10. 16.5 24. 32.5 42. 52.5 64. 76.5 dydx=x+5を積分したy=(1/2)*x**2+5*x  5.5 12. 19.5 28. 37.5 48. 59.5 72. 85.5 を出力するプログラムをお見せ頂いてもよろしいでしょうか.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.40%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問