質問編集履歴

1

質問内容を改訂しました.

2018/12/20 02:47

投稿

mdshiba2
mdshiba2

スコア21

test CHANGED
File without changes
test CHANGED
@@ -1,183 +1,3 @@
1
- ### 前提・実現したいこと
2
-
3
-
4
-
5
- python 初心者です.
6
-
7
- matplotlibを使用してグラフを描いています.出力として描けているもののエラーが出ています.
8
-
9
- 宜しくお願い致します.
10
-
11
-
12
-
13
- ### 発生している問題・エラーメッセージ
14
-
15
-
16
-
17
- 関数を描写するプログラムを走らせたところ,グラフとして描かれるものの,Python shellの方でエラーが出てしまいます.
18
-
19
-
20
-
21
- ```
22
-
23
- #エラー部分
24
-
25
-
26
-
27
- Warning (from warnings module):
28
-
29
- File "C:\Users\owner\AppData\Local\Programs\Python\Python36\lib\site-packages\numpy\core\numeric.py", line 501
30
-
31
- return array(a, dtype, copy=False, order=order)
32
-
33
- ComplexWarning: Casting complex values to real discards the imaginary part
34
-
35
-
36
-
37
- ```
38
-
39
-
40
-
41
- ### 該当のソースコード
42
-
43
-
44
-
45
- ```Python
46
-
47
-
48
-
49
-
50
-
51
- import numpy as np
52
-
53
- import matplotlib.pyplot as plt
54
-
55
- from sympy import *
56
-
57
-
58
-
59
- init_printing()
60
-
61
-
62
-
63
- plt.grid(True)
64
-
65
- plt.xlabel('$x$', fontsize=16)
66
-
67
- plt.ylabel('$theta$', fontsize=16)
68
-
69
- plt.title('下型傾き')
70
-
71
-
72
-
73
- #縦横比1:1
74
-
75
- plt.gca().set_aspect('equal', adjustable='box')
76
-
77
-
78
-
79
- x = Symbol('x')
80
-
81
- R=5.460788
82
-
83
- k=-0.7277225
84
-
85
- A=-0.0074621747
86
-
87
- B=0.00012757784
88
-
89
- C=-1.7561495*10**(-6)
90
-
91
- D=1.0882134*10**(-8)
92
-
93
- E=9.5892478*10**(-11)
94
-
95
- F=-4.0264407*10**(-12)
96
-
97
- c=1/R
98
-
99
-
100
-
101
- # 計算式
102
-
103
- z =c*x**2/(1+(1-(1+k)*c**2*x**2)**(1/2))+A*x**2+B*x**4+C*x**6+D*x**8+E*x**10+F*x**12
104
-
105
-
106
-
107
- prime_z = Derivative(z, x).doit()
108
-
109
-
110
-
111
- a = Symbol('a')
112
-
113
- z_a = z.subs(x, a) # f(a)
114
-
115
- prime_z_a = prime_z.subs(x, a) # f'(a)
116
-
117
- tangent = prime_z_a * (x - a) + z_a # 点 (a, f(a)) の接線
118
-
119
- normal = (-1 / prime_z_a) * (x - a) + z_a # 点 (a, f(a)) の法線
120
-
121
- theta = deg(atan(-1 / prime_z_a)) # 法線の角度
122
-
123
-
124
-
125
- xs = np.arange(0.01, 6.3, 0.01)
126
-
127
- thetas = np.array([theta.subs(a, t) for t in xs])
128
-
129
-
130
-
131
-
132
-
133
- # 横軸の変数。縦軸の変数。
134
-
135
- plt.plot(xs, thetas+90)
136
-
137
-
138
-
139
-
140
-
141
- # 描画実行
142
-
143
- plt.show()
144
-
145
-
146
-
147
-
148
-
149
- #csvデータ取得
150
-
151
- np.savetxt("lowwer deg of points.csv", np.vstack([xs, thetas]).T, delimiter=",")
152
-
153
-
154
-
155
- ```
156
-
157
-
158
-
159
- ###グラフ
160
-
161
-
162
-
163
- ![イメージ説明](d461bbb6afa8885c6c702211c1e562b5.png)
164
-
165
-
166
-
167
-
168
-
169
- ### 補足情報(FW/ツールのバージョンなど)
170
-
171
-
172
-
173
- python3.6を使用しています.
174
-
175
-
176
-
177
- 解決方法がわかっていないので,ご協力お願い致します.
178
-
179
-
180
-
181
1
  ### 前提・実現したいこと
182
2
 
183
3