0
私は数値法として中点法を使って収束をチェックしようとしています。私はデータのテーブルを得ることができますが、それをグラフ化する方法やログスケールを追加する方法はわかりません。ここまでは私のコードです。どんな助けでも大歓迎です。数値積分のためのカバーゲンステスト
from math import exp,pi
import numpy as np
import matplotlib.pyplot as plt
def midpoint(f,a,b,n):
h=float((b-a)/n)
result=0
for i in range(n):
result+=f((a+ h/2.0)+ i*h)
result*= h
return result
#g= lambda y: (y**3)/(exp(y)-1)
g=lambda y: ((exp(-y)*y**3)/(1-exp(-y)))
a=0
b=1000
print( 'n midpoint')
for i in range(1,20):
n=2**i
m=midpoint(g,a,b,n)
print('%7d %.16f' %(n,m))
"""r=(pi**4/15)
plt.plot(n,m,label="numberical")
plt.plot(n,r,label="analytical")
plt.xlabel('n')
plt.ylabel('intergral')
plt.legend()
plt.show()"""
"""plt.semilogx(n,m)
plt.show()"""
これはスーパー役立ちました、ありがとうございました。 IMはあなたがグラフを作るために何をしたのかは分かりません。 plt.gca()とは何ですか? –
[document](https://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.gca)に記載されているように、「現在の図形上に現在のAxesインスタンスを取得する」ことです。私はそれを使って 'xscale'と' ylim'にアクセスしました。 –
ありがとうございます。また、エラーの割合をログ関数としてグラフ化しようとしています。私は上記ナットの大部分をy軸をパーセンテージで変えようとしました。ここで私は最初の中点関数の後に得たものです。私はperc = log(abs(f - r)/(r)))を追加しました。 plt.plot(n、perc)。しかし、それをログにする方法はわかりませんし、エラーを作り続けます。 –