1) Форма обращения к модулю
trap(Gk,G0,n,f)
2)Спецификация идентификаторов входных параметров модуля
Идентиф. | Тип перем. | Инженерное обознач. | Значение | Размерность | Содержательное наименование |
G0 | Real | ![]() | H | Нижний предел интегрирования | |
Gk | Real | ![]() | H | верхний предел интегрирования | |
nt | Integer | ![]() | количество шагов |
3) Спецификация идентификаторов выходных параметров модуля
Идентиф. | Тип перем. | Инженерное обознач. | Значение | Размерность | Содержательное наименование |
trap | Real | ![]() | Значение подынтегрального выражения |
Текст модуля
! Подпрограмма интерирования
function trap(Gk,G0,nt,f)
h=(G0-Gk)/(nt-1)
x=Gk
y=G0
s=f(x)+f(y)/2
do i=2,nt-1
x=x+h
s=s+f(x)
end do
trap=s*h
end function
Тестовая задача модуля
1)Описание тестовой задачи
Вычислить интеграл:
a=0
b=1
nt=51
2) описание исходных данных тестовой задачи
3) текст вызывающей программы
program integ
external f
integer, parameter:: N=51
a=0
b=1
S=trap(a,b,N,f)
print*, ‘S=’,S
end
4) текст вызываемых прграмм
Function f(x)
f=X**2
End function
5) Результаты решения тестовой задачи
S= 0.3333998
2.4.3 Описание подпрограммы «f».
2.4.3.1 Общие характеристики.
1) Наименование подпрограммы
Подынтегральная функция
2) Назначение модуля
модуль предназначен для задания подынтегральной функции
3) Язык программирования
Фортран Compaq Visual Fortran
4) Тип и версия операционной системы
Microsoft Windows XP
Home Edition
Версия 2002
Service Pack 2
2.4.3.2 Описание модуля.
Подпрограмма задающая подынтегральную функцию
2.4.3.3 Реализация программного модуля.
Алгоритм.
См. раздел 2.2.3
Блок – схема.
см. приложение №1
Таблица идентификаторов.
Идентиф. | Тип перем. | Инженерное обознач. | Значение | Размерность | Содержательное наименование |
Cyz | Real | ![]() | ![]() | Текущее значение коэффициента подъемной силы | |
V | Real | V | м/с | Скорость полёта | |
Cxz | Real | ![]() | ![]() | Текущее значение коэффициента лобового сопротивления | |
G | Real | ![]() | Н | Вес самолета |
Листинг.
function f(G)
use source_data
common/cml/ Cxz,Cyz
f=(V*Cyz)/(G*Cxz)
end function
Обращение к подпрограмме.
f(x)
Тестирование подпрограммы.
Подсчет контрольной точки на калькуляторе показал, что расчеты верны:
f (x)= 0,0156 для первой итерации.
2.4.4 Описание подпрограммы «Inter».
2.4.4.1 Общие характеристики.
1) Наименование подпрограммы
Линейная интерполяция
2) Назначение модуля
модуль предназначен для вычисления текущего значения аргумента при заданном значении функции
3) Язык программирования
Фортран Compaq Visual Fortran
4) Тип и версия операционной системы
Microsoft Windows XP
Home Edition
Версия 2002
Service Pack 2
2.4.4.2 Описание модуля.
модуль предназначен для вычисления текущего значения аргумента при заданном значении функции
2.4.4.3 Реализация программного модуля.
Алгоритм.
См. раздел 2.2.4
Блок - схема.
см. Приложение №1
Таблица идентификаторов.
Идентиф. | Тип перем. | Инженерное обознач. | Значение | Размерность | Содержательное наименование |
y | Real | ![]() | ![]() | Массив значений функции | |
x | Real | ![]() | ![]() | Массив значений аргумнета | |
yk | Real | ![]() | ![]() | Текущее значение функции | |
xk | Real | ![]() | ![]() | Текущее значение аргумента | |
m | Real | нет | ![]() | Количество узловых точек |
Листинг.
subroutine inter(y,x,xk,yk,m)
real, dimension(m)::y,x
do j=2,m-1
if(yk<=y(j))then
i=j-1
xk= x(i)+((x(i+1)-x(i))/(y(i+1)-y(i)))*(yk-y(i))
exit
elseif (yk>y(m))then
xk= x(m-1)+((x(m)-x(m-1))/(y(m)-y(m-1)))*(yk-y(m-1))
end if
end do
end subroutine
Обращение к подпрограмме.
call inter(Cy,Cx,Cxz,Cyz,5)
Тестирование подпрограммы.
Program interpol
integer,parameter::n=4
real,Dimension(n)::x,y
do xk=0,5,0.5
x(1)=1
x(2)=2
x(3)=3
x(4)=4
y(1)=1
y(2)=1
y(3)=2
y(4)=2
Call inter(y,x,xk,yk,n)
Print*,xk, yk
End do
End program
subroutine inter(y,x,xk,yk,m)
real, dimension(m)::y,x
do j=2,m-1
if(yk<=y(j))then
i=j-1
xk= x(i)+((x(i+1)-x(i))/(y(i+1)-y(i)))*(yk-y(i))
exit
elseif (yk>y(m))then
xk= x(m-1)+((x(m)-x(m-1))/(y(m)-y(m-1)))*(yk-y(m-1))
end if
end do
end subroutine
Результат:
0.0000000E+00 1.000000
0.5000000 1.000000
1.000000 1.000000
1.500000 1.000000
2.000000 1.000000
2.500000 1.500000
3.000000 2.000000
3.500000 2.000000
4.000000 2.000000
4.500000 2.000000
5.000000 2.000000
Press any key to continue
2.4.5 Описание подпрограммы «Cyt».
Алгоритм.
Подпрограмма считает текущее значение по формуле, заданной в условии
Блок - схема.
см. приложение № 1
Таблица идентификаторов.
Идентиф. | Тип перем. | Инженерное обознач. | Значение | Размерность | Содержательное наименование |
Cyt | Real | ![]() | ![]() | Текущее значение коэффициента подъемной силы | |
V | Real | V | м/с | Скорость полёта | |
S | Real | S | ![]() | Площадь крыла | |
G | Real | ![]() | Н | Вес самолета | |
Gk | Real | ![]() | Н | Начальный вес самолета | |
Ro | Real. | ![]() | 0,705 | кг/м3 | плотность воздуха на высоте полета |
Листинг.
function Cyt(G)
use source_data
G=Gk
Cyt=2*G/(ro*V**2*S)
print*,'Cyz=',Cyt
end function
Тестирование программы.
Контрольная точка: Cyt=0.0794 (Калькулятор)
Cyz= 7.9432629E-02 (ЭВМ)
2.4.6 Описание вызывающей программы «Main».
Алгоритм.
Вызывающая программа позволяет формировать задачу из разработанных блоков с последующим выполнением задания.
Блок - схема.
см. приложение № 1
Таблица идентификаторов.
Листинг.
program main
use source_data
external f
real::L
common/cml/ Cxz,Cyz
print*,"Programma dlya raschota dal'nosti polyota. Copyright Vladimir Tsukanov, gruppa 1O-203B,MAI 2012"
n=20
Cyz=Cyt(G)
call inter(Cy,Cx,Cxz,Cyz,5)
L=3.6*trap(Gk,G0,n,f)
print*,"Dal'nost' ravna",L
end program
Тестирование программы.
См. Раздел 2.5
2.5 Тестирование программы и отладка задачи в целом.
Чтобы оттестировать программу в целом необходимо предварительно отладить все программные компоненты. Оттестировать их на любых примерах. Разработать инструкции по использованию.
Листинг главной программы вместе с подпрограммами приводятся ниже.
!Курсовая работа по информатике
!Вариант № 17
!Выполнил Цуканов Владимир гр 1О-203Б
module source_data
real,dimension(5)::Cy=(/0.,0.1,0.2,0.3,0.4/),&
Cx=(/0.018,0.018,0.019,0.021,0.027/)
real,parameter::G0=120000,Gk=70000,V=250,S=40
real,parameter::ro=0.705
end module
function Cyt(G)
use source_data
G=Gk
Cyt=2*G/(ro*V**2*S)
print*,'Cyz=',Cyt
end function
!Подпрограмма интерполяции
subroutine inter(y,x,xk,yk,m)
real, dimension(m)::y,x
do j=2,m-1
if(yk<=y(j))then
i=j-1
xk= x(i)+((x(i+1)-x(i))/(y(i+1)-y(i)))*(yk-y(i))
exit
elseif (yk>y(m))then
xk= x(m-1)+((x(m)-x(m-1))/(y(m)-y(m-1)))*(yk-y(m-1))
end if
end do
end subroutine
function f(G)
use source_data
common/cml/ Cxz,Cyz
f=(V*Cyz)/(G*Cxz)
end function
program main
use source_data
external f
real::L
common/cml/ Cxz,Cyz
print*,"Programma dlya raschota dal'nosti polyota. Copyright Vladimir Tsukanov, gruppa 1O-203B,MAI 2012"
n=20
Cyz=Cyt(G)
call inter(Cy,Cx,Cxz,Cyz,5)
L=3.6*trap(Gk,G0,n,f)
print*,"Dal'nost' ravna",L
end program
! Подпрограмма интерирования
function trap(Gk,G0,nt,f)
h=(G0-Gk)/(nt-1)
x=Gk
y=G0
s=f(x)+f(y)/2
do i=2,nt-1
x=x+h
s=s+f(x)
end do
trap=s*h
end function
2.6 Выполнение расчетов.
Результаты, полученные в результате вычислений, совпадают с расчетом контрольной точки рассмотренного фрагмента программы.
Предусмотрены все предполагаемые аварийные ситуации с соответствующими сообщениями.
Programma dlya raschota dal'nosti polyota. Copyright Vladimir Tsukanov, gruppa
1O-203B,MAI 2012
Cyz= 7.9432629E-02
Dal'nost' ravna 2215.659
Press any key to continue
По каждому модулю должны быть разработаны и приведены:
блок-схема, таблица идентификаторов, листинг программы,
расчет контрольной точки, инструкция по использованию.
Документация по использованию подпрограмм.
Таблицы идентификаторов:
Входные данные
Идентиф. | Тип перем. | Инженерное обознач. | Значение | Размерность | Содержательное наименование |
Cy | Real | ![]() | ![]() | Коэффициент подъемной силы | |
V | Real | V | м/с | Скорость полёта | |
Cx | Real | ![]() | ![]() | Коэффициент лобового сопротивления | |
G0 | Real | ![]() | Н | Начальный вес самолета | |
Gk | Real | ![]() | Н | Конечный вес самолета | |
Ro | Real. | ![]() | 0,705 | кг/м3 | плотность воздуха на высоте полета |
S | Real | S | м2 | Площадь крыла | |
![]() | Integer | ![]() | ![]() | Количество разбиений |
Выходные данные
Идентиф. | Тип перем. | Инженерное обознач. | Значение | Размерность | Содержательное наименование |
L | Real | ![]() | определ | ![]() | Дальность полета |
Заключение
В курсовой работе разработана математическая модель для расчета дальности полета самолета в горизонтальном полете для заданного диапазона скоростей.
Программа была отлажена на персональном компьютере. Представленные расчеты отвечают заданной точности.