2017-03-02 21 views
1

私は以下のように定義された3つの異なるカーブ(Modified NACAプロファイル)をプロットしようとしていますが、f(y) f(z)である。プロットの結果は同じ曲線に3回あります。私が間違っているところを指摘してくれる人はいませんか?matplotlib/pythonに複数の曲線をプロットする

乾杯。

import sympy as sy 
import numpy as np 
import matplotlib.pyplot as plt 

x, z, w, a0, a1, a2, a3, n, c, = symbols('x z w a0 a1 a2 a3 n c ') 


def f(x): 
    return 2.2268*(x)**(1/2)+2.6295*x-0.0217*(x)**2+5.7406*10**(-5)*(x)**3 

def f(z): 
    return 2.2268*(z)**(1/2)+1.5821*z-8.2664*10**(-3)*(z)**2+1.3718*10**(-5)*(z)**3 

def f(w): 
    return 2.2268*(w)**(1/2)+1.1139*w-4.2846*10**(-3)*(w)**2+5.1828*10**(-6)*(w)**3 

x = np.arange(0., 300, 0.01) 
y = np.arange(0., 300, 0.01) 
z = np.arange(0., 300, 0.01) 
w = np.arange(0., 300, 0.01) 

plt.plot(x, f(x),) 
plt.show() 


plt.plot(z, f(z),) 
plt.show() 


plt.plot(w, f(w),) 
plt.show() 

plt.plot(x, f(x), z, f(z), w, f(w),) 
plt.show() 

答えて

1

機能はその名前によってのみ参照されます。異なる入力パラメータのセットを使用しても、Pythonに関する限り、それを固有の関数にすることはできません。結果として、関数fを宣言するたびに、前のバージョンを上書きします。したがって、最後にはf(w)だけが残され、これはすべてのプロットに対して繰り返し呼び出されます。

この問題を解決する最も簡単な方法は、あなたの機能別の名前与えることです:今

import sympy as sy 
import numpy as np 
import matplotlib.pyplot as plt 

x, z, w, a0, a1, a2, a3, n, c, = sy.symbols('x z w a0 a1 a2 a3 n c ') 


def f(x): 
    return 2.2268*(x)**(1/2)+2.6295*x-0.0217*(x)**2+5.7406*10**(-5)*(x)**3 

def g(z): 
    return 2.2268*(z)**(1/2)+1.5821*z-8.2664*10**(-3)*(z)**2+1.3718*10**(-5)*(z)**3 

def h(w): 
    return 2.2268*(w)**(1/2)+1.1139*w-4.2846*10**(-3)*(w)**2+5.1828*10**(-6)*(w)**3 

x = np.arange(0., 300, 0.01) 
y = np.arange(0., 300, 0.01) 
z = np.arange(0., 300, 0.01) 
w = np.arange(0., 300, 0.01) 

plt.plot(x, f(x),) 
plt.show() 


plt.plot(z, g(z),) 
plt.show() 


plt.plot(w, h(w),) 
plt.show() 

plt.plot(x, f(x), z, g(z), w, h(w),) 
plt.show() 

を、また別の関数での入力としてXを再利用することが可能であろうことが、その後のシンボリック表現はあなたが望むものと正確に一致しないかもしれません(記号が実際にここで使われていないので、これは短縮された例であると仮定します)。

+0

このような真っ直ぐな質問に時間をかけていただき、ありがとうございます。あなたのアドバイスは問題を解決しました。乾杯 – chopboy

関連する問題