Вопрос Не выходит посчитать интеграл exp(x) в delphi с необходимой точностью

Статус
В этой теме нельзя размещать новые ответы.
Регистрация
7 Дек 2013
Сообщения
63
Репутация
0
Спасибо
0
Монет
0
Нужно от 0 до pi при n=32. Вот фрагмент моего текста:
begin
a:=0;
b:=pi;
n:=32;
h:=(b-a)/n;
x:=a;
while x<=b do
begin
x:=x+h;
s:=s+exp(x)*h
end;
edt2.text:=FloatToStr(s);
end;
выводит 23,245315, хотя должно быть 22, 140690
 
Ну так ты считаешь интеграл монотонно возрастающей функции по правым прямоугольникам - разумеется, результат с избытком. Будешь считать по левым - получишь с недостатком. Более точно считать по средним: a := a + h / 2.0; for i := 0 to n-1 do s := s + h * exp(a+h*i);
 
Это же целочисленное интегрирование. К тому же самое дубовое - методом прямоугольников. Погрешность, однако. Чем больше n, тем ближе к аналитическому результату. Возьми, например n = 1000, получишь 22.2484 n = 10000 - 22.1442 n = 100000 - 22.1418 и т. д.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху