Метод гаусса с подробным решением онлайн: Метод Гаусса онлайн

Метод Гаусса-Зейделя – GeeksforGeeks


Это еще один шаг вперед в методе Якоби. Где лучшее решение x = (x1, x2, …, xn), если x1(k+1) является лучшим приближением к значению x1, чем x1(k), то было бы лучше, если бы мы нашли новое значение x1(k+1), чтобы использовать его (а не старое значение x1(k)) при нахождении x2(k+1),…, xn(k+1). Таким образом, x1(k+1) находится так же, как и в методе Якоби, но при нахождении x2(k+1) вместо использования старого значения x1(k) и старых значений x3(k),…, xn(k) , затем мы используем новое значение x1(k+1) и старые значения x3(k), … , xn(k), и аналогично для нахождения x3(k+1), … , xn(k+1). Этот процесс поиска решения данного линейного уравнения называется Метод Гаусса-Зейделя

Метод Гаусса-Зейделя представляет собой итеративный метод решения квадратной системы из n (n=3) линейных уравнений с неизвестным x.
Учитывая

 Ax=B 

, найти систему уравнений x, удовлетворяющую этому условию.
Более подробно, A, x и b в своих компонентах равны:


Тогда разложение матрицы A на ее нижний треугольный компонент и его верхний треугольный компонент дается следующим образом:

Система линейных уравнений переписывается как:

Метод Гаусса-Зейделя теперь решает левую часть этого выражения для x, используя предыдущее значение для x в правой части. Более формально это может быть записано как:

Однако в треугольной форме L* элементы x(k+1) могут быть вычислены последовательно с использованием прямой замены:

Этот процесс непрерывно повторяется до тех пор, пока мы не найдем лучшее приближение решение с наименьшей ошибкой.
Примеры:

  Ввод : 
3 4x+y+2z=4 3x+ 5y+ 1z= 7 х+ у+ 3z= 3 Вывод: [0, 0, 0] [1,0, 0,8, 0,399999999999999997] [0,6000000000000001, 0,95999999999999997, 0,480000000000000004] [0,52, 0,9919999999999998, 0,49600000000000005] [0,504, 0,9983999999999998, 0,4992000000000001] [0,5008, 0,99968, 0,49984] [0,5001599999999999, 0,9999360000000002, 0,4999679999999999] [0,500032, 0,9999872, 0,4999936] [0,5000064, 0,9999974400000001, 0,49999871999999995] [0,50000128, 0,999999488, 0,4999997439999999] [0,500000256, 0,9999998976000001, 0,49999994880000004] [0,5000000512, 0,9999999795199999, 0,4999999897600001] [0,50000001024, 0,999999995904, 0,499999997952] [0,500000002048, 0,9999999991808, 0,4999999995
03] [0,5000000004095999, 0,9999999998361601, 0,49999999991808003] [0,50000000008192, 0,99999999999672321, 0,49999999998361594] [0,500000000016384, 0,99999999999934465, 0,49999999999672307] [0,5000000000032768, 0,9999999999986894, 0,4999999999993445] [0,5000000000006554, 0,9999999999997378, 0,49999999999986894] [0,500000000000131, 0,9999999999999478, 0,49999999999997374] [0,5000000000000262, 0,9999999999999897, 0,49999999999999467] [0,5000000000000052, 0,99999999999999979, 0,49999999999999895] [0,5000000000000011, 0,99999999999999994, 0,49999999999999983] [0,5000000000000002, 0,99999999999999998, 0,50000000000000001] [0,49999999999999994, 1,0, 0,5] [0,5, 1,0, 0,5]

Учитывая три уравнения:

4x + у + 2z = 4
3х + 5у + г = 7
х + у + 3z = 3
 

Сначала мы предполагаем, что решение данного уравнения равно

 (0,0,0) 

Затем сначала мы помещаем значения y и z в уравнение 1 и получаем значение x и обновляем значение x как

 ( x1,0,0) 

Теперь, подставив обновленное значение x, равное x1, и z=0 в уравнение 2, чтобы получить y1, а затем обновив наше решение как

 (x1,y1,0) 

Затем, наконец подставив x1 и y1 в уравнение 3, чтобы получить z1, и обновив наше решение как

 (x1,y1,z1) 

Теперь повторите тот же процесс еще 24 раза, чтобы получить приближенное решение с минимальной ошибкой.

    

def seidel(a, x ,b):

    

     n = len (a)                   

    

для J в

( 0 , n):

9003 9005

9003 9006

9003 9006

9003

.

0064          d = b[j]                  

           

        

         for i in range ( 0 , n):     

IF (J! = I):

D -

- D - 0064 = a [j] [I] * x [I]

X [J] = D . j]

    

     return x    

    

n = 3                               

a = []                            

b = []        

x = [ 0 , 0 ,

0 ]                        

a = [[ 4 , 1 , 2 ], [ 3 , 5 , , . 0064 1 , 1 , 3 ]]

b = [ 4 , 7 ,

3 ]

print (x)

   

for i in range ( 0 , 25 ):            

x = SEIDEL (A, X, B)

PRINT (x) (x) .

Оставить комментарий