質問編集履歴
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
システムの更新
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 =
|
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
|
-
|
87
|
+
lines, = ax.plot(x[1:N+1], u[1:N+1])
|
98
|
-
|
99
|
-
y = u[0]
|
100
88
|
|
101
89
|
|
102
90
|
|
103
|
-
|
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[
|
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
|
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
|
-
|
115
|
+
plt.pause(τ)
|
138
116
|
|
139
117
|
plt.show()
|
140
118
|
|
@@ -146,9 +124,9 @@
|
|
146
124
|
|
147
125
|
|
148
126
|
|
149
|
-
|
127
|
+
このように、アニメーションとして描くシステムは作ることができました。
|
150
128
|
|
151
|
-
こ
|
129
|
+
この内容を少し変えたら t を指定してグラフが描けると思うのですが、その方法がわかりません。
|
152
130
|
|
153
131
|
何日いろいろ試しても全然分からなかったため質問させていただきました。よろしくお願いいたします。
|
154
132
|
|