質問するログイン新規登録

回答編集履歴

3

shuusei

2021/08/31 04:38

投稿

ozwk
ozwk

スコア13553

answer CHANGED
@@ -36,11 +36,11 @@
36
36
  > エラーが出ます
37
37
 
38
38
  ```python
39
+ if i=5 :
40
+ ^
39
- for n in range(1, nt+1):
41
+ SyntaxError: invalid syntax
40
- Q[i]=40000000000*dt*n
41
42
  ```
42
43
 
43
- 「`i`っていきなり出てきたけど何だよ」とpythonくんは思っています。
44
44
 
45
45
  ---
46
46
 

2

追記

2021/08/31 04:38

投稿

ozwk
ozwk

スコア13553

answer CHANGED
@@ -4,7 +4,7 @@
4
4
  temp_new[i] = Q+temp[i] + dt * alpha * (temp[i+1] - 2.0 * temp[i] + temp[i-1]) / (dx * dx)
5
5
  ```
6
6
 
7
- これだと全ての`n`、全て(両端除く)の`i`に対して`Q`が追加して代入ているので
7
+ これだと全ての`n`、全て(両端除く)の`i`に対して`Q`が追加して代入されているので
8
8
  `if`文で適切に`n`と`i`の値で場合分けしましょう。
9
9
 
10
10
  あと、`Q`は℃/sですが、`temp`は`℃`ですよね、次元が異なるものを足し合わせています。
@@ -19,6 +19,7 @@
19
19
 
20
20
  べつにそれでもいいですが、そんなことしなくてもFTCSのループで`if`で`temp_new`の代入文に`Q`の項を含めるかどうか分岐すればいいです。
21
21
 
22
+
22
23
  ```python
23
24
  for i in range(1, nx-1):
24
25
  if Qが加わる位置と時刻だったら:
@@ -27,6 +28,11 @@
27
28
  temp_new[i] = temp[i] ...
28
29
  ```
29
30
 
31
+ (元の回答もこれを意図していました)
32
+
33
+ もちろんレーザーによる加熱に分布をもたせたいというならQを配列にしたほうが見通しはいいと思いますが。
34
+
35
+
30
36
  > エラーが出ます
31
37
 
32
38
  ```python
@@ -34,4 +40,10 @@
34
40
  Q[i]=40000000000*dt*n
35
41
  ```
36
42
 
37
- 「`i`っていきなり出てきたけど何だよ」とpythonくんは思っています。
43
+ 「`i`っていきなり出てきたけど何だよ」とpythonくんは思っています。
44
+
45
+ ---
46
+
47
+ 正直やろうとしていることに対してスキルが全然追いついていないので
48
+ もっとかんたんなプログラムから慣らしていったほうが結果的に早いと思います。
49
+ 急がばなんとやらです。

1

コメントに対する追記

2021/08/31 04:21

投稿

ozwk
ozwk

スコア13553

answer CHANGED
@@ -7,4 +7,31 @@
7
7
  これだと全ての`n`、全て(両端除く)の`i`に対して`Q`が追加して代入しているので
8
8
  `if`文で適切に`n`と`i`の値で場合分けしましょう。
9
9
 
10
- あと、`Q`は℃/sですが、`temp`は`℃`ですよね、次元が異なるものを足し合わせています。
10
+ あと、`Q`は℃/sですが、`temp`は`℃`ですよね、次元が異なるものを足し合わせています。
11
+
12
+ ---
13
+
14
+ > 回答ありがとうございます。ご指摘していただいた通り吸収熱Qの単位が℃/s なので時間の要素nと時間間隔dtをかけました。(吸収熱は時間とともに増加させたいため)
15
+
16
+ そうしたら次元が`℃・s`になってしまいませんか?
17
+
18
+ > また吸収熱Qをある位置における熱とし、Temp[i]と同様Q[i]に変更しましました。
19
+
20
+ べつにそれでもいいですが、そんなことしなくてもFTCSのループで`if`で`temp_new`の代入文に`Q`の項を含めるかどうか分岐すればいいです。
21
+
22
+ ```python
23
+ for i in range(1, nx-1):
24
+ if Qが加わる位置と時刻だったら:
25
+ temp_new[i] = Q + temp[i] ...
26
+ else:
27
+ temp_new[i] = temp[i] ...
28
+ ```
29
+
30
+ > エラーが出ます
31
+
32
+ ```python
33
+ for n in range(1, nt+1):
34
+ Q[i]=40000000000*dt*n
35
+ ```
36
+
37
+ 「`i`っていきなり出てきたけど何だよ」とpythonくんは思っています。