/
Snegovik
/
dzPython
Обзор
Документация
Войти
/
Snegovik
/
dzPython
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
approximation/approx_var_7.py
53 строки
1 KB
Maxim
Аппроксимация
04 ноя 2024, 12:33
04 ноя 2024, 12:33
53e959d
Код
Авторство
О чём код?
import numpy as np from matplotlib import pyplot as plt #Нужная нам функция x = np.linspace(0,5,1000) y = (np.exp(x**(1/2))) #степень полинома n = 1 n = n + 1 #Считаем a a = np.zeros(n) for i in range(n): for j in range(len(x)): a[i] += (x[j]**i*y[j]) #Считаем b b = np.zeros((n, n)) for i in range(n): for j in range(n): for k in range(len(x)): b[i][j] += x[k]**(i+j) Coef = np.zeros(n) #Решаем Крамером систему det_main = np.linalg.det(b) for i in range(len(a)): bi = b.copy() bi[:, i] = a det_dop = np.linalg.det(bi) Coef[i] = det_dop / det_main #Строим полином pol = np.zeros(len(x)) for i in range(len(x)): for j in range(n): pol[i] += Coef[j]*x[i]**j #Погрешности e = y - pol e_max = max(e) e_m = np.sqrt(np.mean(e**2)) print('e_max = ', e_max , 'e_m =', e_m) print('e_max = ', round(e_max * 100),'%', 'e_m =', round(e_m * 100),'%') plt.plot(x, y, 'blue', label='Исходные данные') plt.plot(x, pol, 'red', label=f'Аппроксимация полиномом {n - 1}-й степени') plt.xlabel('Ось х') plt.ylabel('Ось y') plt.legend() plt.show()