Почему некоторые точки данных отображаются как 1e-16? Могу ли я скрыть их от графика?

#python #graph #jupyter-notebook #scientific-computing

#python #График #jupyter-notebook #научные вычисления

Вопрос:

Я хотел бы знать, почему некоторые точки данных отображаются в 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
  

Затем righttrs и функция средней точки:

 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, a, b, 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, 0, 2, ns[i]) - 1./3.
    error_rightrs[i]= rightrs(f4, 0, 2, ns[i]) - 1./3.
h = 2./ns
plt.loglog(h, error_rightrs, ".")
plt.loglog(h, error_midpoint, ".")
  

И вот график:

График

Может кто-нибудь сказать мне, почему некоторые точки данных отображаются в 1e-16 и как настроить график, чтобы скрыть эти точки данных?

Комментарии:

1. Я внес некоторые умозрительные правки, чтобы исправить очевидные ошибки отступов, но я должен был догадаться, что было сломано; пожалуйста, просмотрите. Это синтаксическая ошибка в Python, которая нарушает ваш отступ — пожалуйста, позаботьтесь о том, чтобы опубликовать именно тот код, с которым вам нужна помощь (в настольной версии этого сайта вставьте свой код, выделите его и введите ctrl-K, чтобы правильно его отформатировать).

2. Здесь вы можете увидеть значение: wandbox.org/permlink/LlF8s8kss0QQLR6d Многие значения находятся в диапазоне от 10 ^ -17 до 10^ -16

Ответ №1:

Некоторые точки данных отображаются в 1e-16, потому что это их значения. Вы можете скрыть их, установив соответствующее ограничение на вашей оси y на графике. Попробуйте plt.ylim .

Дополнительные комментарии:

Ошибки должны вычисляться с использованием абсолютных значений или норм.

Для этих типов тестов сходимости вы должны выбирать n в логарифмическом масштабе, то есть 1,2,4,8,16, … .