Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
106 views
Kernel: Python 3 (Ubuntu Linux)
import pandas as pd import numpy as np from scipy import optimize, linalg import scipy from scipy import spatial import re import math import pandas as pd from numpy import zeros, dot, savetxt import matplotlib from matplotlib import pylab as plt from math import ceil %matplotlib inline
x = [1.2, 1.3, 1.4, 1.6, 1.7, 1.9] y = [0.6703, 0.5169, 0.4350, 0.2800, 0.2541, 0.2466]
k = 1 izn2 = [1.2, 1.3, 1.4, 1.6, 1.7, 1.9] fzn2 = [0.6703, 0.5169, 0.4350, 0.2800, 0.2541, 0.2466]
l = int(len(x)/k) izn3 = [izn2[n*l] for n in range(k)] + [izn2[-1]]; fzn3 = [fzn2[n*l] for n in range(k)] + [fzn2[-1]]
def halfchange(arr, size): #разбиваем участок на интервалы, находим среднее по интервалу и строим линии return list(map(lambda x: arr[x * size:x * size + size], list(range(0, ceil(len(arr) / size))))) izn3 = [];fzn3 = [] izn3 += [sum(i)/len(i) for i in halfchange(izn2, k)] fzn3 += [sum(i)/len(i) for i in halfchange(fzn2, k)] print(izn3, '\n', fzn3)
[1.2, 1.3, 1.4, 1.6, 1.7, 1.9] [0.6703, 0.5169, 0.435, 0.28, 0.2541, 0.2466]
koeff = [] #нахождение коэф кполинома def koeff_search(izn3 = izn3, fzn3 = fzn3): work_m = izn3 znach_func = fzn3 for i in range(len(work_m)): #из списка в матрицу work_m[i] = [work_m[i]] for i in range(len(work_m)): #умножения количества элементов work_m[i] = work_m[i] * (len(work_m)) N = 0 for i in range(len(work_m)): #создание матрицы квадратов for j in range(len(work_m)): work_m[i][j] = work_m[i][j] ** N N += 1 N = 0 koeff = np.linalg.solve(work_m, znach_func) #Находим решение системы return koeff
def Polin_func2(vector, koeff = koeff): znach_v = [] shab = [] for znach in vector: for i in range(len(koeff)): shab += [koeff[i] * (znach ** i)] znach_v += [float(sum(shab))] shab = [] return znach_v
c = koeff_search();c
array([ 409.82909334, -1354.53584685, 1787.19101194, -1173.78194447, 383.32261906, -49.76587302])
dis = np.linspace(1.2, 1.9, num = 20)
plt.plot(x, y, '*', dis, Polin_func2(dis, koeff=c),'-b') plt.show
<function matplotlib.pyplot.show(*args, **kw)>
Image in a Jupyter notebook
print(abs(np.array(y)) - abs(np.array(Polin_func2(x, koeff=c)))) print(np.sqrt(sum([i - sum(y)/len(y) for i in Polin_func2(x, koeff=c)])/(len(x)*(len(x)-1))));print(4.8348823929e-15) print(y) print(Polin_func2(x, koeff=c))
[ 1.42695652e-01 2.94391304e-02 -1.23173913e-02 -8.70304348e-02 -7.27869565e-02 -1.38777878e-16] 4.712160915387242e-09 4.8348823929e-15 [0.6703, 0.5169, 0.435, 0.28, 0.2541, 0.2466] [0.527604347826087, 0.4874608695652174, 0.4473173913043479, 0.36703043478260877, 0.32688695652173927, 0.24660000000000015]