質問編集履歴

2

エラーの削除

2020/06/13 10:47

投稿

yuuui
yuuui

スコア2

test CHANGED
File without changes
test CHANGED
@@ -9,20 +9,6 @@
9
9
  境界条件はノイマン条件で初期値は u(x,t) = x 。
10
10
 
11
11
  初期値境界値問題を D = 1.0 として差分法によって解、t = 0 や t = 0.1 など様々な時刻tにおける解 u(x,t) のグラフを描きたいです。
12
-
13
-
14
-
15
-
16
-
17
- ### 発生している問題・エラーメッセージ
18
-
19
-
20
-
21
- ```
22
-
23
- ValueError: x and y must have same first dimension, but have shapes (100,) and (1,)
24
-
25
- ```
26
12
 
27
13
 
28
14
 

1

システムの更新

2020/06/13 10:47

投稿

yuuui
yuuui

スコア2

test CHANGED
File without changes
test CHANGED
@@ -38,11 +38,9 @@
38
38
 
39
39
 
40
40
 
41
- #(1) 変数と初期パラメータを設定
42
-
43
41
  T = 1.0
44
42
 
45
- M = 1000
43
+ M = 60000
46
44
 
47
45
  L = 1.0
48
46
 
@@ -60,8 +58,6 @@
60
58
 
61
59
 
62
60
 
63
- #偏微分方程式の変数をリストとして準備
64
-
65
61
  x = np.zeros(N+2)
66
62
 
67
63
  u = np.zeros(N+2)
@@ -70,17 +66,13 @@
70
66
 
71
67
 
72
68
 
73
- #(2) 初期値設定
74
-
75
- for j in range(1,N):
69
+ for j in range(1,N,1):
76
70
 
77
71
  x[j] = (j - 0.5)*h
78
72
 
79
73
  u[j] = x[j]
80
74
 
81
-
82
-
83
- #境界条件
75
+
84
76
 
85
77
  u[0] = u[1]
86
78
 
@@ -92,29 +84,23 @@
92
84
 
93
85
  ax = fig.add_subplot(111)
94
86
 
95
-
96
-
97
- x = np.arange(0, 1, 0.01)
87
+ lines, = ax.plot(x[1:N+1], u[1:N+1])
98
-
99
- y = u[0]
100
88
 
101
89
 
102
90
 
103
- #(3)時間発展を計算
91
+ for k in range(0,M-1, 1):
104
92
 
105
- for k in range(0,M-1):
106
-
107
- #(3.1)計算
108
-
109
- for j in range(1,N):
93
+ for j in range(1,N,1):
110
94
 
111
95
  new_u[j] = α*u[j-1] + (1 - 2*α)*u[j] + α*u[j+1]
112
96
 
113
97
 
114
98
 
115
- #リストの更新
99
+ for j in range(1,N,1):
116
100
 
117
- u[1:-1] = new_u[1:-1]
101
+ u[j] = new_u[j]
102
+
103
+
118
104
 
119
105
  #境界条件
120
106
 
@@ -122,19 +108,11 @@
122
108
 
123
109
  u[N+1] = u[N]
124
110
 
125
-
126
111
 
127
- #(3.2)(x[1], u[1]) ~ (x[N], u[N]) を画面に表示
128
112
 
129
- lines, = ax.plot(x, y, "o")
113
+ lines.set_data(x[1:N],u[1:N])
130
114
 
131
- for j in range(1,N):
132
-
133
- y = u[j]
134
-
135
- lines.set_data(x,y)
136
-
137
- plt.pause(0.1)
115
+ plt.pause(τ)
138
116
 
139
117
  plt.show()
140
118
 
@@ -146,9 +124,9 @@
146
124
 
147
125
 
148
126
 
149
- そもそも、ある時刻 t におけるグラフを描きたいのに、アニメーション描くシステムになってしまっていてすみません・・・。りあえずアニメーションのシステムを組もうとしてもエラー出てアニメーションすら出てきませんでした。
127
+ ように、アニメーションとして描くシステムは作ることがきました。
150
128
 
151
- れが完成したら、内容を少し変えたらtを指定してグラフが描けると思うのですが、その方法わかりません。
129
+ 内容を少し変えたら t を指定してグラフが描けると思うのですが、その方法わかりません。
152
130
 
153
131
  何日いろいろ試しても全然分からなかったため質問させていただきました。よろしくお願いいたします。
154
132