Автор: Пользователь скрыл имя, 16 Мая 2012 в 14:18, курсовая работа
В своей курсовой работе автор использует для численного интегрирования квадратурную формулу Гаусса.
Цель работы написать правильно рабочую программу для вычисления четырех функций, а так же проанализировать точность метода.
1. Введение. …………………………………………………………….. 3
2. Теоретическая часть. ………………………………………………... 4
3. Практическая часть. ………………………………………………… 7
3.1 Используемые данные. …………………………………………….. 7
3.2 Программный код. …………………………………………………. 7
3.3 Блок схема. …………………………………………………………. 12
4. Заключение. …………………………………………………………. 14
5. Приложение А. ……………………………………………………… 15
Федеральное агентство по образованию
министерства образования и науки Российской Федерации
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ИАТЭ НИЯУ «МИФИ»
Кафедра информационно-компьютерных дисциплин
КУРСОВАЯ РАБОТА
по дисциплине
«Основы алгоритмических языков программирования»
ВЫЧИСЛЕНИЕ ИНТЕГРАЛА ФУНКЦИИ F(x), ИСПОЛЬЗУЯ
КВАДРАТУРНУЮ ФОРМУЛУ ГАУССА
|
подпись дата |
|
Обнинск, 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 привлекает простотой работы с комплексными переменными и функциями.
Численное интегрирование (историческое название: (численная) квадрату
Необходимость применения численного интегрирования чаще всего может быть вызвана отсутствием у первообразной функции представления в элементарных функциях и, следовательно, невозможностью аналитического вычисления значения определённого интеграла по формуле Ньютона - Лейбница. Также возможна ситуация, когда вид первообразной настолько сложен, что быстрее вычислить значение интеграла численным методом. Наконец, в прикладных задачах подынтегральная функция может быть задана не аналитически, а таблично - набором конкретных значений на некотором интервале. В таких случаях, как правило, проще численно рассчитать значение интеграла непосредственно по таблице значений, чем искать аналитическое выражение для функции и затем интегрировать его.
Интегрировать приходится во многих науках, таких как: физика, математика, химия, электротехника и т.п. И как уже говорилось раньше - численное интегрирование в большинстве случаев очень удобно, так как не всегда можно вычислить значение определенного интеграла аналитически. При помощи квадратурной формулы Гаусса значение интеграла можно получить точнее чем, например, при помощи формулы Симпсона, метода трапеций и т.п.
В своей курсовой работе я буду использовать, для численного интегрирования, квадратурную формулу Гаусса, цель работы написать правильно рабочую программу для вычисления четырех функций, а так же проанализировать точность метода.
Функции :
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
n = 2 x1 = 0.21132487 C1 = 1/2
n = 3 x1 = 0.11270167 C1 = 5/18
n = 4 x1 = 0.06943184 C1 = C4 = 0.17392742
n = 5 x1 = 0.04691008 C1 = C5 = 0.11846344
n = 6 x1 = 0.03376524 C1 = C6 = 0.08566225
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), используя квадратурную формулу Гаусса