Полезное для программистов:

Фриланс
Новости
Статьи
   
Рубрики:


Интегрирование функций

Поиск:

Метод трапеций

Код

//////////////////////////////////////////////////////////////////////////////
//
//  Integrating function (trapecias method)
//  (c) Johna Smith, 1996
//
//  Method description:
//   We approximate area under function with trapecias, using
//   the same intervals by the X axe.
//
//////////////////////////////////////////////////////////////////////////////

#include <stdio.h>

double f(double x)
{
  // !!! you should specify your own function here

  return x;
}

double Integrate(double x1, double x2, double step)
{
  double x=x1;
  double I=0; // integral value

  while (x<x2-step)
  {
    // calculating trapecia's area as f(x)+f(x+step) * halfheight of it
    I += (f(x)+f(x+step))*step/2;
    x += step;
  }

  return I;
}

void main(void)
{
  printf("I=%f",Integrate(0,1,1e-4));
}



Метод Симпсона

Код

//////////////////////////////////////////////////////////////////////////////
//
//  Integrating function (Simpson's method)
//  (c) Johna Smith, 1996
//
//  Method description:
//    We approximate area under function with parabolas, using
//    three points. We repeat calculation with less step if
//    the diffference between I(h) and I(h/2) is greater than eps
//
//////////////////////////////////////////////////////////////////////////////

#include <stdio.h>
#include <math.h>

double f(double x)
{
  // you should specify your own function here
  return x*x*sin(x);
}

double Integrate(double x1, double x2, double step, double precision)
{
  double x=x1;
  double I1=0,I2=0; // integral value
  double s;

  do
  {
    I1=I2;
    s=(f(x1)-f(x2))/2;
    x=x1+step;

    while (x<x2)
    {
      s+=2*f(x)+f(x+step);
      x+=2*step;
    }
    I2=2*step*s/3;

    step/=2.0;  // try once more using less step
  } while (fabs(I1-I2)>precision);

  return I2;
}

void main(void)
{
  printf("I=%f",Integrate(0,1,1e-4,1e-6));
}



Метод прямоугольников

Код

//////////////////////////////////////////////////////////////////////////////
//
//  Integrating function (rectanges method)
//  (c) Johna Smith, 1996
//
//  Method description:
//    We approximate area under function with rectangles, using
//    the same intervals by the X axe.
//
//////////////////////////////////////////////////////////////////////////////

#include <stdio.h>

double f(double x)
{
  // you should specify your own function here
  return x;
}

double Integrate(double x1, double x2, double step)
{
  double x=x1;
  double I=0; // integral value
  
  while (x<x2-step)
  {
    // calculating function at the halfpoint of interval
    I+=step*f(x+step/2);
    x+=step;
  }
  
  return I;
}

void main(void)
{
  printf("I=%f",Integrate(0,1,1e-4));
}



Метод Монте-Карло

Код

//////////////////////////////////////////////////////////////////////////////
//
//  Integrating function (Monte-Karlo method)
//  (c) Johna Smith, 1996
//
//  Method description:
//   We generate random numbers from interval [a;b] where we want to
//   integrate our function and sum function values in this random points.
//   Here we use approximation of the integral:
//   I=<y>*sigma, where <y> is average value of the function f on [a;b]
//   and sigma is volume of integrating area (if we integrate by interval it
//   is its length)
//
//////////////////////////////////////////////////////////////////////////////

#include <stdio.h>
#include <math.h>
#include <stdlib.h>

double f(double x)
{
  // you should specify your own function here
  return x*x*sin(x);
}

double Integrate(double x1, double x2, long int steps)
{
  double I=0; // integral value

  randomize();  // initializing random numbers generator
  for (long int i=0;i<steps;i++)
    I+=f((random(10000)/10000.0)*(x2-x1)+x1);
  I*=(x2-x1)/steps;

  return I;
}

void main(void)
{
  printf("I=%f",Integrate(0,1,1e5));
}
Сайт: forum.vingrad.ru






Просмотров: 2018

 

 

Новые статьи:


Популярные:
  1. Как сделать цикличным проигрывание MIDI-файла?
  2. Создание AVI файла из рисунков
  3. Как устройство "отключить в данной конфигурации"?
  4. Kто в данный момент присоединен через Сеть?
  5. Как узнать количество доступной памяти?
  6. Как реализовать в RichEdit разноцветный текст?
  7. Как скрыть свое приложение от ProcessViewer
  8. Как программно нажать/скрыть/показ кнопку "Start"?
  9. Модуль работы с ресурсами в PE файлах
10. Функции вызова диалоговых окон выбора
11. Проверка граматики средствами Word'а из Delphi.
12. Модуль для упрощенного вызова сообщений
13. Функции для записи и чтение своих данных в, ЕХЕ- файле
14. Рекурсивный просмотр директорий
15. Network Traffic Monitor
16. Разные модули
17. Универсальная функция для обращения к любым экспортируем функциям DLL
18. Библиотека от VladS
19. Протектор для UPX'а
20. Еще об ICQ, сообщения по контакт листу?
21. Использование открытых интерфейсов
22. Теория и практика использования RTTI
23. Работа с TApplication
24. Примеры использования Drag and Drop для различных визуальных компонентов
25. Что такое порт? Правила для работы с портами
26. Симфония на клавиатуре
27. Загрузка DLL
28. Исправление автоинкремента
29. Взаимодействие с чужими окнами
30. Проверить дубляжи в столбце


 

 

 
 
На главную