Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.11.22;
Скачать: [xml.tar.bz2];

Вниз

Помогите с оптимизацией   Найти похожие ветки 

 
Dragon-zla ©   (2009-10-06 22:36) [0]

Здравствуйте, помогите пожалуйста с оптимизацией кода
Задача состоит в решении уравнения F(x)=0 на отрезке [a,b] с заданной точностью e методом деления отрезка пополам и выводом найденного решения на экран.
Точность = 1e-0,5 (0.00001)
Отрезок [-0.5;3]
Уравнение (1/(sqrt(5)+sin(0.1*x)+ln(1+x))-x)
Код я написал, он компилируется, запрашивает исходные данные, начинает выполнять код, а вот потом ОЧЕНЬ медленно приближается к заданной точности. Подскажите пожалуйста можно оптимизировать его, для ускорения вычисления или это мне с примером "повезло"?
P.S. пробовал изменить точность до 0.1 - бессмысленно
Собственно сам код:
program ecsAdd1_4;

{$APPTYPE CONSOLE}

uses
 SysUtils,crt32,Math;
const
 epsil = 0.00001;
var
 a,b,c,Fa,Fb,Fc : real;
begin
writeln(oem("Введите начальное значение отрезка"));
readln(a);
writeln(oem("Введите конечное значение отрезка"));
readln(b);
while abs(b-a)>epsil do
 begin
 if a*b<0 then
   c := (a+b)/2
 else
   c := (a-b)/2;
 Fa := (1/(sqrt(5)+sin(0.1*a)+ln(1+a))-a);
 Fb := (1/(sqrt(5)+sin(0.1*b)+ln(1+b))-b);
 Fc := (1/(sqrt(5)+sin(0.1*c)+ln(1+c))-c);
 if Fa*Fc<0 then
 b := c
 else
 a := c;
 end;
Fa := (1/(sqrt(5)+sin(0.1*a)+ln(1+a))-a);
Fb := (1/(sqrt(5)+sin(0.1*b)+ln(1+b))-b);
if Fa*Fb<0 then begin
   if a*b<0 then
     c := (a+b)/2
   else
     c := (a-b)/2;
Fc := (1/(sqrt(5)+sin(0.1*c)+ln(1+c))-c);
writeln(oem("Приблизительный корень уравнения = ") ,c);
writeln(oem("Значение функции в этой точке = ") ,Fc);
readkey;
end
else
writeln(oem("Корень не найден"));
readkey;
end.


 
palva ©   (2009-10-06 23:52) [1]

if a*b<0 then
  c := (a+b)/2
else
  c := (a-b)/2;


Можете объяснить на словах, что это такое?


 
Омлет   (2009-10-07 00:11) [2]

У тебя неправильная реализация.
Первая ссылка в яндексе (даже с кодом): http://eco.sutd.ru/Study/Informat/mpd.html



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2009.11.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.005 c
1-1225290742
self.name
2008-10-29 17:32
2009.11.22
сделать запись в себя...


9-1183742857
Dib@zol
2007-07-06 21:27
2009.11.22
MP3 -> XM


15-1250569118
Дуб
2009-08-18 08:18
2009.11.22
Новосибирск Мастак пати


1-1225744534
AlexN
2008-11-03 23:35
2009.11.22
Контейнер для файлов


2-1254835650
ocean
2009-10-06 17:27
2009.11.22
Как напечатать HTML?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский