質問編集履歴

1

コードを画像からコードの挿入にしました。ご指摘ありがとうございます。

2020/05/28 06:38

投稿

K.T28
K.T28

スコア1

test CHANGED
File without changes
test CHANGED
@@ -22,7 +22,155 @@
22
22
 
23
23
 
24
24
 
25
+ ```ここに言語を入力
26
+
27
+ コード
28
+
29
+ import numpy as np
30
+
31
+ import csv
32
+
33
+ from matplotlib import pyplot as plt
34
+
35
+
36
+
37
+ #楕円方程式
38
+
39
+ def ellipse(x,a,b):#円 範囲を表す
40
+
25
- ![![イメージ説明](4fd5a21b9f982315015dd0e2c928cea6.png)](0c3afc5c33ac6651b06969ebb21bf8fe.png)
41
+ y=b*np.sqrt(1-(np.power(x,2)/np.power(a,2)))#楕円方程式をy=にした形 sqrtは平方根
42
+
43
+ return y
44
+
45
+
46
+
47
+ a=1.0
48
+
49
+ b=0.5
50
+
51
+ t=np.linspace(-1*np.pi,np.pi,100)#-π~πまでの範囲を100等分した等差数列
52
+
53
+ phase=np.pi/2#位相
54
+
55
+ x=a*np.sin(t-phase)#1周期分の正弦波
56
+
57
+ g=np.gradient(x)#Xの勾配計算 符号の変化
58
+
59
+
60
+
61
+ y=[]#全象限のy値計算
62
+
63
+ for i in range(len(g)):
64
+
65
+ y=np.append(y,ellipse(x[i],a,b))#appendで末尾に要素を追加している
66
+
67
+ if i==0:
68
+
69
+ pass
70
+
71
+ elif np.sign(g[i-1])==np.sign(g[i]):
72
+
73
+ pass
74
+
75
+ else:
76
+
77
+ y=-1*y
78
+
79
+ #もしi=0ならなにもしない、それ以外はg[i-1]とg[i]が同じならなにもしない
80
+
81
+ #それ以外はy=-1*yを実行
82
+
83
+
84
+
85
+
86
+
87
+
88
+
89
+ f=open('homework1.csv','w',newline='')
90
+
91
+ writer=csv.writer(f)
92
+
93
+ writer.writerow(['x','y'])
94
+
95
+
96
+
97
+
98
+
99
+
100
+
101
+
102
+
103
+ #グラフ描画
104
+
105
+
106
+
107
+ #フォントサイズ、種類
108
+
109
+ plt.rcParams['font.size']=14
110
+
111
+ plt.rcParams['font.family']='Times New Roman'
112
+
113
+
114
+
115
+ #目盛をうちがわにする
116
+
117
+ plt.rcParams['xtick.direction']='in'
118
+
119
+ plt.rcParams['ytick.direction']='in'
120
+
121
+
122
+
123
+ #目盛線をつける
124
+
125
+ fig=plt.figure()
126
+
127
+ ax1=fig.add_subplot(111)
128
+
129
+ ax1.yaxis.set_ticks_position('both')
130
+
131
+ ax1.xaxis.set_ticks_position('both')
132
+
133
+
134
+
135
+ #軸のラベルを設定する
136
+
137
+ ax1.set_xlabel('x')
138
+
139
+ ax1.set_ylabel('y')
140
+
141
+
142
+
143
+ #データの範囲と刻み目盛を明示する
144
+
145
+ ax1.set_xticks(np.arange(-2,2,0.5))
146
+
147
+ ax1.set_yticks(np.arange(-2,2,0.5))
148
+
149
+ ax1.set_xlim(-1,1)
150
+
151
+ ax1.set_ylim(-1,1)
152
+
153
+
154
+
155
+ #データプロットの準備とともに、ラベルと線の太さ、凡例の設置を行う
156
+
157
+ ax1.plot(x,y,label='ellipse',lw=1)
158
+
159
+
160
+
161
+ ax1.set_aspect('equal')
162
+
163
+ fig.tight_layout()
164
+
165
+
166
+
167
+ #グラフを表示する
168
+
169
+ plt.show()
170
+
171
+ plt.close()
172
+
173
+ ```
26
174
 
27
175
 
28
176