Найти - Пользователи
Полная версия: Построение графика в matplotlib. Аппроксимация. Интерполяция. Scipy
Начало » Центр помощи » Построение графика в matplotlib. Аппроксимация. Интерполяция. Scipy
1 2 3
excander
Есть несколько значений x и y:
x = np.array([2, 4, 8, 10, 20, 50, 70, 100, 150, 200, 300, 400, 500],dtype=float)
y = np.array([90, 45, 22.5, 18, 9, 3.60, 2.57, 1.8, 1.2, 0.9, 0.6, 0.45, 0.36],dtype=float)
Если построить график просто:
import matplotlib.pyplot as plt
plt.plot(x,y)
- точки будут соединены прямыми, получится ломаная, проходящая через данные точки.
Как мне сделать график гладким без особых усилий? мб через scipy как-нибудь?

Пробовал interp1d, но с ней большая осцилляция..
import numpy as np
from scipy.interpolate import interp1d
f2 = interp1d(x, y, kind='cubic')
nx = np.linspace(2,500,100)
plt.plot(x, y,'o',nx, f2(nx))
plt.show()
Даже не совсем могу понять - мне нужно искать интерполяцию (т.к. график должен проходить через мои точки) или аппроксимацию типа scipy.optimize.curve_fit( но у меня же нету шума, опять же. мои точки можно считать точными)
Нужно что-то простое, чтобы показать как ведет себя функция… и все. помогите плз))
4kpt
Хорошо. Как Вы себе представляете кривую, которая будет проходить через все Ваши случайные точки?
Каким образом ее можно высчитать и построить аппаратно чтобы она была адекватной? Единственная возможность - аппроксимация. Если правильно подобрать степень многочлена, то она пройдет очень близко к точкам.

excander
Нужно что-то простое, чтобы показать как ведет себя функция… и все. помогите плз))
Как ведет себя функция? Да это же видно и из ломаной.

Все хитрости, которые Вы хотите применить используют для получения зависимости по точкам, которые были получены эмпирически, т.е. по экспериментальным данным строится теоретическая / в нашем случае математическая / модель (или ее часть) и график служит для визуального отображения отклонения экспериментальных данных и данных модели (эмпирических и теоретических данных). Для оценки степени отклонения при аппроксимации можно использовать норму или СКО.
4kpt
Посмотрите на рисунок. Здесь получена кривая, которая проходит четко через все точки. Использован метод сплайн-интерполяции. Проще - построение сплайна.

Как Вы считате, кривая соответствует поведению функции? Или лучше оставить ломаную?
excander
4kpt
Как Вы себе представляете кривую, которая будет проходить через все Ваши случайные точки?… Как ведет себя функция? Да это же видно и из ломаной.
Да. это видно из ломанной, но мне нужно визуально красивый график, а не ломаную.
Я в матплотлибе 1й день, поэтому знаю пока мало, но думаю должно быть что-то что нарисует мне сплайн по точкам.
4kpt
excander
Для каких Вам задач это надо?
4kpt
Повторюсь еще раз. Если нужно узнать поведение Вашей функции - либо интерполяция, либо - аппроксимация (она позволит описать поведение функции и визуально его отобразить, но пройдет не через Ваши точки).
excander
4kpt
Посмотрите на рисунок. Здесь получена кривая, которая проходит четко через все точки. Использован метод сплайн-интерполяции. Проще - построение сплайна.

Как Вы считате, кривая соответствует поведению функции? Или лучше оставить ломаную?

Думаю, что лучше - зависит от типа функции. в моем случае она монотонно убывает… нет экстремумов.. поэтому отклонение от ломаной у сплайна, думаю будет минимальным.
4kpt
excanderДля каких Вам задач это надо?
я по-моему очень подробно описал) Задача: даны N точек, провести через них кривую. (как в школе, строили график по точкам карандашом) Грубо говоря, хочу сделать задание не на миллиметровке, а в питоне.

4kpt
Еще раз. Для каких задач? Чисто теоретически или кому-то показывать? Цель получения такого графика?
Это будет в презентации на конференции или в статья? Лабораторная работа или что?
excander
Я знаю, что либо аппроксимация либо интерполяция. Мне нужно самое простое решение.
4kpt
Еще раз. Для каких задач? Чисто теоретически или кому-то показывать? Цель получения такого графика?
Это будет в презентации на конференции или в статья? Лабораторная работа или что?
Лабораторка в инсте по БЖД)) А какая разница, лабораторная это, или конференция, или статья, или папе показать хочу красивый график?)) Функции разные что-ли?)
4kpt
Необходимо понять ценность этой информации для окружающих.
excander
Вы ошибаетесь, интерполяцией называют такую разновидность аппроксимации, при которой кривая построенной функции проходит точно через имеющиеся точки данных.
Википедия, как я вижу, рулит. Другой литературы не нашлось :)

Это практически так, но отличается подход. При интерполяции стараются подобрать функцию, значения которой совпадают с заданными точками, при апроксимации - уменьшаю либо среднюю квадратическую ошибку аппроксимации, либо максимум абсолютной ошибки на выбранном интервале.

Теперь без теории. То, чем Вы планируете заниматься можно назвать мат-фетишизмом. Если ценность очень низкая, а Вашем случае именно так, то я рекомендую:
1. Просто провести аппроксимацию, получить полином;
2. Подобрать коэффициенты так, чтобы решение четко проходило через заданные точки;
3. Построить график полученного полинома.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB