Вычисление интеграла функции f(x), используя квадратурную формулу Гаусса

Автор: Пользователь скрыл имя, 16 Мая 2012 в 14:18, курсовая работа

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

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

Содержание

1. Введение. …………………………………………………………….. 3
2. Теоретическая часть. ………………………………………………... 4
3. Практическая часть. ………………………………………………… 7
3.1 Используемые данные. …………………………………………….. 7
3.2 Программный код. …………………………………………………. 7
3.3 Блок схема. …………………………………………………………. 12
4. Заключение. …………………………………………………………. 14
5. Приложение А. ……………………………………………………… 15

Работа содержит 1 файл

Курсовая работа по ОАЯПРГ Тимофеев С.О..doc

— 174.00 Кб (Скачать)


Федеральное  агентство  по  образованию
министерства  образования  и  науки  Российской  Федерации

 

ГОСУДАРСТВЕННОЕ  ОБРАЗОВАТЕЛЬНОЕ  УЧРЕЖДЕНИЕ
ИАТЭ  НИЯУ  «МИФИ»

 

Кафедра  информационно-компьютерных  дисциплин

 

 

 

 

 

КУРСОВАЯ РАБОТА
по дисциплине
«Основы алгоритмических языков программирования»

ВЫЧИСЛЕНИЕ ИНТЕГРАЛА ФУНКЦИИ F(x), ИСПОЛЬЗУЯ

КВАДРАТУРНУЮ ФОРМУЛУ ГАУССА

 

 

 

 






Студент гр. Р-С09

 






__________________

подпись   дата






С. О. Тимофеев

 


 

 

 

 

 

Обнинск, 2011

 

Содержание.

1.      Введение. …………………………………………………………….. 3

2.      Теоретическая часть. ………………………………………………... 4

3.      Практическая часть. ………………………………………………… 7

3.1   Используемые данные. …………………………………………….. 7

3.2   Программный код. …………………………………………………. 7

3.3   Блок схема. …………………………………………………………. 12

4.      Заключение. …………………………………………………………. 14

5.      Приложение А. ……………………………………………………… 15

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.      Введение.

Сложные вычислительные задачи, возникающие при исследовании физических и технических проблем, можно разбить на ряд элементарных – таких как вычисление интеграла, решение дифференциального уравнения, и т. п. Многие элементарные задачи являются несложными и хорошо изучены. Для этих задач уже разработаны методы численного решения, и нередко имеются стандартные программы решения их на ЭВМ. Есть и достаточно сложные элементарные задачи; методы решения таких задач сейчас интенсивно разрабатываются (например, решение уравнений бесстолкновительной плазмы).

При выполнении инженерных расчётных работ широко используются языки программирования Basic, Fortran и Pascal, каждый из которых имеет определенные преимущества и недостатки.

Я буду пользоваться Compaq Visual Fortran. Compaq Visual Fortran накоплен богатым опытом применения языка и созданы обширные пакеты программ для решения прикладных задач, разработано системное математическое обеспечение и, в частности, оптимизирующие компиляторы для использования Fortran на разных ЭВМ. Ученых и инженеров Fortran привлекает простотой работы с комплексными переменными и функциями.

Численное интегрирование (историческое название: (численная) квадратурная) — ввычисление значения определенного интеграла (как правило, приближённое), основанное на том, что величина интеграла численно равна площади криволинейной трапеции, ограниченной осью абсцисс, графиком интегрируемой функции и отрезками прямых x = a и x = b, где a и b — пределы интегрирования.

Необходимость применения численного интегрирования чаще всего может быть вызвана отсутствием у первообразной функции представления в элементарных функциях и, следовательно, невозможностью аналитического вычисления значения определённого интеграла по формуле Ньютона - Лейбница. Также возможна ситуация, когда вид первообразной настолько сложен, что быстрее вычислить значение интеграла численным методом. Наконец, в прикладных задачах подынтегральная функция может быть задана не аналитически, а таблично - набором конкретных значений на некотором интервале. В таких случаях, как правило, проще численно рассчитать значение интеграла непосредственно по таблице значений, чем искать аналитическое выражение для функции и затем интегрировать его.

