2017-03-02 246 views
1

我想繪製下面定義的三條不同曲線(修改後的NACA輪廓),但是我已經實現的代碼爲f(y)生成了與f(w)相同的結果, 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