Показать сообщение отдельно
Старый 28.12.2015, 14:58   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

М-да... Думал я, стало быть, думал да и надумал вот что: не является ли этот бессмысленный пост иллюстрацией потуг решить вот эту задачку? Если так, то...
Охо-хо, грехи...
Ладно, начнем, помолясь...
Прежде всего - строим (не карякаем, а именно строим) график, и не чего попало, а функции, стоящей в левой части уравнения:
Название: fire.jpg
Просмотров: 98

Размер: 20.3 Кб
И что же мы тут видим? А видим мы ШЕСТЬ корней уравнения. Вот мы их, все шесть, и найдем методом секущих.
1. Определяем интервалы, в которых сидят корни: [-0.7; -0.5], [-0.2; -0.4], [-0.1; 0.1], [0.2; 0.4], [0.6; 0.7], [0.8; 0.9].
2. Берем программу отсюда, слегка причесываем под конкретную задачу и получаем:
Код:
Const
 Eps=0.00001;
 a1=-0.7;
 b1=-0.5;
 a2=-0.4;
 b2=-0.2;
 a3=-0.1;
 b3= 0.1;
 a4= 0.2;
 b4= 0.4;
 a5= 0.6;
 b5= 0.7;
 a6= 0.8;
 b6= 0.9;

Var
 Res:Real;
 i:Integer;

Function F(z:real):Real;
begin
 F:=1.8*Sqr(Sqr(z))-Sin(z*10);
end;

Procedure EQRoot(ar,br:real; var R:real);
var
 x1,x2,a,b,d:real;
begin
 a:=ar;
 b:=br;
 x1:=b;
 Repeat
  x2:=b-F(b)*(b-a)/(F(b)-F(a));
  d:=abs(x1-x2);
  if F(a)*F(x2)<0 then b:=x2 else a:=x2;
  x1:=x2;
 Until d<Eps;
 R:=x2;
end;

Begin   
 EQRoot(a1,b1,Res);
 Writeln(Res:9:5);
 EQRoot(a2,b2,Res);
 Writeln(Res:9:5);
 EQRoot(a3,b3,Res);
 Writeln(Res:9:5);
 EQRoot(a4,b4,Res);
 Writeln(Res:9:5);
 EQRoot(a5,b5,Res);
 Writeln(Res:9:5);
 EQRoot(a6,b6,Res);
 Writeln(Res:9:5);
 Readln 
End.
3. Любуемся полученным результатом:
Название: FP01.jpg
Просмотров: 111

Размер: 7.1 Кб
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

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