Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Метод Зейделя для системы НЕлинейных уравнений


Автор: norman 30.4.2006, 15:21
Писал программу на TP, работать она естественно отказывалась...думаю, что всё дело в алгоритме, помогите найти правильное решение...

Этот метод основан на процессе итерации...как организовать процесс для одного нелинейного уравнения я знаю:

Код
while abs(f(x))>=e do
begin
if f(x)>0 then x:=x-0.1*f(x)
else x:=x+0.1*f(x);
end;


А как для системы...понятия не имею smile 
Читал книгу для дипломированных специалистов по прикладной математике, мало чё понял...там вобщем так:
Дана система:
F1(x,y)=0
F2(x,y)=0
Потом надо выразить одно уравнение через Х, а другое через Y...вот примерно так:
x=G1(x,y)
y=G2(x,y)
Вот, я дальше ничего не ясно...надеюсь на вашу помощь...
Благодарен за любую информацию...
     

Автор: bsa 1.5.2006, 16:33
Есть несколько интересных ссылок:
http://www.google.com/search?rls=ru&q=%D0%BC%D0%B5%D1%82%D0%BE%D0%B4+%D0%B7%D0%B5%D0%B9%D0%B4%D0%B5%D0%BB%D1%8F+%D0%B4%D0%BB%D1%8F+%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC+%D0%BD%D0%B5%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D1%85+%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9&ie=utf-8&oe=utf-8 

Автор: hypocrisy 5.5.2006, 11:11
если задано
 x=G1(x,y)
y=G2(x,y)
то:

Код

G1_temp:=1;
G2_temp:=1;
while abs(G1_temp*G2_temp)>=e do    
begin    

G1_temp=G1(x,y);
if f1_temp>0 then x:=x-0.1*G1_temp;
else x:=x+0.1*G1_temp;

G2_temp=G2(x,y);
if G2_temp>0 then y:=y-0.1*G2_temp;
else y:=y+0.1*f2_temp;

end; 

Модератор:  пользуемся кнопкой "Код" 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)