1
import numpy as np
import matplotlib.pylab as plt
def tube():
theta = np.linspace(0, np.pi/2, 30)
x = np.cos(theta)
y = np.sin(theta)
z = x*0.8
w = y*0.8
plt.plot(z,w)
plt.plot(x,y)
plt.axis("equal")
plt.show()
print plt.figure(1);tube()
def euler():
A, B, a = 40, 10, 2
t = 10 # time
dt = 1e-3 # interval
nbpt = int(t/dt)
n = 1
s = 1. # sign of the derivative, initially chosen
y = [0]*nbpt # result
while n < nbpt:
yp2 = B - A*y[n-1]**a
if yp2 < 0:
s = -s
n -= 1 # recalculating the previous value
else:
y[n] = y[n-1] + dt*s*np.sqrt(yp2)
n += 1
plt.plot(np.linspace(0,t,nbpt),y)
plt.show()
print plt.figure(2);euler()
私はtube()
で作られたチューブにeuler()
で作られた曲線を描きたいです。私はデカルト座標から極座標に移動しなければならないと思いますが、とにかくPythonでプロセスを簡単にするためにそこにはありますか?
を得るありがとうございます!他にどんな方法で話していますか? –
'euler()'によって返される最初の点は '(0,0)'です。この点がどこで管の内側(または上)にマッピングされるべきかは明確ではない。上で選択した '(0.9、0)'や '(1,0)'(シータの位相シフトあり)、 '(0.8,0)'、 '' 0,1 ) 'や'(0,0.8) 'などがあります。無限の可能性があります。 'theta'(これは異常な方法でカーブを伸ばしたり伸ばすことができる)や' r'の非線形変換に加えて、可能性は無限です。 – unutbu
わかりました。ありがとうございました :) –