Интегрировать приходится во многих науках, таких как: физика, математика, химия, электротехника и т.п. И как  уже говорилось раньше - численное интегрирование в большинстве случаев очень удобно, так как не всегда можно вычислить значение определенного интеграла аналитически. При помощи квадратурной формулы Гаусса значение интеграла можно получить точнее чем, например, при помощи формулы Симпсона, метода трапеций и т.п.

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

 

 

 

Функции :

1.         

2.              

3.          

4.      

Я буду руководствоваться литературой:

Вержбицкий В. М. Численные методы. Математический анализ и обыкновенные дифференциальные уравнения. – Москва.: Высшая школа, 2001. 384 с

Ракитин В.И., Первушин В.Е. Практическое руководство по методам вычислений с приложением программ для персональных компьютеров. – Москва.: Высшая школа, 1998. 383 с

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.      Теория.

Общий вид линейной квадратурной формулы – это

      

где фиксированные аргументы xi называют узлами, а коэффициенты Аi – весами (весовыми коэффициентами) квадратурной формулы (определенный интеграл приближенно равен среднему взвешенному значений подынтегральной функции, вычисленных в определенных точках промежутка интегрирования).

Узлы xi на промежутке интегрирования [a, b] находятся из тех или иных соображений.

В таком случае целесообразно предварительно сделать линейную замену

              

и преобразовать исходный интеграл к интегралу со стандартным промежутком интегрирования [-1, 1]:

                

Данное равенство позволяет без ограничения общности рассматривать теперь вычисление интеграла

            

т.е. строить квадратурные формулы вида

 

         

от которых легко перейти к квадратурным формулам.

Если считать, что мы свободны в выборе как узлов, так и весов, можно попытаться подобрать их такими, чтобы равенство

  (1)

было точным для многочленов степени 2n-1 или, что то же, для 2n степенных функций

.

Выражение (1) называется квадратурной формулой Гаусса.

 

 

 

Таблица 1 : Узлы и веса квадратурной формулы Гаусса.

Кол-во разбиений    Коэффициенты         Веса

n = 1                x1 = 0.5                        C1 = 1

 

n = 2                x1 = 0.21132487          C1 = 1/2

                                    x2 = 0.78867513          C2 = 1/2

 

n = 3                x1 = 0.11270167          C1 = 5/18

                                    x2 = 0.5                        C2 = 4/9

                                    x3 = 0.88729833          C3 = 5/18

 

n = 4                x1 = 0.06943184          C1 = C4 = 0.17392742

                                    x2 = 0.33000948                     

                                    x3 = 0.88729833          C2 = C3 = 0.32607258

                                    x4 = 0.33000948                     

 

n = 5                x1 = 0.04691008          C1 = C5 = 0.11846344

                                    x2 = 0.23076534                     

                                    x3 = 0.5                        C2 = C4 = 0.23931433

                                    x4 = 0.76923466                     

                                    x5 = 0.95308992          C3 = 0.28444444

 

n = 6                x1 = 0.03376524          C1 = C6 = 0.08566225

                                    x2 = 0.16939531                     

                                    x3 = 0.38069041          C2 = C5 = 0.18038079

                                    x4 = 0.61930959                                  

                                    x5 = 0.83060469          C3 = C4 = 0.23395697

 

 

 

 

 

 

 

 

 

 

 

3.      Практическая часть.

 

3.1 Используемые данные.

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

Программа будет выводить результат интегрирования функции при помощи квадратурной формулы Гаусса, и квадратурной формулы Чебышева. Метод Чебышева используется для оценки погрешности метода Гаусса.

 

3.2 Программный  код.

! ********************************************

! * Вычисление интегралов функции            *

! * при помощи квадратурной формулы Гаусса   *

! ********************************************

program GAUSS

use text_transfer

integer selectfunc                            !Переменная для выбора функции

real otvet1, otvet2, otvet3, otvet4           !Результаты интегрирования                   

character(10) otv       !Символьная переменная для диалога с пользователем

real pogr1, pogr2, pogr3, pogr4               !Погрешности метода

real  np, vp                                  !Пределы интегрирования

real ist1, ist2, ist3, ist4                

