Найти - Пользователи
Полная версия: Аппроксимация функции
Начало » Центр помощи » Аппроксимация функции
1
rs5630
Дана функция y = x^2 + случайное значение от 0 до 0.3. Нужно построить среднюю кривую и среднеквадратичное отклонение. Желательно с помощью numpy. Нашел как построить среднее и СКО, но нужно, чтобы среднее было кривой как на графике ниже, а не прямой как у меня. Подскажите как изменить программу.

График: Your text to link here…

import numpy as np
import matplotlib.pyplot as plt
from math import *
x = np.linspace(0,3,20)
y = np.zeros(20)
a = np.random.normal(0,0.3,size=2E1)
for i in range(20):
    y[i] = x[i]**2 + a[i]
A = np.vstack([x, np.ones(len(x))]).T
m, c = np.linalg.lstsq(A, y)[0]
plt.plot(x, y, 'bo-', lw = 1, label=u'Function')
plt.plot(x, m*x + c, 'r', label='Average')
std = np.zeros(20)
for i in range(20):
    std[i] = (sqrt((y[i] - (m*x[i] + c))**2))
plt.errorbar(x, y, std, label=u'Std')
plt.legend(loc='best')
plt.title(u'Plots')
plt.xlabel('X')
plt.ylabel('Y')
plt.grid()
plt.show()
Paranoia_Agent
Я так понял, Вам нужно аппроксимировать график полиномом 2ого порядка.
Я прикрепил класс polynomial.
import polynomial
import numpy as np
import matplotlib.pyplot as plt
from math import *
x = np.linspace(0,3,20)
y = np.zeros(20)
a = np.random.normal(0,0.3,size=2E1)
for i in range(20):
    y[i] = x[i]**2 + a[i]
poly=polynomial.polynomial(x,y,2) #Последнее значение - степень полинома, то есть результат вида: k0*x^2+k1*x+k2
k2,k1,k0=poly.coefficients # Соответственно, коэффициенты.
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