Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/60: Рейтинг темы: голосов - 60, средняя оценка - 4.95
3 / 3 / 0
Регистрация: 15.11.2021
Сообщений: 65

Метод Холецкого решения СЛАУ

18.01.2022, 16:21. Показов 13053. Ответов 5

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста написать код для решения СЛАУ методом Холецкого (не встроенным методом).
Пример СЛАУ на фото.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.01.2022, 16:21
Ответы с готовыми решениями:

Параллельное умножение матрицы на вектор для решения СЛАУ в Python
Мне нужно попробовать ускорить процесс решения СЛАУ. У меня есть обратная матрица A и вектор B мне нужно перемножить их для получения...

Метод Холецкого решения СЛАУ
Помогите написать код для решения СЛАУ методом Холецкого по данной блок-схеме.

Метод Холецкого для решения Слау
Здравствуйте все. Не подскажете где найти подробное описание метода Холецкого для решеня системы линейных уравнений. По интернету искал...

5
3 / 3 / 0
Регистрация: 15.11.2021
Сообщений: 65
18.01.2022, 16:44  [ТС]
Есть код, но как его сделать универсальным для любого размера уравнения?
Приведённый ниже код решает СЛАУ с пятью x
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import numpy as np
import cmath as cm #Для комплексных чисел
import math as m
 
 
wide_arr = np.array([[1, 3, -2, 0, -2, 0.5],
                     [3, 4, -5, 1, -3, 5.4],
                     [-2, -5, 3, -2, 2, 5.0],
                     [0, 1, -2, 5, 3, 7.5],
                     [-2, -3, 2, 3, 4, 3.3]])
 
#Формирование матрицы t элементов
t_arr = np.zeros((wide_arr.shape), dtype = complex)
 
t_arr[0][0] = cm.sqrt(wide_arr[0][0]) #t[1][1]
#Находим t[1][j]
for i in range(wide_arr.shape[1]-1): 
    t_arr[0][i] = wide_arr[0][i]/t_arr[0][0]
 
#t[2][2]
t_arr[1][1] = cm.sqrt(wide_arr[1][1] - (t_arr[0][1]**2)) 
#Находим t[2][j]
for j in range(2,5):
    t_arr[1][j] = (wide_arr[1][j] - (t_arr[0][1])*t_arr[0][j])/t_arr[1][1]
 
#t[3][3]
t_arr[2][2] = cm.sqrt(wide_arr[2][2] - (t_arr[0][2]**2 + t_arr[1][2]**2) ) 
#Находим t[3][j]
for j in range(3,5):
    t_arr[2][j] = (wide_arr[2][j] - (t_arr[0][2]*t_arr[0][j] + t_arr[1][2]*t_arr[1][j]))/t_arr[2][2]
 
#t[4][4]
t_arr[3][3] = cm.sqrt(wide_arr[3][3] - (t_arr[0][3]**2 + t_arr[1][3]**2 + t_arr[2][3]**2))
#Находим t[4][5]
t_arr[3][4] = (wide_arr[3][4] - (t_arr[0][3]*t_arr[0][4] + t_arr[1][3]*t_arr[1][4] + t_arr[2][3]*t_arr[2][4]))/t_arr[3][3]
#t[5][5]
t_arr[4][4] = cm.sqrt(wide_arr[4][4] - (t_arr[0][4]**2 + t_arr[1][4]**2 + t_arr[2][4]**2 + t_arr[3][4]**2))
 
 
#Находим y[i]
#y[1]
t_arr[0][5] = wide_arr[0][5]/t_arr[0][0]
#y[2]
t_arr[1][5] = (wide_arr[1][5] - t_arr[0][1]*t_arr[0][5])/t_arr[1][1]
#y[3]
t_arr[2][5] = (wide_arr[2][5] - (t_arr[0][2]*t_arr[0][5] + t_arr[1][2]*t_arr[1][5]))/t_arr[2][2]
#y[4]
t_arr[3][5] = (wide_arr[3][5] - (t_arr[0][3]*t_arr[0][5] + t_arr[1][3]*t_arr[1][5] + t_arr[2][3]*t_arr[2][5]))/t_arr[3][3]
#y[5]
t_arr[4][5] = (wide_arr[4][5] - (t_arr[0][4]*t_arr[0][5] + t_arr[1][4]*t_arr[1][5] + t_arr[2][4]*t_arr[2][5] + t_arr[3][4]*t_arr[3][5]))/t_arr[4][4]
 
#Находим решение
x_arr = np.zeros((wide_arr.shape[0],1), dtype = complex)
 
#x[5]
x_arr[4] = t_arr[4][5]/t_arr[4][4]
#x[4]
x_arr[3] = (t_arr[3][5] - t_arr[3][4]*x_arr[4])/t_arr[3][3]
#x[3]
x_arr[2] = (t_arr[2][5] - (t_arr[2][3]*x_arr[3] + t_arr[2][4]*x_arr[4]))/t_arr[2][2]
#x[2]
x_arr[1] = (t_arr[1][5] - (t_arr[1][2]*x_arr[2] + t_arr[1][3]*x_arr[3] + t_arr[1][4]*x_arr[4]))/t_arr[1][1]
#x[1]
x_arr[0] = (t_arr[0][5] - (t_arr[0][1]*x_arr[1] + t_arr[0][2]*x_arr[2] + t_arr[0][3]*x_arr[3] + t_arr[0][4]*x_arr[4]))/t_arr[0][0]
 
 
def printMatrix ( matrix ): 
   for i in range ( len(matrix) ): 
      for j in range ( len(matrix[i]) ): 
          print ( "{:2.3f}".format(matrix[i][j]), end = " ") 
      print('')
      print('') 
 
