23.01.2014, 02:20 | #1 (permalink) |
Member
Регистрация: 14.12.2013
Сообщений: 21
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Решить систему линейных уравнений методом Зейделя
|
23.01.2014, 02:20 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Внимательно прочитайте содержимое этих тем Решите систему линейных уравнений методом простой итерации Решение уравнений методом Ньютона Система для решения уравнений методом хорд на C/C++ |
23.01.2014, 14:55 | #2 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Сожалею. |
|
24.01.2014, 11:14 | #5 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Код:
Type Matrix=Array[1..3,1..3] of Real; Vector=Array[1..3] of Real; Const A:Matrix=(( 1.000000, 3.00000, -1.16667), ( 0.264706, 1.00000, -0.20588), (-0.333330, -0.66667, 1.00000)); B:Vector=(-0.16667, 0.058824, 0.666667); Eps=0.0018; Var X1,X2:Vector; i,j:byte; Nrm:real; Function Dif(D1,D2:Vector):Vector; var p:byte; DX:Vector; begin for p:=1 to 3 do DX[p]:=D1[p]-D2[p]; Dif:=DX; end; Function Norm_Vect(NV:Vector):Real; var p:byte; Sum:Real; begin Sum:=0; for p:=1 to 3 do Sum:=Sum+Sqr(NV[p]); Norm_Vect:=Sqrt(Sum); end; Begin for i:=1 to 3 do X1[i]:=0; X2:=X1; Repeat for i:=1 to 3 do begin X2[i]:=B[i]; for j:=1 to 3 do if j<>i then X2[i]:=X2[i]-A[i,j]*X2[j]; end; Nrm:=Norm_Vect(Dif(X1,X2)); for i:=1 to 3 do write(' ',X2[i]:8:5); write(' '); for i:=1 to 3 do write(' ',X2[i]-X1[i]:8:5); writeln; X1:=X2; Until Nrm<=Eps; Writeln; Writeln('x1= ',X2[1]:8:5,' x2= ',X2[2]:8:5,' x3= ',X2[3]:8:5); Readln End. |
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
27.01.2014, 14:07 | #7 (permalink) |
Member
Регистрация: 14.12.2013
Сообщений: 21
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
такое дело, теперь желательно что бы можно было с клавиатуры ввести любые числа и получить соответствующий результат, но тоже по этому же методу, если вас не затруднит
|
27.01.2014, 16:07 | #8 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
То есть Вам нужна универсальная программа решения СЛАУ методом Гаусса-Зейделя? Большая работа. Ну вот смотрите: в Википедии приведена такая программа на Паскале, казалось бы, только добавить ввод коэффициентов и сумм, но, во-первых, там ставится жесткое условие выполнения "диагонального преобладания", и если оно не выполняется, то система объявляется несовместной, а это не всегда правильно - в частности, в Вашем примере это условие нарушено, а система решается, а вот что будет, если вставить произвольные числа, - Бог ведает, во-вторых, в программе из Вики не рассмотрен обход нулевых диагональных коэффициентов матрицы, а они, вообще говоря, недопустимы, поскольку на них идет деление. Так что работы тут много, уж и не знаю - скорее всего, не возьмусь. Извините. А попробуйте сами! Нет? |
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|