回答編集履歴

1

d

2018/12/13 10:00

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -109,3 +109,71 @@
109
109
 
110
110
 
111
111
  ![イメージ説明](59636149c3be7d4c19154926ed7a365a.png)
112
+
113
+
114
+
115
+ ## 追記
116
+
117
+
118
+
119
+ ```python
120
+
121
+ import matplotlib.pyplot as plt
122
+
123
+ import numpy as np
124
+
125
+ from sympy import *
126
+
127
+
128
+
129
+ init_printing()
130
+
131
+
132
+
133
+ x = Symbol('x')
134
+
135
+ c, k = 1, 3
136
+
137
+ z = -(c * x**2 / (1 + (1 - (1 + k) * c**2 * x**2)**0.5))
138
+
139
+ prime_z = Derivative(z, x).doit()
140
+
141
+
142
+
143
+ a = Symbol('a')
144
+
145
+ z_a = z.subs(x, a) # f(a)
146
+
147
+ prime_z_a = prime_z.subs(x, a) # f'(a)
148
+
149
+ tangent = prime_z_a * (x - a) + z_a # 点 (a, f(a)) の接線
150
+
151
+ normal = (-1 / prime_z_a) * (x - a) + z_a # 点 (a, f(a)) の法線
152
+
153
+ theta = deg(atan(-1 / prime_z_a)) # 法線の角度
154
+
155
+ ```
156
+
157
+
158
+
159
+ ```
160
+
161
+ xs = np.arange(0.1, 6.28, 0.1)
162
+
163
+ thetas = np.array([complex(theta.subs(a, t)) for t in xs])
164
+
165
+
166
+
167
+ # 保存
168
+
169
+ np.savetxt("points.csv", np.c_[xs, thetas.real, thetas.imag], delimiter=",")
170
+
171
+
172
+
173
+ # 読み込み
174
+
175
+ xs, real, imag = np.loadtxt("points.csv", delimiter=",", unpack=True)
176
+
177
+ thetas = real + 1j * imag
178
+
179
+ ```