print('Матрица t,y элементов')
printMatrix(t_arr)
print('Решение')
for i in range(1,6):
    print('x{} = {:2.3f}'.format( i, x_arr[i-1][0].real))
0
Эксперт Python
8840 / 4492 / 1864
Регистрация: 27.03.2020
Сообщений: 7,312
18.01.2022, 21:58
Лучший ответ Сообщение было отмечено ApeFake как решение

Решение

ApeFake,
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import numpy as np
import cmath as cm #Для комплексных чисел
import math as m
 
def printMatrix ( matrix ): 
   for i in range ( len(matrix) ): 
      for j in range ( len(matrix[i]) ): 
          print ( "{:2.2f}".format(matrix[i][j]), end = " ") 
      print('')
 
 
wide_arr = np.array([[1, 3, -2, 0, -2, 0.5],
                     [3, 4, -5, 1, -3, 5.4],
                     [-2, -5, 3, -2, 2, 5.0],
                     [0, 1, -2, 5, 3, 7.5],
                     [-2, -3, 2, 3, 4, 3.3]])
n = len(wide_arr)
#Формирование матрицы t элементов
t_arr = np.zeros((wide_arr.shape), dtype = complex)
 
t_arr[0] = wide_arr[0]/cm.sqrt(wide_arr[0][0])
for i in range(1, n):
    t_arr[i][i] = cm.sqrt(wide_arr[i][i] - (t_arr[:,i]**2).sum()) 
    t_arr[i,i+1:] = (wide_arr[i,i+1:] - (t_arr[:i,i].reshape(-1,1)*t_arr[:i,i+1:]).sum(0))/t_arr[i][i]
 
#Находим решение
y = t_arr[:,n].reshape(-1,1)
t_arr = t_arr[:,:n]
x_arr = np.zeros((n,1), dtype = complex)
for i in range(1, n + 1):
    x_arr[-i, 0] = (y[-i] - (t_arr[-i, -i:] * x_arr[-i:, 0]).sum() )/ t_arr[-i, -i]
 
print('Матрица t,y элементов')
printMatrix(np.hstack((t_arr,y)))
print('Решение')
for i in range(1,6):
    print('x{} = {:2.3f}'.format( i, x_arr[i-1][0].real))
1
3 / 3 / 0
Регистрация: 15.11.2021
Сообщений: 65
19.01.2022, 09:45  [ТС]
Gdez, Спасибо! С ошибкой ниже разобрался
Миниатюры
Метод Холецкого решения СЛАУ  
0
 Аватар для Aviz__
2736 / 2046 / 506
Регистрация: 17.02.2014
Сообщений: 9,462
19.01.2022, 10:16
как ты понимаешь это:
Цитата Сообщение от ApeFake Посмотреть сообщение
не встроенным методом
Цитата Сообщение от ApeFake Посмотреть сообщение
numpy
это встроена, или как?
0
3 / 3 / 0
Регистрация: 15.11.2021
Сообщений: 65
19.01.2022, 11:21  [ТС]
Aviz__, Вот решение встроенным методом
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import numpy as np
from time import time
from scipy.linalg import solve_triangular
A = np.matrix([[15, 3, 4, 5],
                     [2, 16, 4, 5],
                     [2, 3, 17, 5],
                     [2, 3, 4, 18]])
B = np.array  ([13, -1, 17, -50])
 
#Разложение Холецкого
tic = time()
for i in range(10000):
    L = np.linalg.cholesky(A)
    Y = solve_triangular(L, B, lower = True, check_finite = False)
    X = solve_triangular(L, Y, lower = True, trans = 1, check_finite = False)
toc = time()
print(X)
3
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.01.2022, 11:21
Помогаю со студенческими работами здесь

Метод Холецкого для решения Слау
Ты не мог бы выложить программу?

Исследовать метод квадратных корней и метод Холецкого для решения СЛАУ
> Исследовать метод квадратных корней и метод Холецкого для решения СЛАУ при суммировании и вычислений корня с обычной и двоичной...

Разложение Холецкого для решения СЛАУ
Здравствуйте помогите пожалуйста создать программу на с++ которая решает СЛАУ методом разложении Холецкого , Элементы матрицы должны...

Написать три алгоритма решения СЛАУ: Метод прогонки, метод квадратных корней, метод вращений
Начал писать курсовую. Нужно написать три алгоритма решения СЛАУ: прогонки, квадратных корней, вращений. С методом прогонки более менее...

Метод простых итераций и метод Зейделя для решения СЛАУ
1. Методом простых итераций и методом Зейделя решить СЛАУ вида Bx=с B=\begin{pmatrix}21 & 3 & 1 & 1\\ 3 & 21 & 2...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru