рефераты

Рефераты

рефераты   Главная
рефераты   Краткое содержание
      произведений
рефераты   Архитектура
рефераты   Астрономия
рефераты   Банковское дело
      и кредитование
рефераты   Безопасность
      жизнедеятельности
рефераты   Биографии
рефераты   Биология
рефераты   Биржевое дело
рефераты   Бухгалтерия и аудит
рефераты   Военное дело
рефераты   География
рефераты   Геодезия
рефераты   Геология
рефераты   Гражданская оборона
рефераты   Животные
рефераты   Здоровье
рефераты   Земельное право
рефераты   Иностранные языки
      лингвистика
рефераты   Искусство
рефераты   Историческая личность
рефераты   История
рефераты   История отечественного
      государства и права
рефераты   История политичиских
      учений
рефераты   История техники
рефераты   Компьютерные сети
рефераты   Компьютеры ЭВМ
рефераты   Криминалистика и
      криминология
рефераты   Культурология
рефераты   Литература
рефераты   Литература языковедение
рефераты   Маркетинг товароведение
      реклама
рефераты   Математика
рефераты   Материаловедение
рефераты   Медицина
рефераты   Медицина здоровье отдых
рефераты   Менеджмент (теория
      управления и организации)
рефераты   Металлургия
рефераты   Москвоведение
рефераты   Музыка
рефераты   Наука и техника
рефераты   Нотариат
рефераты   Общениеэтика семья брак
рефераты   Педагогика
рефераты   Право
рефераты   Программирование
      базы данных
рефераты   Программное обеспечение
рефераты   Промышленность
      сельское хозяйство
рефераты   Психология
рефераты   Радиоэлектроника
      компьютеры
      и перифирийные устройства
рефераты   Реклама
рефераты   Религия
рефераты   Сексология
рефераты   Социология
рефераты   Теория государства и права
рефераты   Технология
рефераты   Физика
рефераты   Физкультура и спорт
рефераты   Философия
рефераты   Финансовое право
рефераты   Химия - рефераты
рефераты   Хозяйственное право
рефераты   Ценный бумаги
рефераты   Экологическое право
рефераты   Экология
рефераты   Экономика
рефераты   Экономика
      предпринимательство
рефераты   Юридическая психология

 
 
 

Численные методы Двойной интеграл по формуле Симпсона


------------------------------------------------------------------------------
Курсовой проект это по
численным методам.
Считает он двойной интеграл по формуле
Симпсона (парабол еще называют)
Сделал я его на третьем курсе, учась в группе ПС-301 на прикладной
математике, чему & очень рад.
(c) '94 by Петренко Вадим
Сергеевич
А препода Панюков А.В. звали, & поставил он мне пятак, что само по
себе довольно круто.
26 мая 1994 год.
/*****************************************************************************
*
.FILE  : func.c
*
.TITLE : Содержит функции пользователя, которые можно
*        : изменять без перекомпиляции основной
программы
*
.DESCR : После изменения этого модуля его необходимо перекомпилировать
*        : и слинковать с numeric.obj
*        :
*        :
*
.NOTE  : NOT FOR RENTAL OR SALE.
*        : FEDERAL LAW PROVIDES SEVERE CIVIL
& CRIMINAL PENALTIES FOR
*        : UNAUTHORIZED DUPLICATION OR
DISTRIBUTION.
*        :
*        : (C) '94 by P$P
*****************************************************************************/
#include
<math.h>
/*
выбираемая пользователем функция No.1 */
double
f1 (double x, double y)
 { return 0.5 * cos (y); }
/*
выбираемая пользователем функция No.2 */
double
f2 (double x, double y)
 { return 0.5 - sin (y); }
/*
выбираемая пользователем функция No.3 */
double
f3 (double x, double y)
 { return sqrt (x * x + y * y); }
/*****************************************************************************
*
.FILE  : numeric.c
*
.TITLE : Расчет двойного интеграла при помощи метода Симпсона (парабол)
*
.DESCR : Курсовой проект по численным методам (1994 год)
*        :
*        :  Выполнил: Петренко В.С.
(гр. ПС-301)
*        : 
Проверил: Панюков А.В.
*        :
*
.NOTE  : NOT FOR RENTAL OR SALE.
*        : FEDERAL LAW PROVIDES SEVERE CIVIL
& CRIMINAL PENALTIES FOR
*        : UNAUTHORIZED DUPLICATION OR
DISTRIBUTION.
*        :
*        : (C) '94 by P$P
*****************************************************************************/
#include
<math.h>
#include
<stdio.h>
/*****************************************************************************
*
.NAME   : m_Simpson
*
.TITLE  : Расчет интеграла методом
Симпсона (парабол)
*
.DESCR  :
*         :
*
.PARAMS : double m_Simpson (double (*func) (double, double),
*         :                   double t_fix, double t_limit, int N);
*         :        double (*func) (double, double) - подынтегральная ф-я
*         :        double t_fix   -
фиксированный первый аргумент
*         :        double t_limit - верхний предел интегрирования,
*         :                         нижний равен -t_limit
*         :        int N          - число точек разбиения
*
.RETURN : Значение вычисленного интеграла
*****************************************************************************/
double
m_Simpson (double (*func) (double, double),
                  double t_fix, double
t_limit, int N)
 {
   double sum1 = 0; /* Дї                        */
   double sum2 = 0; /*  і временные переменные   */
   double sum3 = 0; /* ДЩ                        */
   double sum;      /* конечный результат       
*/
   double h   
= (2 * t_limit) / N; /* шаг сетки */
   int i;           /* временная                 */
    sum1 = (*func) (t_fix, -t_limit) + (*func)
(t_fix, +t_limit);
    for (i = 1; i <= N - 1; i++) sum2 +=
(*func) (t_fix, -t_limit + (i * h));
    sum2 *= 2;
    for (i = 1; i <= N; i++) sum3 +=
(*func) (t_fix, -t_limit + ((i-0.5) * h));
    sum3 *= 4;
    sum = sum1 + sum2 + sum3;
    sum = (h / 6) * sum;
  return sum;
 }
                      /*                       */
                      /* Глобальные переменные
*/
                      /* ~~~~~~~~~~~~~~~~~~~~~
*/
#define
PI 3.1415926536    /* число П                                   */
double
k;                  /* параметр функции
- задается пользователем */
int
N_MAX;                 /* число узлов
сетки разбиения     */
double
(*currFunc) (double, double); /* выбранная пользователем функция */
double
f1 (double x, double y);
double
f2 (double x, double y);
double
f3 (double x, double y);
/*****************************************************************************
*
.NAME   : double F (double dummy, double
t)
*
.TITLE  : Вычисляет внутренний интеграл
(G (t)).
*         : См. текст курсового проекта.
*
.DESCR  :                           П/2
*         :                            Ъ
*         : первая вычисляемая функция і G (t + П/2) * sin (t + П/2) dt
*         :             t             
Щ
*         :             Ъ           
-П/2
*         : где G (t) = і currFunc (t, tau)
dtau
*         :             Щ
*         :            -t
*
.PARAMS : double F (double dummy, double t);
*         :        double dummy - фиктивный первый аргумент, при вызове этой
*         :                       функции он не используется, т.к. она
*         :                       функция одного аргумента
*         :        double       -
действительный второй аргумент
*
.RETURN : Значение функции: G (t) * sin (k * t);
*****************************************************************************/
double
F (double dummy, double t)
 {
   double G;
   t = t + PI / 2; /* сдвижка начала
координат, чтобы пределы    */
                   /* были симметричны (в
нашем случае - на П/2) */
    G = m_Simpson (currFunc, t, t, N_MAX);
  return G * sin (k * t);
 }
