Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.02.2010, 14:11   #1
Айдар
Форумчанин
 
Регистрация: 20.06.2009
Сообщений: 195
По умолчанию Вычисление интеграла методом трапеции.

Добрый день помогите с данной задачи. надо вычислить интеграл c точностью 0,001 (любой самый простейший можно) вот набрасал код:

Код:
var a,b,s,x,e,n:real;
    i:integer;
begin
readln(a,b,n);
h:=(b-a)/n;
s:=0;
e:=0,001;
for i:=1 to n do
 begin
{    
вот эту часть не могу записать, т.к. с инегралами только начал знакомиться, тут еще как я понял надо будит увеличивать цикл (N)
в 2 раза, и сравнивать разность s и sk 
}
 end;
writeln(s);
end.
Вот формула нахождения интеграла
s=[1/2*(F(a)+F(b)+F(a+h)+F(a+2h)+...+F(a +(N-1)*h))]*h
Айдар вне форума Ответить с цитированием
Старый 07.02.2010, 14:44   #2
L_M
Форумчанин Подтвердите свой е-майл
 
Регистрация: 25.02.2008
Сообщений: 289
По умолчанию

А обязательно ли пользоваться этой формулой? Интеграл - это площадь. То есть если разбить на h равных кусков длинной x каждый, то площади будет просто x*(f(x1)+f(x2)+...). А точность увеличивается с увеличением количества кусков, на которые разбивается. И вообще, как предполагается считать точность? Значит должно быть изначально дано точное решение?
Упс...
L_M вне форума Ответить с цитированием
Старый 07.02.2010, 14:50   #3
Айдар
Форумчанин
 
Регистрация: 20.06.2009
Сообщений: 195
По умолчанию

нет находим 1 решение интеграла, далее делим трапецию на 2 раза меньше (n/2),считаем, если их разность равна 0.001 или меньше, то выводим ответ и кол-во отрезков (n)

Вот написал, все правильно считает, но надо сделать так чтобы он мне выводил ответ при N повторов и 2*N повторов, у меня почемуто все затеряется и выводит ответ только при 2*n повторов, что делать?

Код:

var
n,i:integer;
a,b,e,shag,sum,itog,itog2:real;
function F(x:real):real;
begin
f:=x*x+3;
end;
begin
write ('a=');
readln (a);
write ('b=');
readln (b);
write ('N=');
readln (n);
e:=0.001;
writeln ('e=0.001');
{shag:=(b-a)/n;}
sum:=0;
repeat
shag:=(b-a)/n;
sum:=0;
for i:=1 to n-1 do
begin
sum:=sum+f(a+i*shag);
end;
sum:=sum+(f(a)+f(b))/2;
itog:=(b-a)/n*sum;
itog2:=itog;
n:=2*n;
writeln (itog:10:5);
writeln (itog2:10:5)
until itog2-itog<e;
{writeln ('Otvet=',itog:0:5);
writeln ('Otvet2=',itog2:0:5);}
writeln (n);
readln;
end.

Последний раз редактировалось Stilet; 12.02.2010 в 08:20.
Айдар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычисление определенного интеграла методом трапеций Alexander886 Помощь студентам 0 06.12.2009 20:43
Вычисление определённого интеграла(помогите) Janny3952 Помощь студентам 1 03.05.2009 14:33
Вычисление интеграла StudeHt Помощь студентам 1 01.05.2009 19:16
вычисление интеграла(помогите найти ошибку) [C++] Айат Помощь студентам 7 10.04.2009 18:25
Вычисление определённого интеграла Mr_Frost Помощь студентам 11 14.03.2009 02:09