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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2014, 12:53   #1
DenProx
Форумчанин
 
Аватар для DenProx
 
Регистрация: 23.11.2009
Сообщений: 191
По умолчанию Проинтегрировать массив

Доброго времени суток! Подскажите пожалуйста, как можно проинтегрировать массив, типа:

myarray: array[1..10003] of Integer;

Это массив оцифрованных данных от прибора, необходимо его проинтегрировать. Но как, я пока не знаю ... обычный способ интегрирования, как я понимаю, тут не подходит.
Чаще всего, у большенства людей, поиск Истины заканчивается набором слова в Гугле
DenProx вне форума Ответить с цитированием
Старый 02.12.2014, 13:00   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

в цикле суммируй произведение каждого элемента массива на некое число, соответствующее выбранному приращению. Это и есть обычный простейший способ численного интегрирования. Можно не каждую, а среднее значение между двумя соседними, типа метода трапеции если не вру
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 02.12.2014, 13:37   #3
DenProx
Форумчанин
 
Аватар для DenProx
 
Регистрация: 23.11.2009
Сообщений: 191
По умолчанию

Ну вот к примеру, мне нужно такой интеграл запрограммировать, для интегрирования полученного сигнала:

qq.jpg

Где I и U - это два разных массива.

Я нашел вот такой пример интегрирования, методом Симпсона:

Код:
type
  TDoubleFunc = function(X: Double): Double;
 
function Integral(A, B, Eps: Double; F: TDoubleFunc): Double;
 
  function InternalCalc(A, B: Double; F: TDoubleFunc; N: Integer): Double;
  var
    x, dx: Double;
    i: Integer;
  begin
    dx := (B - A) / N;
    Result := 0;
    x := A;
    for i := 1 to N do
    begin
      Result := Result + dx * (F(x) + 4 * F(x + dx / 2) + F(x + dx)) / 6;
      x := x + dx;
    end;
  end;
 
var
  N: Integer;
  Prev: Double;
begin
  Result := InternalCalc(A, B, F, 4);
  N := 4;
  repeat
    Prev := Result;
    N := N shl 1;
    Result := InternalCalc(A, B, F, N);
  until (Result = 0) or (Abs((Result - Prev) / Result) < Eps);
end;
 
function F(X: double): double;
begin
  Result := X*X*X;
end;
Как изменить подинтегральную функцию, чтобы можно было выполнить интегрирование массива ?
Чаще всего, у большенства людей, поиск Истины заканчивается набором слова в Гугле
DenProx вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программирование в VBA: двумерный массив M на N, нужно создать новый одномерный массив TheAnnihilyator Помощь студентам 1 04.06.2014 09:16
С# задан массив 5х5. сформировать массивы А и В. в массив А поместить элементы с четными индексами, в массив В с нечетны Koksa Помощь студентам 0 10.10.2011 11:26
Запись координат в массив в реал тайм, Как записать координаты в массив Dark19 Visual C++ 2 21.06.2011 18:45
Проинтегрировать оцифрованный сигнал zi4rox Общие вопросы Delphi 0 17.05.2009 22:23