如何解决为什么有些数据点显示为1e-16?我可以将它们隐藏在情节之外吗?
我想知道为什么某些数据点显示在1e-16处,以及如何调整图以隐藏这些数据点。
代码如下:
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
变量f4为:
def f4(x):
if x>0.125 and x<0.125+1/3:
return 1
return 0
然后右键和中点函数:
def rightrs (f,a,b,n):
h = (b-a)/n
s = 0.
x = a + h
for i in range (n):
s += f(x)
x += h
return s * h
def midpoint (f,n):
h = (b-a)/n
s = 0.
x = a + h/2.
for i in range(n):
s += f(x)
x += h
return s*h
最后,我用以下代码对其进行了绘制:
ns = np.arange (1,1000)
error_midpoint = np.zeros(len(ns))
error_rightrs = np.zeros(len(ns))
for i in range(len(ns)):
error_midpoint[i] = midpoint(f4,2,ns[i]) - 1./3.
error_rightrs[i]= rightrs(f4,ns[i]) - 1./3.
h = 2./ns
plt.loglog(h,error_rightrs,".")
plt.loglog(h,error_midpoint,".")
这是图形:
有人可以告诉我为什么某些数据点显示在1e-16处以及如何调整图以隐藏这些数据点吗?
解决方法
某些数据点显示在1e-16处,因为那是它们的值。您可以通过在图中的y轴上设置适当的限制来隐藏它们。尝试plt.ylim
。
其他评论:
错误应该使用绝对值或规范来计算。
对于这些类型的收敛测试,您应该选择对数刻度n
,即1,2,4,8,16,...。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。