#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, … .