Pythonで、複雑な双曲線:
????(????)= ????/(√(1+( 2????/???? )^2 )・sin(???? + ????) ) (????=−2, −1, 0, 1)
(但し、????=0~10、???? = arctan(????/2????))を、csvに書き出し、????の値ごとにグラフにしたいと思い、コードを書いたのですが、正負で発散する部分が直線でつながってしまいます。これをなくして、数学的に正しい双曲線のグラフにするにはどうすればいいでしょうか。以下、csv書き出し部分と出力部分になります。
関数が複雑ですが、やりたいことは双曲線の発散部分のつながりをなくすことです。どうぞよろしくお願いします。
python
1import math 2from csv import writer 3π = math.pi 4for v in range(0,11): 5 data = [] 6 for l in range(-2,2): 7 for i in range(0,90): 8 Φ = 2 * π * i / 360 9 if l != 0: 10 Θ = math.atan(π / 2 / l) 11 data.append((v / math.sqrt( 1 + (2 * l / π)**2) / math.sin(Φ + Θ), i)) 12 else: 13 continue 14 15 with open(r'C:ファイルの場所/file{}.csv'.format(v), 'w', newline = '') as f: 16 Wr = writer(f) 17 for d in data: 18 Wr.writerow(d)
python
1import pandas as pd 2import matplotlib.pyplot as plt 3 4 5x = input(" tはいくらですか?(0~10の整数):") 6judge = str.isdecimal(x) 7while judge is False or judge is True and not int(x) in range(0,11): 8 x = input(" 指定された通り入力してください:") 9 judge = str.isdecimal(x) 10else: 11 v = int(x) 12 df = pd.read_csv(r'C:ファイルの場所/{}.csv'.format(v), names=['num1', 'num2']) 13 plt.plot(df['num1'],df['num2']) 14 plt.show()
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/12 08:24
2020/02/12 08:36
2020/02/12 08:38 編集
2020/02/12 09:18
2020/02/13 05:34
2020/02/13 06:30 編集
2020/02/13 06:30
2020/02/13 06:40