Member
Статус: Не в сети Регистрация: 08.06.2005 Откуда: Москва
На интегрирование методом Симпсона(только чтоб все переменные были как у меня):
Код:
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;
Есть несколько вариантов:
1) Берем скачиваем бесплатный Ru.OpenOffice.org или используем MS Office, если есть купленный. В них есть возможность строить блок схемы даже в ворде.
2) Используем 60 дневный триал или покупаем MS Visio: http://office.microsoft.com/ru-ru/visio/default.aspx Который специально предназначен для создания таких блок-схем.
3) Рисуем сами при помощи паинта или фотошопа, что вполне возможно, учитывая сложность программ, для которых строиться блок-схема.
4) Покупаем программы для автоматического построения блок-схем. Вроде всяких AutoFlowchart, FCEditor.
rin90 Вот, значит строить блок-схемы ты все же умеешь. Давай смотреть, что вызвало трудности в этих функциях, которые ты привел. И так, какая часть кода вызвала проблему?
rin90 По первой блок-схеме могу сказать, что нужно пояснить f(a). Потом строка x = a + h не туда попала. Потом вместо условия i>=2*n - 1, должно быть строгое неравенство. И лучше использовать имена переменных те же, что и в программе, если используется подробная блок-схема. Еще не вижу условия, которое есть в программе - If I mod 2 = 0 then. Пока что нужно это поправить.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения