|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Помогите, пожалуйста, составить блок-схемы
На интегрирование методом Симпсона(только чтоб все переменные были как у меня):
Код:
function Simpson(A, B: double; N: cardinal; Func: TFunction): double; var h: double; X: double; K: double; I: Integer; begin h := 0.5 * (B - A) / N; Result := Func(A); X := A + h; for I := 1 to 2 * N - 1 do begin if I mod 2 = 0 then K := 2 else K := 4; Result := Result + K * Func(X); X := X + h; end; Result := h * (Result+Func(B)) / 3; end; На метод трапеций(только чтоб все переменные были как у меня): Код:
function TrapezeInt(a, b: double; eps: double; IntF: TIntFunc):double; var //S - площадь на предыдущей итерации, //x - текущее значение аргумента //base - высота трапеции //n - число трапеций, удваивается на каждой итерации S, x, base: double; i, n: Integer; begin //Сначала приближение одной трапецией base := b - a; Result := (IntF(a) + IntF(b)) / 2 * base; eps := eps / 10; //Вообще говоря, величина делителя зависит от функции n := 1; repeat S := Result; base := base / 2; n := n * 2; //Новая площадь вычисляется на основе старой Result := Result / 2; //Ниже - просто вычисляем площади новых трапеций for i := 1 to n div 2 do begin x := a + base * (i * 2 - 1); Result := Result + IntF(x) * base; end; until abs(S - Result) <= eps; end; Admin: Используем теги для оформления кода, иначе последуют санкции! Большое спасибо заранее =)) Последний раз редактировалось overclocker01, 28.04.2008 в 12:24. |
#2
|
|||
|
|||
Не парься, предопределенным процессом всё изобрази
|
#3
|
|||
|
|||
скоро курсач сдавать надо.. я прогу написал, все сделал... а ща к этой проге не могу составить блок-схему.. помогите, плиз..
|