2017-11-10 15 views
0

グラフをプロットするためにいくつかの方程式を解こうとしました。 しかし、以下のコードを使用すると正しくプロットできません。関数内のいくつかのパラメータを変更したとしても、x=yの機能を提供します。 私は既に単純な関数xを試しましたが、結果は正しいです。統合は特定の関数では機能しません

私の質問は以下のとおりです。

  • 機能xは(2 0〜2を返す)取り組んでいるが、E(z)ではありません。なにが問題ですか? 2で2と異なるはずです。

  • ここに間違いを見つけましたか?

  • すでに私の積分結果をwolfram alphaと比較しましたが、wolfram alphaはy=xの機能を示していません。


def E(z) : 
    return (1/((m*(1+z)**3)+(r*(1+z)**4)+l+(k*(1+z)**2)))**(1/2)   

import numpy as np              
import matplotlib.pyplot as plt           
import scipy.integrate as integrate           
z = np.arange(0,10,0.0001)             
m = 0.3 
r = 0 
l = 0.7 
k = 1-m-r-l 
y0 = 0 
ys = [] 
for i in range(100000) : 
    ys.append(integrate.quad(E,0,z[i])[0]) 
ys = np.array(ys).flatten() 
L = (1+z)*(ys*(1)) 
plt.plot(z, L/(1+z), linestyle='--', linewidth=2, label=r"$Taylor$") 
plt.legend(loc='upper right', numpoints = 3) 
plt.xlim(0.0, 10) 
plt.ylim(0.0, 2) 
plt.xlabel(r"$z$",fontsize=18) 
plt.ylabel(r"$(v_rec)/c$",size=18) 
plt.show() 
+0

私にplausableに見えるどこかE(z)の関数を呼び出していますか?どこにでも呼び出すのでなければ、その中のコードを変更すると、結果に何も変わらないでしょう。 – DevB2F

+0

'E(z)'が機能していないということをあなたはどういう意味ですか?コードを実行するとどうなりますか?それはあなたが望むものとどのように違いますか? –

答えて

関連する問題