Текст программы:
program main
use dflib
implicit none
integer, parameter::n=6
integer, parameter::p=5
real, allocatable:: mtr(:, :)
real, allocatable:: otkl(:, :)
real sred(p)
allocate (mtr(n, p))
allocate (otkl(n, p))
call seed (RND$TIMESEED)
call fillmatrix(mtr,n, p)
call PrintMatrix(mtr,n,p)
call vichSred(mtr, sred, n, p)
print*, "Otkloneniya elementov ot srednego:"
call vichOtkl(mtr, otkl, n, p, sred)
call PrintOtkl(otkl,n,p)
end
subroutine fillmatrix(mtr, row, col)
use dflib
integer row, col
real mtr(row, col)
real rnd
do i=1, row
do j=1, col
call random(rnd)
mtr(i, j)=rnd*10+1
enddo
enddo
end
subroutine Printmatrix(mtr, row, col)
integer row, col, i, j
real mtr(row, col)
do i=1, row
print*, (mtr(i, j), j=1, col)
enddo
print*, " "
end
subroutine vichSred(mtr, sred, row, col)
implicit none
integer row, col, i, j
real mtr(row, col), sred(col)
do j=1, col
do i=1, row
sred(j)=sred(j)+mtr(i, j)
enddo
sred(j)=sred(j)/row
enddo
print*, sred
print*, " "
end
subroutine vichOtkl(mtr, otkl, row, col, sred)
implicit none
integer row, col, i, j
real mtr(row, col), sred(col), otkl(row, col)
do j=1, col
do i=1, row
otkl(i, j)=mtr(i, j)-sred(j)
enddo
enddo
end
subroutine PrintOtkl(otkl,row,col)
integer row, col, i, j
real otkl(row, col)
do i=1, row
print*, (otkl(i, j), j=1, col)
enddo
print*, " "
end
Раздел 6. Подпрограммы
Постановка задачи
Вычислить значение величины, содержащей несколько однотипных сумм
program main
use dflib
integer, parameter::m=4
integer, parameter::n=5
real, allocatable:: mtr(:, :)
allocate (mtr(m, n))
call fillmatrix(mtr,m, n)
call PrintMatrix(mtr,m,n)
end
subroutine fillmatrix(mtr, row, col)
use dflib
integer row, col
real i, j
real mtr(row, col)
real rnd
do i=1, row
do j=1, col
if (i<j) mtr(i, j)= sin(i+j)
if (i==j) mtr(i, j)=1
if (i>j) mtr(i, j)=asin((i+j)/(2*j+3*j))
enddo
enddo
end
subroutine Printmatrix(mtr, row, col)
integer row, col
real i, j
real mtr(row, col)
do i=1, row
print"(5f15.4)", (mtr(i, j), j=1.0, col)
print*," "
enddo
print*, " "
end
Раздел 6. Разветвляющиеся вычислительные процессы.
Постановка задачи:
Вычислить функцию y=f(x) исходя из условий:
s
Выполнени задачи:
Пишется программа (см ниже), с использованием оператора IF, то есть после ввода Х (аргумента) выполняется проверка на принадлежность аргумента определённому интервалу, после чего находится значение функции по необходимой формуле.
Текст программы:
program main
implicit none
real(8) res, x, p
print*, "Input x: "
read*, x
if (x<-12) res=abs(x)**0.5+sin(x)/2
if (x>=-12 .and. x<8) res=sin(x-5)
if (x>=8.and. x<10) res=(x+6)**0.5/(x+3)
if (x>=10) res=4/(3+x)
print*, "Result: ", res
end
Раздел 7. Циклические вычислительные процессы.
Постановка задачи:
Найти значение данной функции. используя метод циклического вычисления и рекуррентную формулу:
Решение задачи:
В начале производится ввод аргумента Х и числа операций N, после чего производится циклическое вычисление и вывод результата.
Текст программы:
program main
implicit none
real x, res, f1
integer n
print*, "Input n: "
read*, n
print*, "Input x: "
read*, x
call sum1(f1, n, x)
res=0.5*x+f1
print*, "y= ", res
end
subroutine sum1 ( f1, n, x )
implicit none
real f1, x, fact, lim, i
integer k, n
f1=0
fact=1
do k=1, n
lim=2*k-1
do i=1, lim
fact=fact*i
enddo
f1=f1+(x**(2*k-2)/fact)
enddo
end
Заключение
Пройдя курс «Практикум по ВТ», полученные новые знания и навыки по работе в различных пакетах программ,таких как:Microsoft Office, Fortran, Microsoft Excel , MathCAD можно применять в различных дисциплиинах.Особое место в учебной программе занимает Fortran, это не случайно.Большая часть заданий по Fortran посвящена изучению новых операторов и процедур. Microsoft Office и Microsoft Excel представлены в малом количестве заданий, так как эти пакеты практически не вызывают трудностей у студентов. MathCAD сложная математическая программа, которая требуется для выполнения различных операций.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.