Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Контрольная работа по "Программированию"

Автор:   •  Ноябрь 18, 2023  •  Контрольная работа  •  8,805 Слов (36 Страниц)  •  113 Просмотры

Страница 1 из 36

Постановка задачи 

[pic 1]

Текст программы на Фортране 2008 для транслятора gfortran

program lab4

  implicit none

  real, allocatable :: C (:,:), CT (:,:), D (:)

  integer :: i, j, n, iter

  integer, allocatable :: NVAL (:)

  real :: delta

  integer :: ndim

  integer, allocatable :: IPVT (:)

  real, allocatable :: A (:,:), WORK (:), X1 (:), X2 (:)

  real :: cond1, cond2

  NVAL = [4, 6, 8, 10, 12]

  do iter = 1, size(NVAL)

    n = NVAL(iter)

    ndim = n

    print '(/"*** N = ",I0," ***")', n

    C = reshape ([((1./(i+j-1), i=1,n), j=1,n)], [n,n])

    CT = transpose (C)

    D = sum (C, dim=2)

    allocate (WORK(n), IPVT(n))  

    A = C

    X1 = D

    call print_mat ("исходное C        ", A)

    call print_vec ("исходное D        ", X1)

    call decomp (ndim, n, A, cond1, IPVT, WORK)

    call solve (ndim, n, A, X1, IPVT)    

    A = matmul(CT,C)

    X2 = matmul(CT,D)

    call print_mat ("симметризованное C", A)

    call print_vec ("симметризованное D", X2)

    call decomp (ndim, n, A, cond2, IPVT, WORK)

    call solve (ndim, n, A, X2, IPVT)

    call print_vec ("X1", X1)

    call print_vec ("X2", X2)

    delta = sum(abs(X1-X2))/sum(abs(X1))

    print '("COND1=",E13.6," COND2=",E13.6,", DELTA=",E13.6)', &

          cond1, cond2, delta

    if (cond1+1. == cond1) print '("Вырождение исходной СЛАУ.")'

    if (cond2+1. == cond2) print '("Вырождение симметризованной СЛАУ.")'

 

    deallocate (WORK, IPVT)

  end do

contains

subroutine print_vec (name, v)

  real :: v (:)

  character (*) :: name

  print '("Вектор  ",A,": "*(F10.6,1X))', name, v

end subroutine print_vec

subroutine print_mat (name, m)

  real :: m (:,:)

  integer :: i

  character (*) :: name

  print '("Матрица ",A,": ")', name

  do i=lbound(m,1),ubound(m,1)

    print '(*(F10.6,1X))', m(i,:)

  end do

end subroutine print_mat

end program lab4


Результат работы программы с параметрами компиляции по умолчанию (одинарная точность)

*** N = 4 ***

Матрица исходное C        :

  1.000000   0.500000   0.333333   0.250000

  0.500000   0.333333   0.250000   0.200000

  0.333333   0.250000   0.200000   0.166667

  0.250000   0.200000   0.166667   0.142857

Вектор  исходное D        :   2.083333   1.283333   0.950000   0.759524

Матрица симметризованное C:

  1.423611   0.800000   0.566667   0.441270

  0.800000   0.463611   0.333333   0.261905

  0.566667   0.333333   0.241389   0.190476

  0.441270   0.261905   0.190476   0.150686

Вектор  симметризованное D:   3.231548   1.858849   1.331865   1.044337

Вектор  X1:   1.000005   0.999936   1.000163   0.999891

Вектор  X2:   0.942675   1.644610  -0.550853   2.007859

COND1= 0.215232E+05 COND2= 0.176472E+09, DELTA= 0.815248E+00

Вырождение симметризованной СЛАУ.

*** N = 6 ***

Матрица исходное C        :

  1.000000   0.500000   0.333333   0.250000   0.200000   0.166667

  0.500000   0.333333   0.250000   0.200000   0.166667   0.142857

  0.333333   0.250000   0.200000   0.166667   0.142857   0.125000

  0.250000   0.200000   0.166667   0.142857   0.125000   0.111111

  0.200000   0.166667   0.142857   0.125000   0.111111   0.100000

  0.166667   0.142857   0.125000   0.111111   0.100000   0.090909

Вектор  исходное D        :   2.450000   1.592857   1.217857   0.995635   0.845635   0.736544

Матрица симметризованное C:

  1.491389   0.857143   0.616071   0.484788   0.401091   0.342691

  0.857143   0.511797   0.375000   0.298611   0.249074   0.214078

  0.616071   0.375000   0.277422   0.222222   0.186111   0.160438

  0.484788   0.298611   0.222222   0.178657   0.150000   0.129545

  0.401091   0.249074   0.186111   0.150000   0.126157   0.109091

  0.342691   0.214078   0.160438   0.129545   0.109091   0.094421

Вектор  симметризованное D:   4.193175   2.505704   1.837265   1.463824   1.221524   1.050265

Вектор  X1:   1.000400   0.989180   1.070632   0.820951   1.193821   0.924784

Вектор  X2:   0.950112   1.876060  -2.824760   7.451787  -3.456433   1.990706

COND1= 0.222399E+08 COND2= 0.222685E+10, DELTA= 0.286337E+01

Вырождение симметризованной СЛАУ.

*** N = 8 ***

Матрица исходное C        :

  1.000000   0.500000   0.333333   0.250000   0.200000   0.166667   0.142857   0.125000

  0.500000   0.333333   0.250000   0.200000   0.166667   0.142857   0.125000   0.111111

  0.333333   0.250000   0.200000   0.166667   0.142857   0.125000   0.111111   0.100000

  0.250000   0.200000   0.166667   0.142857   0.125000   0.111111   0.100000   0.090909

...

Скачать:   txt (38.4 Kb)   pdf (152.1 Kb)   docx (44.8 Kb)  
Продолжить читать еще 35 страниц(ы) »
Доступно только на Essays.club