Определенный интеграл

Автор работы: Пользователь скрыл имя, 15 Июня 2013 в 10:04, курсовая работа

Описание работы

В данном курсовом проекте рассмотрен пример программы системы линейных уравнений методом Гаусса. Данный метод позволяет решать системы линейных алгебраических уравнений, что гарантирует нахождение минимума в самых неблагоприятных условиях.
Цель курсовой работы – закрепление основ и углубление знаний в области объектно-ориентированного программирования, получения дополнительных практических навыков в использовании основных приёмов обработки экспериментальных данных, численного решения нелинейных и трансцендентных уравнений и определенных интегралов.

Содержание работы

Введение 5
Задание 1 6
1.1 Формулировка задачи 6
1.2 Спецификации задачи 6
1.3 Математическая постановка задачи 6
1.4 Описание вычислительных методов 6
1.5 Текст программы и схема алгоритма 8
Блок-схема функции glavelem 13
1.6 Результаты машинного тестирования программы 14
Заключение 15
Список литературы 16

Файлы: 1 файл

курсовая.doc

— 415.00 Кб (Скачать файл)

 

 

Министерство  образования и науки Российской Федерации

 

ИНСТИТУТ СОВРЕМЕННЫХ  ТЕХНОЛОГИЙ И ЭКОНОМИКИ

 

Кафедра Вычислительной Техники и Информационных Технологий _

 

 

 

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

к курсовой работе

 

по дисциплине       Объектно-ориентированное программирование               _

 

на тему _________________________________________________________

________________________________________________________________

                                                           (тема курсового проекта)

 

Выполнил(а) студент(ка) группы  ___________________________________

________________________________________________________________

                                                                              (Ф.И.О.)

 

Допущен к защите________________________________________________

 

Руководитель проекта                                                                                         _

                                                        (подпись, дата, расшифровка подписи)

 

Нормоконтроллер ________________________________________________

                                                        (подпись, дата, расшифровка подписи)

 

Защищен _______________________ Оценка _________________________

                                    

Члены комиссии _________________________________________________

                                   __________________________________________________________

                                   __________________________________________________________

(подпись, дата, расшифровка подписи)

 

Краснодар

2013

 

 

ИНСТИТУТ СОВРЕМЕННЫХ ТЕХНОЛОГИЙ И ЭКОНОМИКИ

 

Кафедра Вычислительной Техники и Информационных Технологий _

 

 

 

УТВЕРЖДАЮ

Зав. кафедрой ___________________

«___» ___________________ 20___ г.


 

 

 

 

 

ЗАДАНИЕ

на курсовую работу

 

Студенту(ке):                                         группы                              2-го    курса

факультета                             Современных технологий                                _

направления         230100 Информатики и вычислительной техники               _

 

Тема проекта ____________________________________________________

________________________________________________________________

Содержание задания _____________________________________________

_______________________________________________________________

 

Объем работы:

а) пояснительная записка  к проекту _____________ с.

б) программы.

Рекомендуемая литература: ________________________________________

________________________________________________________________

 

Срок выполнения проекта: с "___" __________ по "____"                  20    г.

Срок защиты:                                                                "____"                  20    г.

Дата выдачи задания:                                                  "____"                  20    г.

Дата сдачи проекта  на кафедру:                                 "____"                  20    г.

Руководитель проекта                                                                                      _

                                                                                                              (подпись)

Задание принял студент __________________________________________                                                                                     

                            (подпись)

 

 

 

 

Реферат

 

Пояснительная записка курсовой работы 17 с., 3 рисунка, 4 таблицы, 5 источников.

 

СЛАУ, МЕТОД ГАУССА, МАТРИЦА, ЛИНЕНЫЕ УРАВНЕНИЯ, ВЕРХНЕТРЕУГОЛЬНЫЙ ВИД, ПРЯМОЙ ХОД, ОБРАТНЫЙ ХОД.

 

В данном курсовом проекте рассмотрен пример программы системы линейных уравнений методом Гаусса. Данный метод позволяет решать системы линейных алгебраических уравнений, что гарантирует нахождение минимума в самых неблагоприятных условиях.

 

Содержание

 

Введение

 

Цель курсовой работы – закрепление основ и углубление знаний в области объектно-ориентированного программирования, получения дополнительных практических навыков в использовании основных приёмов обработки экспериментальных данных, численного решения нелинейных и трансцендентных уравнений и определенных интегралов.

