前提・実現したいこと
python 初心者です.
下記のプログラムに出てくる関数のxとzとthetaの値をcsvデータとして取り出したいです.
宜しくお願い致します.
自作コード
Python
1 2import numpy as np 3import matplotlib.pyplot as plt 4from sympy import * 5 6init_printing() 7 8plt.grid(True) 9plt.xlabel('$x$', fontsize=16) 10plt.ylabel('$theta$', fontsize=16) 11 12#縦横比1:1 13plt.gca().set_aspect('equal', adjustable='box') 14 15x = Symbol('x') 16R=5.460 17k=-0.727 18A=-0.00746 19B=0.000127 20C=-1.75*10**(-6) 21D=1.08*10**(-8) 22E=9.58*10**(-11) 23c=1/R 24 25# 計算式 26z =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 27 28prime_z = Derivative(z, x).doit() 29 30a = Symbol('a') 31z_a = z.subs(x, a) # f(a) 32prime_z_a = prime_z.subs(x, a) # f'(a) 33tangent = prime_z_a * (x - a) + z_a # 点 (a, f(a)) の接線 34normal = (-1 / prime_z_a) * (x - a) + z_a # 点 (a, f(a)) の法線 35theta = deg(atan(-1 / prime_z_a)) # 法線の角度 36 37xs = np.arange(0.01, 6.3, 0.01) 38thetas = np.array([theta.subs(a, t) for t in xs]) 39zs = np.array([z.subs(a, u) for u in xs]) 40# 横軸の変数。縦軸の変数。 41plt.plot(x, z) 42# 描画実行 43plt.show() 44 45#csvデータ取得 46np.savetxt("x,z,theta of points.csv", np.vstack([x, zs, thetas]).T, delimiter=",")
xが変化した時の z,thetaの値をcsvデータとして取り出したいです.
###エラー
Traceback (most recent call last): File "C:/Users/owner/Desktop/aaa.py", line 47, in <module> plt.plot(x, z) File "C:\Users\owner\AppData\Local\Programs\Python\Python36\lib\site-packages\matplotlib\pyplot.py", line 2813, in plot is not None else {}), **kwargs) File "C:\Users\owner\AppData\Local\Programs\Python\Python36\lib\site-packages\matplotlib\__init__.py", line 1810, in inner return func(ax, *args, **kwargs) File "C:\Users\owner\AppData\Local\Programs\Python\Python36\lib\site-packages\matplotlib\axes\_axes.py", line 1612, in plot self.add_line(line) File "C:\Users\owner\AppData\Local\Programs\Python\Python36\lib\site-packages\matplotlib\axes\_base.py", line 1895, in add_line self._update_line_limits(line) File "C:\Users\owner\AppData\Local\Programs\Python\Python36\lib\site-packages\matplotlib\axes\_base.py", line 1917, in _update_line_limits path = line.get_path() File "C:\Users\owner\AppData\Local\Programs\Python\Python36\lib\site-packages\matplotlib\lines.py", line 945, in get_path self.recache() File "C:\Users\owner\AppData\Local\Programs\Python\Python36\lib\site-packages\matplotlib\lines.py", line 640, in recache x = _to_unmasked_float_array(xconv).ravel() File "C:\Users\owner\AppData\Local\Programs\Python\Python36\lib\site-packages\matplotlib\cbook\__init__.py", line 1365, in _to_unmasked_float_array return np.asarray(x, float) File "C:\Users\owner\AppData\Local\Programs\Python\Python36\lib\site-packages\numpy\core\numeric.py", line 501, in asarray return array(a, dtype, copy=False, order=order) File "C:\Users\owner\AppData\Local\Programs\Python\Python36\lib\site-packages\sympy\core\expr.py", line 256, in __float__ raise TypeError("can't convert expression to float") TypeError: can't convert expression to float
補足情報(FW/ツールのバージョンなど)
python3.6を使用しています.
解決方法がわかっていないので,ご協力お願い致します.
回答3件
あなたの回答
tips
プレビュー