Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 13 
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

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;



Большое спасибо заранее =))



Партнер
 

Member
Статус: Не в сети
Регистрация: 05.12.2005
rin90
Мне вот интересно, а что препятствует тебе это сделать?


 

Member
Статус: Не в сети
Регистрация: 08.06.2005
Откуда: Москва
я не знаю как это сделать...


 

Member
Статус: Не в сети
Регистрация: 05.12.2005
Есть несколько вариантов:
1) Берем скачиваем бесплатный Ru.OpenOffice.org или используем MS Office, если есть купленный. В них есть возможность строить блок схемы даже в ворде.
2) Используем 60 дневный триал или покупаем MS Visio: http://office.microsoft.com/ru-ru/visio/default.aspx
Который специально предназначен для создания таких блок-схем.
3) Рисуем сами при помощи паинта или фотошопа, что вполне возможно, учитывая сложность программ, для которых строиться блок-схема.
4) Покупаем программы для автоматического построения блок-схем. Вроде всяких AutoFlowchart, FCEditor.


 

Member
Статус: Не в сети
Регистрация: 08.06.2005
Откуда: Москва
нет.. я знаю как строить в ворде..
я не знаю как построить блок-схемы метода симпсона и трпеций... именно к тем function..


 

Member
Статус: Не в сети
Регистрация: 05.12.2005
rin90
Вот, значит строить блок-схемы ты все же умеешь. Давай смотреть, что вызвало трудности в этих функциях, которые ты привел. И так, какая часть кода вызвала проблему?


 

Member
Статус: Не в сети
Регистрация: 08.06.2005
Откуда: Москва
На Симпсона составил.. только не знаю правильно или нет..
#77
Получается, что тот S, который у меня в блок схеме, в проге он Result. Правильно?

А на трапеций не получается..
Добавлено спустя 1 час, 6 минут, 44 секунды
и на метод трапеций:
S => Result

#77


 

Member
Статус: Не в сети
Регистрация: 05.12.2005
rin90
По первой блок-схеме могу сказать, что нужно пояснить f(a). Потом строка x = a + h не туда попала. Потом вместо условия i>=2*n - 1, должно быть строгое неравенство. И лучше использовать имена переменных те же, что и в программе, если используется подробная блок-схема. Еще не вижу условия, которое есть в программе - If I mod 2 = 0 then. Пока что нужно это поправить.


 

Member
Статус: Не в сети
Регистрация: 08.06.2005
Откуда: Москва
#77
Исправил...

sashar2 писал(а):
Еще не вижу условия, которое есть в программе - If I mod 2 = 0 then.

не знаю как это исправить((((

подобные картинки лучше сохранять в png или gif формате - размер на порядок меньше.
Отредактировано модератором: mein. Дата: 03.05.2008 19:58


 

Member
Статус: Не в сети
Регистрация: 05.12.2005
rin90
Как не знаешь? Ты же сделал условие (i > 2*n -1) на блок-схеме. Тут такое же условие будет.

P.S>
Кстати говоря, из блока условия вниз стрелка не может выходить, только вправо или влево.


 

Member
Статус: Не в сети
Регистрация: 08.06.2005
Откуда: Москва
sashar2 писал(а):
Как не знаешь? Ты же сделал условие (i > 2*n -1) на блок-схеме. Тут такое же условие будет.

я не знаю как это все оформить...

http://cp.people.overclockers.ru/cgi-bin/dl.pl?id=27932&filename=block.doc


 

Member
Статус: Не в сети
Регистрация: 21.04.2007
Откуда: Ростов-на-Дону
дробь нужно ставить не как в коде пишеться а как в математике-это для блок схемы

_________________
The future for Linux


 

Member
Статус: Не в сети
Регистрация: 08.06.2005
Откуда: Москва
Исправил... скоро уже сдавать надо =((((((

Симпсон:
#77

Трапеций:
#77

Все верно?


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 13 
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan