02.12.2015, 01:30 | #1 (permalink) |
Новичок
Регистрация: 13.01.2015
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Система нелинейных уравнений
Система: y = x^2 - 1 y = 6x - 7 Язык Паскаль. Заранее большое спасибо! |
02.12.2015, 01:30 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Пользователи форума размещали подобные темы Решения дифференциальных уравнений Метод Ньютона для решения системы m нелинейных уравнений Решить систему дифференциальных уравнений Решение уравнений методом Ньютона Система для решения уравнений методом хорд на C/C++ Решение системы уравнений в Экселе |
02.12.2015, 10:31 | #2 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Прежде всего заметим, что система благополучно решается аналитически. Вот с этого и начнем. В результате получим x1 = 3 + (√3) ≈ 4.7320508 y1 = 11 + (√3)*6 ≈ 21.3923048 x2 = 3 - (√3) ≈ 1.2679492 y2 = 11 - (√3)*6 ≈ 0.6076952 Теперь будем решать численно. Для этого нам понадобится задать точность (возьмем 0.00001) и стартовые приближенные значения решений. Их мы зададим, например, так: x01 = 5.0 y01 = 20.0 x02 = 1.0 y02 = 0.0 Код:
Const x01=5.0; y01=20.0; x02=1.0; y02=0.0; Eps=0.00001; Type Matr=Array[1..2,1..2] of Real; Var x,y,dx,dy,Det_0,Det_X,Det_Y:Real; M:Matr; Function Determ(D:Matr):Real; begin Determ:=D[1,1]*D[2,2]-D[1,2]*D[2,1]; end; Function f1(z1,z2:real):Real; begin f1:=Sqr(z1)-z2-1; end; Function f2(z1,z2:real):Real; begin f2:=z1*6-z2-7; end; Function Der_x_f1(z1,z2:real):Real; begin Der_x_f1:=z1*2; end; Function Der_y_f1(z1,z2:real):Real; begin Der_y_f1:=-1.0; end; Function Der_x_f2(z1,z2:real):Real; begin Der_x_f2:=6.0; end; Function Der_y_f2(z1,z2:real):Real; begin Der_y_f2:=-1.0; end; Begin x:=x01; y:=y01; Repeat M[1,1]:=Der_x_f1(x,y); M[1,2]:=Der_y_f1(x,y); M[2,1]:=Der_x_f2(x,y); M[2,2]:=Der_y_f2(x,y); Det_0:=Determ(M); M[1,1]:=-f1(x,y); M[2,1]:=-f2(x,y); Det_X:=Determ(M); M[1,1]:=Der_x_f1(x,y); M[1,2]:=-f1(x,y); M[2,1]:=Der_x_f2(x,y); M[2,2]:=-f2(x,y); Det_Y:=Determ(M); dx:=Det_X/Det_0; dy:=Det_Y/Det_0; x:=x+dx; y:=y+dy; Until (Abs(dx)<Eps) and (Abs(dy)<Eps); Writeln('x1 = ',x:0:6); Writeln('y1 = ',y:0:6); Writeln; x:=x02; y:=y02; Repeat M[1,1]:=Der_x_f1(x,y); M[1,2]:=Der_y_f1(x,y); M[2,1]:=Der_x_f2(x,y); M[2,2]:=Der_y_f2(x,y); Det_0:=Determ(M); M[1,1]:=-f1(x,y); M[2,1]:=-f2(x,y); Det_X:=Determ(M); M[1,1]:=Der_x_f1(x,y); M[1,2]:=-f1(x,y); M[2,1]:=Der_x_f2(x,y); M[2,2]:=-f2(x,y); Det_Y:=Determ(M); dx:=Det_X/Det_0; dy:=Det_Y/Det_0; x:=x+dx; y:=y+dy; Until (Abs(dx)<Eps) and (Abs(dy)<Eps); Writeln('x2 = ',x:0:6); Writeln('y2 = ',y:0:6); Readln End. |
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|