Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def f1(x, y, z):
- return 9*x*z**2 + y*z + 2*y**2*x**3 + 175
- def f2(x, y, z):
- return 0.5*y**3*z**2 - 0.8*x**2*y - 1.3
- def f3(x, y, z):
- return 0.7*z**3 - 6.3*y**3 - 12.6
- def f1_der_x(x, y, z): #derivative - производная
- return 9*z**2 + 6*y**2*x**2
- def f1_der_y(x, y, z):
- return z + 4*y*x**3
- def f1_der_z(x, y, z):
- return 18*x*z + y
- def f2_der_x(x, y, z):
- return -1.6*x*y
- def f2_der_y(x, y, z):
- return 1.5*y**2*z**2 - 0.8*x**2
- def f2_der_z(x, y, z):
- return y**3*z
- def f3_der_x(x, y, z):
- return 0
- def f3_der_y(x, y, z):
- return -18.9*y**2
- def f3_der_z(x, y, z):
- return 2.1*z**2
- def w_matrix(x, y, z):
- w = [[f1_der_x(x, y, z), f1_der_y(x, y, z), f1_der_z(x, y, z)],
- [f2_der_x(x, y, z), f2_der_y(x, y, z), f2_der_z(x, y, z)],
- [f3_der_x(x, y, z), f3_der_y(x, y, z), f3_der_z(x, y, z)]]
- return w
- def def_matrix(a=[]):
- a1 = a[0][0]
- a2 = a[1][0]
- a3 = a[2][0]
- b1 = a[0][1]
- b2 = a[1][1]
- b3 = a[2][1]
- c1 = a[0][2]
- c2 = a[1][2]
- c3 = a[2][2]
- return a1*(b2*c3-b3*c2) - b1*(a2*c3-a3*c2) + c1*(a2*b3-a3*b2)
- def t_matrix(a=[]):
- a1 = a[0][0]
- a2 = a[1][0]
- a3 = a[2][0]
- b1 = a[0][1]
- b2 = a[1][1]
- b3 = a[2][1]
- c1 = a[0][2]
- c2 = a[1][2]
- c3 = a[2][2]
- b = [[b2*c3-b3*c2, -b1*c3+b3*c1, b1*c2-b2*c1],
- [-a2*c3+a3*c2, a1*c3-a3*c1, -a1*c2+a2*c1],
- [a2*b3-a3*b2, -a1*b3+a3*b1, a1*b2-a2*b1]]
- return b
- def inverse_matrix(a=[]):
- t = t_matrix(a)
- q = def_matrix(a)
- if q == 0:
- print("Определитель матрицы = 0!")
- return a
- return([[t[0][0]/q, t[0][1]/q, t[0][2]/q],
- [t[1][0]/q, t[1][1]/q, t[1][2]/q],
- [t[2][0]/q, t[2][1]/q, t[2][2]/q]])
- def ans(a=[], f=[], x=[]):
- a1 = a[0][0]
- a2 = a[1][0]
- a3 = a[2][0]
- b1 = a[0][1]
- b2 = a[1][1]
- b3 = a[2][1]
- c1 = a[0][2]
- c2 = a[1][2]
- c3 = a[2][2]
- c = [0, 0, 0]
- c[0] = x[0] - (a1*f[0] + b1*f[1] + c1*f[2])
- c[1] = x[1] - (a2*f[0] + b2*f[1] + c2*f[2])
- c[2] = x[2] - (a3*f[0] + b3*f[1] + c3*f[2])
- return c
- def output_matrix(a=[]):
- print(a[0][0], ' ', a[0][1], ' ', a[0][2])
- print(a[1][0], ' ', a[1][1], ' ', a[1][2])
- print(a[2][0], ' ', a[2][1], ' ', a[2][2])
- print('')
- x = 1 #начальное решение
- y = 1
- z = 1
- print('Начальное приближение: ', x, y, z)
- print('Функции: ', f1(x, y, z), f2(x, y, z), f3(x, y, z))
- print('')
- S = 1 #погрешность
- e = 0.000001
- k = 0
- while (S > e) and (k < 100):
- W = w_matrix(x, y, z)
- Inv = inverse_matrix(W)
- answer = ans(Inv, [f1(x,y,z), f2(x,y,z), f3(x,y,z)], [x,y,z])
- S = max(x-answer[0], y-answer[1], z-answer[2])
- x = answer[0]
- y = answer[1]
- z = answer[2]
- k = k + 1
- print('Итерация: ', k)
- print('Ответ: ', x, y, z)
- print('Функции: ', f1(x, y, z), f2(x, y, z), f3(x, y, z))
- print('')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement