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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2010, 19:54   #1
bingooo
Пользователь
 
Регистрация: 04.04.2010
Сообщений: 29
Вопрос Процедуры для метода левых и правых прямоугольников

Вот у меня есть процедура для метода средних прямоугольников:

procedure CountViaBar;
var
xx1,xx2:real;
c:longint;
begin
writeln('------------------------------------------------');
writeln('metod srednih pryamougolnikov.');
writeln('vsego iteracij:',round(abs(x2-x1)/e));
i:=0;
for c:=1 to round(abs(x2-x1)/e) do begin
write('iteraciya ',c,chr(13));
xx1:=Fx(x1+c*e);
xx2:=Fx(x1+c*e+e);
i:=i+abs(xx1+xx2)/2*e;
end;
writeln('------------------------------------------------');
writeln('integral=',i);
end;


Помогите пожалуйста по этой процедуре составить процедуры для методов левых и правых прямоугольников.
bingooo вне форума Ответить с цитированием
Старый 15.04.2010, 21:14   #2
Филантроп
Форумчанин
 
Аватар для Филантроп
 
Регистрация: 12.04.2010
Сообщений: 134
По умолчанию

из найденного!
метод левых....
Код:
type
TIntFunc = function(X: Double): Double;

function LeftPramInt(a, b: Double; eps: Double; IntF: TIntFunc): Double;
var
//S - площадь на предыдущей итерации,
//step - "толщина" прямоугольника
//gran - передвигаемая от a до b граница
//n - число прямоугольников, удваивается на каждой итерации
S, step, gran: Double;
n: integer;
begin
//Сначала приближение одного прямоугольника
step := b - a;
Result := IntF(a) * step;
n := 1;
repeat
S := Result;
n := n * 2;
step := (b - a) / n;
Gran := a;
Result := 0;
//Ниже - просто вычисляем площади новых прямоугольников
while gran < b do
begin
Result := Result + IntF(gran) * step;
gran := gran + step;
end;
until abs(S - Result) <= eps;
end;
метод правых....
Код:
function RightPramInt(a, b: Double; eps: Double; IntF: TIntFunc): Double;
var
//S - площадь на предыдущей итерации,
//step - "толщина" прямоугольника
//gran - передвигаемая от a до b граница
//n - число прямоугольников, удваивается на каждой итерации
S, step, gran: Double;
n: integer;
begin
//Сначала приближение одного прямоугольника
step := b - a;
Result := IntF(b) * step;
n := 1;
repeat
S := Result;
n := n * 2;
step := (b - a) / n;
Gran := b;
Result := 0;
//Ниже - просто вычисляем площади новых прямоугольников
while a < gran do
begin
Result := Result + IntF(gran) * step;
gran := gran - step;
end;
until abs(S - Result) <= eps;
end;
end.
кому нужна помощь! жду в аське и скайпе!
Филантроп вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Использование метода двойной буферизации для динамической графики(избавление от мерцания) noxin Win Api 1 05.04.2010 20:08
где найти паскаль-процедуру для метода Гира натка:) Помощь студентам 3 01.02.2010 13:27
Использование процедуры в другой процедуре (хм .. или метода?)...?? newprog12 Общие вопросы Delphi 4 11.01.2010 00:45
Параллельная программа для метода холецкого с помощью openMp и mpi игоревна Помощь студентам 0 06.06.2009 20:47