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

回答編集履歴

4

説明を修正

2020/12/07 17:57

投稿

Daregada
Daregada

スコア11990

answer CHANGED
@@ -1,7 +1,7 @@
1
1
  描きたいのはこんなグラフでしょうか?
2
2
  補足: 場合分けの大小が逆になっていたのに加え、片方は`* x`が式から抜けていた。また、Pythonでは累乗の演算子は`**`だが、片方の式では間違って`^`を使っていた。
3
- 補足の補足: 式が違っていることが判明。累乗は2乗ではなく3乗で、`x`や`(L - x)`を掛ける対象のカッコの範囲も間違っていた。
4
3
 
4
+
5
5
  ```Python
6
6
  import matplotlib.pyplot as plt
7
7
 

3

式をさらに修正し、グラフを差し替え

2020/12/07 17:57

投稿

Daregada
Daregada

スコア11990

answer CHANGED
@@ -1,5 +1,6 @@
1
1
  描きたいのはこんなグラフでしょうか?
2
2
  補足: 場合分けの大小が逆になっていたのに加え、片方は`* x`が式から抜けていた。また、Pythonでは累乗の演算子は`**`だが、片方の式では間違って`^`を使っていた。
3
+ 補足の補足: 式が違っていることが判明。累乗は2乗ではなく3乗で、`x`や`(L - x)`を掛ける対象のカッコの範囲も間違っていた。
3
4
 
4
5
  ```Python
5
6
  import matplotlib.pyplot as plt
@@ -13,8 +14,8 @@
13
14
 
14
15
 
15
16
  x = list(range(L))
16
- y = [(b * P) * (-x_i**2 + a * (L + b)) * x_i / (6 * E * I * L)
17
+ y = [(b * P) * (-x_i**3 + a * (a + 2 * b) * x_i) / (6 * E * I * L)
17
- if x_i < a else (a * P) / (6 * E * I * L) * (-(L - x_i)**2 - b * (L + a)) * (L - x_i) for x_i in x]
18
+ if x_i < a else (a * P) / (6 * E * I * L) * (-(L - x_i)**3 + b * (2 * a + b) * (L - x_i)) for x_i in x]
18
19
 
19
20
  plt.grid(which="major", color="gray", linestyle="-")
20
21
  plt.xlim(0, L)
@@ -23,6 +24,7 @@
23
24
 
24
25
  plt.plot(x, y)
25
26
  plt.show()
27
+
26
28
  ```
27
29
 
28
- ![修正後のグラフ](fd5cca57d1ad9fd7559e4d79494c21b4.png)
30
+ ![さらに修正後のグラフ](c5983222d5f5136f42837800d1a45fe1.png)

2

式を修正し、グラフを差し替えた

2020/12/07 17:55

投稿

Daregada
Daregada

スコア11990

answer CHANGED
@@ -1,4 +1,5 @@
1
1
  描きたいのはこんなグラフでしょうか?
2
+ 補足: 場合分けの大小が逆になっていたのに加え、片方は`* x`が式から抜けていた。また、Pythonでは累乗の演算子は`**`だが、片方の式では間違って`^`を使っていた。
2
3
 
3
4
  ```Python
4
5
  import matplotlib.pyplot as plt
@@ -10,10 +11,11 @@
10
11
  I = 17280000
11
12
  P = 3000
12
13
 
13
- x = list(range(3000))
14
- y = [(a * P) / (6 * E * I * L) * (L - x_i) * (-((L - x_i) ** 2) - b * (L + a))
15
- if x_i < 1200 else (b * P) * (-x_i**2 + a * (L + b)) / (6 * E * I * L) for x_i in x]
16
14
 
15
+ x = list(range(L))
16
+ y = [(b * P) * (-x_i**2 + a * (L + b)) * x_i / (6 * E * I * L)
17
+ if x_i < a else (a * P) / (6 * E * I * L) * (-(L - x_i)**2 - b * (L + a)) * (L - x_i) for x_i in x]
18
+
17
19
  plt.grid(which="major", color="gray", linestyle="-")
18
20
  plt.xlim(0, L)
19
21
  plt.ylim(min(y) - 1, max(y) + 1)
@@ -23,4 +25,4 @@
23
25
  plt.show()
24
26
  ```
25
27
 
26
- ![グラフサンプル](2713edb4eaa16b9afb5761f34ee933bd.png)
28
+ ![修正後のグラフ](fd5cca57d1ad9fd7559e4d79494c21b4.png)

1

式を修正してグラフを差し替え

2020/12/07 17:16

投稿

Daregada
Daregada

スコア11990

answer CHANGED
@@ -11,7 +11,7 @@
11
11
  P = 3000
12
12
 
13
13
  x = list(range(3000))
14
- y = [(a * P) / (6 * E * I * L) * (L - x_i) * (-((L - x_i) ^ 2) - b * (L + a))
14
+ y = [(a * P) / (6 * E * I * L) * (L - x_i) * (-((L - x_i) ** 2) - b * (L + a))
15
15
  if x_i < 1200 else (b * P) * (-x_i**2 + a * (L + b)) / (6 * E * I * L) for x_i in x]
16
16
 
17
17
  plt.grid(which="major", color="gray", linestyle="-")
@@ -23,4 +23,4 @@
23
23
  plt.show()
24
24
  ```
25
25
 
26
- ![グラフサンプル](7bfbda3db08fbfc873cd57cb6f78ed80.png)
26
+ ![グラフサンプル](2713edb4eaa16b9afb5761f34ee933bd.png)