/*****************************************************************************
*
.NAME   : main
*
.TITLE  : Основная диалоговая функция.
*
.DESCR  : Запрашивается интересующая
пользователя функция,
*         : параметр k и число узлов сетки
N_MAX.
*         : Выводит на экран вычисленное
значение интеграла и
*         : два справочных значения - П и П/2.
*         :
*
.PARAMS : void main (void);
*
.RETURN :
*****************************************************************************/
void
main (void)
 {
   double integral;  /* значение вычисленного интеграла */
   int   
selection; /* номер выбранной функции         */
   /* массив доступных функций */
   double (*functions []) (double, double) = {
f1, f2, f3 };
    printf ("\n   Вычисление интеграла методом Симпсона (парабол)   ");
    printf ("\n   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   ");
    printf ("\n              ЪЪ                                     ");
    printf ("\n          I = іі sin k(x + y) f (x, y) dx dy         ");
    printf ("\n              ЩЩ                                     ");
    printf ("\n              D                                      ");
    printf ("\n где D = { (x, y): x, y
>= 0; x + y <= П }, f Е C (D)");
    printf ("\n");
    printf ("\nДля какой функции
рассчитывать:             ");
    printf
("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~             ");
    printf ("\n  1) f (x, y) = 0.5 * cos (y)               ");
    printf ("\n     Ъ                       
ЪД 0; k != 1  ");
    printf ("\n     і sin x * sin (kx) dx => і             ");
    printf ("\n     Щ                       
АД П/2; k = 1 ");
    printf ("\n                                            ");
    printf ("\n  2) f (x, y) = 0.5 - sin (y)               ");
    printf ("\n     Ъ                                      ");
    printf ("\n     і x * sin (kx) dx =====> П; k = 1      ");
    printf ("\n     Щ                                      ");
    printf ("\n                                            ");
    printf ("\n  3) f (x, y) = sqrt (x * x + y * y)");
    printf ("\n");
    do
     {
       printf ("Ваш выбор: ");
       scanf ("%d", &selection);
     } while (!(1 <= selection &&
selection <= 3));
    printf ("Параметр k: ");
    scanf ("%lg", &k);
    do
     {
       printf ("Число узлов сетки N:
");
       scanf ("%d", &N_MAX);
     } while (!(N_MAX > 0));
    printf ("\n");
    printf ("\n Расчет интеграла
...");
    currFunc = functions [selection - 1];          /* текущая функция    */
    integral = m_Simpson (F, 0, PI / 2,
N_MAX);    /* вычисляем интеграл */
    printf ("\n Значение интеграла равно:
%.12lg", integral); /* вывод   */
    printf ("\n Величины: П = %.12lg; П/2
= %.12lg", PI, PI / 2);
 }
numeric.c
func.c
*** РЕЗУЛЬТАТ РАБОТЫ ПРОГРАММЫ *** ВычисЃEыGЃEинтегралЃEЃEтодоЃEСимЃEЃEЃE(ЃEрабоЃE
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ЪЪ I = іі sin k(x + y) f (x, y) dx dy ЩЩ
D
гдЃED = {
(x, y): x, y >= 0; x + y <= П }, f Е
C (D)
ДЃE ЃEЃEЃEфуыIциЃEрассчитывать:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1) f (x, y) = 0.5 * cos
(y) Ъ
ЪД 0; k != 1 і sin x * sin (kx) dx => і Щ
АД П/2; k = 1 2) f (x, y) = 0.5 - sin
(y) Ъ і x * sin (kx) dx =====> П; k = 1 Щ 3) f (x, y) = sqrt (x * x + y
* y)
Ваш выбоЃE 1
ПараметЃEk:
1
ЧисЃE узЃEЃEсеткЃEN: 64
РасчеЃEинтегралЃE...
ЗъьчеыGЃEинтегралЃEравнЃE
1.57079633258
ВеличинЃE П =
3.1415926536; П/2 = 1.5707963268
Курсовая работа численные методы решение интеграла. Численное интегрирование метод симпсона реферат.

© 2011 Рефераты