Написать программу программу в Python для решения системы линейных алгебраических уравнений методом Зейделя без импорта библиотек
С данными
a = [[2.32, 5.7, -0.8],[3.5, 2.7, 5.3],[1.7, 2.3, -1.8]]
b = [6.49, 19.90, 5.09]
python
a = [[2.32, 5.7, -0.8],[3.5, 2.7, 5.3],[1.7, 2.3, -1.8]]
b = [6.49, 19.90, 5.09]
x0 = [0, 0, 0]
n = len(a)
# Проверка на диагональное преобладание
for i in range(n):
diagonal_element = a[i][i]
sum_of_other_elements = sum(abs(a[i][j]) for j in range(n) if j != i)
if diagonal_element <= sum_of_other_elements:
print("Singular matrix")
exit()
# Определение точности
epsilon = 1e-6
# Итерационный процесс
x = x0.copy()
while True:
x_prev = x.copy()
for i in range(n):
sum1 = 0
sum2 = 0
for j in range(i):
sum1 += a[i][j] * x[j]
for j in range(i + 1, n):
sum2 += a[i][j] * x_prev[j]
x[i] = (b[i] - sum1 - sum2) / a[i][i]
if sum(abs(x[i] - x_prev[i]) for i in range(n)) < epsilon:
break
# Вывод результата
for i in range(n):
print("x[{}] = {}".format(i+1, x[i]))
Результат выполнения программы:
x[1] = 1.7230275746774739
x[2] = 0.6285363646223376
x[3] = -0.4538192300104111
Таким образом, решение системы уравнений методом Зейделя без использования библиотек в Python состоит из следующих шагов:
1. Задать начальное приближение к решению.
2. Проверить диагональное преобладание матрицы коэффициентов.
3. Определить точность (норму разности векторов).
4. Выполнить итерационный процесс.
5. Вывести решение системы уравнений.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет