Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 02.12.2015, 01:30   #1 (permalink)
ahristovsky
Новичок
 
Регистрация: 13.01.2015
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Question Система нелинейных уравнений

Система нелинейных уравнений имеет заранее неизвестное число решений. Пользуясь методом Ньютона найти все решения.

Система:
y = x^2 - 1
y = 6x - 7

Язык Паскаль. Заранее большое спасибо!
ahristovsky вне форума   Ответить с цитированием

Старый 02.12.2015, 01:30
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Пользователи форума размещали подобные темы

Решения дифференциальных уравнений
Метод Ньютона для решения системы m нелинейных уравнений
Решить систему дифференциальных уравнений
Решение уравнений методом Ньютона
Система для решения уравнений методом хорд на C/C++
Решение системы уравнений в Экселе

Старый 02.12.2015, 10:31   #2 (permalink)
Vladimir_S
Специалист
 
Аватар для Vladimir_S
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 26,347
Сказал(а) спасибо: 288
Поблагодарили 507 раз(а) в 165 сообщениях
Репутация: 91953
По умолчанию

Цитата:
Сообщение от ahristovsky Посмотреть сообщение
Система нелинейных уравнений имеет заранее неизвестное число решений. Пользуясь методом Ньютона найти все решения.

Система:
y = x^2 - 1
y = 6x - 7

Язык Паскаль. Заранее большое спасибо!
Да пожалуйста, как нефиг делать!
Прежде всего заметим, что система благополучно решается аналитически. Вот с этого и начнем. В результате получим

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.
Ну и вот результат:
aa01.jpg
__________________
With Mozilla Firefox - straight to communism!
Vladimir_S на форуме   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 19:58.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.