При выполнении курсовой работы студент  самостоятельно выполняет все этапы  создания программного продукта, от постановки задачи  до практической реализации, сопровождающейся документацией и  инструкциями по его использованию.

 

 

 

1.1 Формулировка  задачи

Решить систему уравнений вида Ax=b методом Гаусса в соответствии с вариантом.

Таблица 1 – Вариант задания

3

2,18              2,44                  2,49

2,17             2,31                 2,49

3,15             3,22                 3,17

-4,34

-3,91

-5,27


1.2 Спецификации задачи

Входные данные:

- уравнение вида Ax=b

 

Выходные данные:

-  решение уравнения Ax=b

1.3 Математическая постановка задачи

Таблица 2 – Вариант задания

Характеристика переменных

Имя     переменной

Смысл переменной

Назначение переменной

Ограничения

n

Число уравнений системы

Исходная

<50

mas

Система уравнений

Исходная

 

x

Решение уравнения

Результат

 

 

1.4 Описание вычислительных методов

Методом Гаусса называют точный метод решения невырожденной системы линейных уравнений, состоящий в том, что последовательным исключением неизвестных систему

   i=1,2...., n

приводят к эквивалентной системе  с треугольной матрицей

x1+c12 x2+...+c1n xn = d1 ,

            x2+...+c2n xn =d2 ,

.........................................

                              xn=dn ,

решение которой  находят по рекуррентным формулам

xi=di- , xn=dn , i=n-1,n-2,...,1.

Существует  много вариантов этого метода. Рассмотрим схему с выбором главного элемента. Пусть исходная система имеет вид

a11x1+...+a1nxn=b1 ,                                                                            

...................................                                                                             (1)

an1x1+...+annxn=bn.                                                                             

Предположим, что a11¹0. Разделим обе части первого уравнения системы на a11. В результате получим

       x1+b12x2+...+b1nxn=b1(1),                                                                    (2)

где b1j=a1j/a11, j=2,3,..., b1(1)=b1/a11. С помощью уравнения (2) исключим во всех уравнениях системы (1), начиная со второго, слагаемые, содержащие х1. Для этого умножаем обе части уравнения (2) последовательно на a21,a31,...an1и вычитаем соответственно из второго, третьего,..., n-го уравнения системы (1). В результате получаем систему, порядок которой на единицу меньше порядка исходной системы:

 

      a22(1)x2+...+a2n(1)xn=b2(1),

      ........................................

      an2(1)x2+...+ann(1)xn=bn(1),

где aij(1)=aij-ai1b1, i,j=2,3,...,n, bi(1)=bi-ai1b1, i=2,3,...,n.

Аналогично преобразуем полученную систему. В результате кратного повторения этого преобразования получим систему с треугольной матрицей

 

x1+c12x2+...+c1nxn=d1 ,

x2+c23x3+...+c2nxn=d2 ,                                                                                                                 

....................................                                                                          (3)

                          xn=dn ,

которая эквивалентна системе (1) и  легко решается. В самом деле, из последнего уравнения находим xn, подставляя xn в предпоследнее уравнение, найдем хn-1, затем хп-2 и т.д. до х1, которое находим из первого уравнения системы, когда уже известны x, хп-1, хп-.2,..., х2.

Таким образом, вычисления по методу Гаусса распадаются на два этапа: на первом этапе, называемом прямым ходом  метода, исходную систему преобразуют к треугольному виду. На втором этапе, который называют обратным ходом, решают треугольную систему (3), эквивалентную исходной.

Коэффициенты a11,a22(1)33(2) называют ведущими элементами метода Гаусса. На каждом шаге предполагалось, что akk(k-1)¹0.  Если окажется, что это не так, то в качестве ведущего элемента можно использовать любой другой ненулевой коэффициент системы. Однако, если     коэффициент akk(k-1)¹0 мал, то после деления на этот элемент и вычитания k-го уравнения из последующих возникают большие погрешности округления. Чтобы избежать этого, на каждом этапе уравнения переставляют так, чтобы на главной диагонали оказался наибольший по модулю элемент k-го столбца. Если матрица системы хорошо обусловлена, то в методе Гаусса с выбором главного элемента погрешности округления невелики. Одновременно с решением системы можно найти определитель матрицы системы. Нетрудно убедиться, что определитель матрицы системы равен произведению ведущих элементов, т. е. a11 a22(1)...аnn(n-1).

1.5 Текст программы и схема  алгоритма

//Решение системы лин. уравнений  методом Гаусса

//с выбором главного элемента

#include <stdio.h>

#include <conio.h>

#include <math.h>

#define N 50

void glavelem( int k, double mas[] [N + 1], int n, int otv[] );

 

int main( void )

{

  double mas[N] [N + 1];

  double x[N]; //Корни системы

  int otv[N]; //Отвечает за порядок  корней

  int i, j, k, n;

  //Ввод данных

  clrscr();

  do

  {

    printf( "Vvedite chislo uravnenii v sisteme: " );

    scanf( "%d", & n );

    if ( N < n )

      printf( "Slishkom bolshoe chislo uravnenii. Povtorite vvod\n" );

  }

  while ( N < n );

  printf( "Vvedite sistemu:\n" );

  for ( i = 0; i < n; i++ )

    for ( j = 0; j < n + 1; j++ )

      scanf( "%lf", & mas[i] [j] );

  //Вывод введенной системы

  clrscr();

  printf( "Sistema:\n" );

  for ( i = 0; i < n; i++ )

  {

    for ( j = 0; j < n + 1; j++ )

      printf( "%7.2f ", mas[i] [j] );

    printf( "\n" );

  }

  //Сначала все корни по  порядку

  for ( i = 0; i < n + 1; i++ )

    otv[i] = i;

  //Прямой ход метода Гаусса

  for ( k = 0; k < n; k++ )

  { //На какой позиции должен  стоять главный элемент

    glavelem( k, mas, n, otv ); //Установка  главного элемента

    if ( fabs( mas[k] [k] ) < 0.0001 )

    {

      printf( "Sistema ne imeet edinstvennogo resheniya" );

      return ( 0 );

    }

    for ( j = n; j >= k; j-- )

      mas[k] [j] /= mas[k] [k];

    for ( i = k + 1; i < n; i++ )

      for ( j = n; j >= k; j-- )

        mas[i] [j] -= mas[k] [j] * mas[i] [k];

  }

  //Обратный ход

  for ( i = 0; i < n; i++ )

    x[i] = mas[i] [n];

  for ( i = n - 2; i >= 0; i-- )

    for ( j = i + 1; j < n; j++ )

      x[i] -= x[j] * mas[i] [j];

  //Вывод результата

  printf( "Otvet:\n" );

  for ( i = 0; i < n; i++ )

    for ( j = 0; j < n; j++ )

      if ( i == otv[j] )

      { //Расставляем корни  по порядку

        printf( "%f\n", x[j] );

        break;

      }

  return ( 0 );

}

//----------------------------------------------

//Описание  функции

//----------------------------------------------

void glavelem( int k, double mas[] [N + 1], int n, int otv[] )

{

  int i, j, i_max = k, j_max = k;

  double temp;

  //Ищем максимальный по модулю  элемент

  for ( i = k; i < n; i++ )

    for ( j = k; j < n; j++ )

      if ( fabs( mas[i_max] [j_max] ) < fabs( mas[i] [j] ) )

      {

        i_max = i;

        j_max = j;

      }

  //Переставляем строки

  for ( j = k; j < n + 1; j++ )

  {

    temp = mas[k] [j];

    mas[k] [j] = mas[i_max] [j];

    mas[i_max] [j] = temp;

  }

  //Переставляем столбцы

  for ( i = 0; i < n; i++ )

  {

    temp = mas[i] [k];

    mas[i] [k] = mas[i] [j_max];

    mas[i] [j_max] = temp;

  }

  //Учитываем изменение порядка  корней

  i = otv[k];

  otv[k] = otv[j_max];

  otv[j_max] = i;

}

 

1.6 Блок-схема алгоритма

1.6.1 Блок-схема основной функции

Рисунок 1 – Блок-схема алгоритма основной программы

1.6.2 Блок-схема функции glavelem

Рисунок 2 – Блок-схема алгоритма  функции glavelem

1.7 Результаты машинного тестирования программы

 

Рисунок 3 – Результаты машинного тестирования

Заключение

В ходе выполнения курсовой работы разработаны  две программы с использованием Microsoft Visual C++ 9.0 Express Edition для решения системы уравнения методом Гаусса и решения задачи Коши методом Эйлера. Составлены схемы алгоритма для каждой задачи. Разработанные программы были протестированы тестовыми примерами.

Информация о работе Определенный интеграл