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()"""
谢谢你,这是超级有帮助的。即时消息不确定你做了什么来制作图表。什么是plt.gca()? –
如[文档](https://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.gca)中所述,它是“在当前图上获取当前轴实例”。我用它来让我自己访问'xscale'和'ylim'。 –
谢谢。我也试图把百分比误差作为一个对数函数。我保持大部分上述螺母尝试改变y轴的百分比。这是我在初始中点功能后得到的。我加了perc = log((abs(f-r)/(r))) plt.plot(n,perc)。但我不知道如何使它成为一个日志,并不断发出错误。 –