print *,ru_dos('Программа GAUSS для вычисления определенного интеграла ')

print *,ru_dos('при помощи квадратурной формулы Гаусса, с 6-ю узлами.')

print *,ru_dos('Выполнил студент ИАТЭ НИЯУ МИФИ факультета ФЭ')

print *,ru_dos('группы Р-С09 Тимофеев С.О.')

do

print *,''

print *,''

print *,''                 

print *, ru_dos('Введите 1, 2, 3 или 4 для выбора функции:')

print *,''

print *,''

print *,'1. F1(x)=log(2*x)-0.5*x+2 '

print *,'2. F2(x)=exp(1-x)+x**2-5'

print *,'3. F3(x)=2*sin(3*x)-1.5*x'

print *,'4. F4(x)=x**4-(x+1)**2-3'

read *,selectfunc

print *,''

print *,''

select case(selectfunc)

case(1)

print *,ru_dos('Интегрирование функции под номером 1:')

print *,ru_dos('Введите пределы интегрирования, сначала нижний, затем верхний :')

read *,np

read *,vp

call GSF1(np,vp,otvet1)

call CHE1(np,vp,ist1)

pogr1=abs((ist1-otvet1)/ist1)

print *,ru_dos('Ответ :'),otvet1

print *,ru_dos('Значение по методу Чебышева :'),ist1

print *,ru_dos('Погрешность :'),pogr1

case(2)

print *,ru_dos('Интегрирование функции под номером 2:')

print *,ru_dos('Введите пределы интегрирования, сначала нижний, затем верхний :')

read *,np

read *,vp

call GSF2(np,vp,otvet2)

call CHE2(np,vp,ist2)

pogr2=abs((ist2-otvet2)/ist2)

print *,ru_dos('Ответ :'),otvet2

print *,ru_dos('Значение по методу Чебышева  :'),ist2

print *,ru_dos('Погрешность :'),pogr2

case(3)

print *,ru_dos('Интегрирование функции под номером 3:')

print *,ru_dos('Введите пределы интегрирования, сначала нижний, затем верхний :')

read *,np

read *,vp

endif

call GSF3(np,vp,otvet3)

call CHE3(np,vp,ist3)

pogr3=abs((ist3-otvet3)/ist3)

print *,ru_dos('Ответ :'),otvet3

print *,ru_dos('Значение по методу Чебышева  :'),ist3

print *,ru_dos('Погрешность :'),pogr3

case(4)

print *,ru_dos('Интегрирование функции под номером 4:')

print *,ru_dos('Введите пределы интегрирования, сначала нижний, затем верхний :')

read *,np

read *,vp

call GSF4(np,vp,otvet4)

call CHE4(np,vp,ist4)

pogr4=abs((ist4-otvet4)/ist4)

print *,ru_dos('Ответ :'),otvet4

print *,ru_dos('Значение по методу Чебышева  :'),ist4

print *,ru_dos('Погрешность :'),pogr4

end select

print *,ru_dos('Продолжить Y/N?')

read *,otv

if ((otv=='n').or.(otv=='N')) then

exit

endif

enddo

end program GAUSS

! *************************

! *Интегрируемые функции: *

! *************************

real function f1(x)

f1=log(2*x)-0.5*x+2

end

real function f2(x)

f2=exp(1-x)+x**2-5

end

real function f3(x)

f3=2*sin(3*x)-1.5*x

end

real function f4(x)

f4=x**4-(x+1)**2-3

end

!Подпрограммы GSF                                                                                                                                           

! Назначение                                                                                                                                           

!Приближенное вычисление интеграла функции, при помощи квадратурной формулы !Гаусса,                                                                     

!с колличеством узлов - 6.                                                                                                               

!Обращение:                                                                                                                                                         

!Call GSF1(a,b,int) или Call GSF2(a,b,int) или GSF3(a,b,int)                                         

!Входные данные (все real):                                                                                                               

!a-нижняя граница интегрирования                                                                                                 

!b-верхняя граница интегрирования                                                                                                               

!c-веса из файла vesa.txt                                                                                                                             

Информация о работе Вычисление интеграла функции f(x), используя квадратурную формулу Гаусса