Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from math import sin, cos
- import numpy as np
- def f1(x):
- return 1
- def f2(x):
- return (x - 1) ** 2
- def f3(x):
- return cos(2 * x)
- def f4(x):
- return sin(3 * x)
- m = 4
- n = 4
- points = [(0.67, 1.1), (1.4, 0.5), (2.9, 2.1), (3.3, 2.4)]
- a_ij = list()
- for i in range(m):
- for j in range(n):
- if j == 0:
- a_ij.append(f1(points[i][0]))
- elif j == 1:
- a_ij.append(f2(points[i][0]))
- elif j == 2:
- a_ij.append(f3(points[i][0]))
- elif j == 3:
- a_ij.append(f4(points[i][0]))
- a_ij = np.array(a_ij).reshape((m, n))
- a_jk_tilda = list()
- b_j = list()
- for j in range(n):
- for k in range(n):
- tempsum = 0
- for i in range(m):
- tempsum += a_ij[i][j] * a_ij[i][k]
- a_jk_tilda.append(tempsum * 2)
- a_jk_tilda = np.array(a_jk_tilda).reshape((n, n))
- for j in range(n):
- tempsum = 0
- for i in range(m):
- tempsum += points[i][1] * a_ij[i][j]
- b_j.append(tempsum * (-2))
- matrix = list()
- for j in range(n):
- for k in range(n):
- matrix.append(a_jk_tilda[j][k])
- matrix.append(-b_j[j])
- matrix = np.array(matrix).reshape((n, n + 1))
- solutions = [0.913487, 0.215415, 0.402941, 80.0784007] # https://www.wolframalpha.com/input?i=8a%2B18.3378b%2B++2.2445+c%2B+0.4778+d%3D12.2%3B18.3378a%2B+82.1073+b%2B16.19522295c+-0.13586744d%3D+40.95358%3B+2.2445+a%2B16.1952b%2B+5.2543c%2B2.3611d%3D7.8413%3B0.4778a+-0.1358+b%2B+2.3611+c%2B+4.4554d%3D+++1.7079
- sum1 = 0
- sum2 = 0
- sum3 = 0
- c = 0
- for j in range(n):
- sum1 += a_jk_tilda[j][j] * (solutions[j]) ** 2
- for j in range(n):
- for k in range(n):
- if j < k:
- sum2 += a_jk_tilda[j][k] * solutions[j] * solutions[k]
- for j in range(n):
- sum3 += b_j[j] * solutions[j]
- for i in range(m):
- c += points[i][1] ** 2
- d = 0.5 * (0.5 * sum1 + sum2) + sum3 + c
- print("Матрица коэффициентов a_{ij}:")
- print(a_ij)
- print()
- print("Матрица коэффициентов ~a_{jk}:")
- print(a_jk_tilda)
- print()
- print("Коэффициенты b_j:")
- print(b_j)
- print()
- print("СЛАУ, решением которой являются искомые коэффициенты линейной комбинации:")
- print(matrix)
- print()
- print("Минимальное значение D функции ошибки:")
- print(d)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement