Форум программистов, компьютерный форум, киберфорум
Наши страницы
Fortran
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Master2106
1 / 1 / 0
Регистрация: 08.05.2011
Сообщений: 11
#1

Сложение транспонированных матриц - Fortran

09.05.2011, 20:33. Просмотров 1271. Ответов 2
Метки нет (Все метки)

помогите что не так
http://www.cyberforum.ru/cpp-beginners/thread1097658.html
Заданы две вещественные матрицы А и В размера M*N Найти матрицу С равную сложением транспонированных матриц А и В С=А^T+B^T
Fortran
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
program zadanie3
implicit none
integer size, i, j
real, allocatable:: arr1(:,:)
real, allocatable:: arr2(:,:)
real, allocatable:: arr3(:,:)
real, allocatable:: arr4(:,:)
real, allocatable:: arr5(:,:)
print *, "Input dimension"
read *, size
if (size <= 0) then
print*, "Wrong dimension"
stop
endif
allocate (arr1(size,size))
allocate (arr2(size,size))
allocate (arr3(size,size))
allocate (arr4(size,size))
allocate (arr5(size,size))
call FillArr(arr1,size)
call TransMar(arr1,arr2)
call SummMat(arr2,arr1,arr3)
print *, "Matrica A"
call ShowArr(arr1, size)
print *, "Trans Matrica A^T"
call ShowArr(arr2, size)
print *, "Matrica B"
call ShowArr(arr3, size)
print *, "Trans Matrica B^T"
call ShowArr(arr4, size)
print *, "Matrica-proizvedenie C"
call ShowArr(arr5, size)
end
 
!Заполнение матриц 
subroutine FillArr(arr1,size)
    implicit none 
    integer size, i, j
    integer arr(size,size)
    do i=1, size
       do j=1, size
         print *, "Vvedite element ",i,"stroki",j,"stolbcs"
         read *, arr(i,j)
       end do
    end do
end    
 
 
!Вычисление Матрицы-сложения C
subroutine SummMat(arr2,arr1,arr3)
    implicit none 
    integer size, i, j
    integer arr(size,size),arr1(size,size),arr3(size,size)
    do i=1,size
       do j=1,size
       arr3(i,j)=arr(i,j)+ arr1(i,j)
       end do
    end do  
end       
 
!Заполнение матриц
subroutine TransMar(arr1,arr2)
    implicit none 
    integer size, i, j
    integer arr(size,size), arr1(size, size)
    do i=1,size
       do j=1,size
          arr1(j,i)=arr(i,j)
       end do
   end do       
end
 
!Вывод матрицы на экран
subroutine ShowArr(arr, size)
    implicit none
    integer size, i, j
    real arr(size, size)
    do i=1, size
       write (*,*)(arr(i,j), j=1, size)
    enddo
end
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.05.2011, 20:33
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Сложение транспонированных матриц (Fortran):

Перемножение транспонированных матриц
Заданы две матрицы B(4,4) и D(3,3). Написать программу транспонирования каждой...

Получить сумму транспонированных матриц
1)Заданы матрицы A, B, C. Упорядочить по убыванию три числа X, Y, Z, где X –...

Перемножение транспонированных матриц (исправить ошибку)
Заданы две матрицы B(4,4) и D(3,3). Написать программу транспонирования каждой...

Перемножение матриц, умножение матриц на вектор, сложение матриц
Помогите пожалуйста написать программу, которая производит основные действия с...

Транспонирование, умножение матриц, сложение матриц Реализовать в одной программере
транспонирование, умножение матриц, сложение матриц; B^3-A^T Реализовать в...

2
Smiles_people
0 / 0 / 0
Регистрация: 08.05.2011
Сообщений: 1
12.05.2011, 10:14 #2
Ты точно на фортране писал? xD
Это ошибки, которые видны невооруженным компилятором глазом)
1. programm пишется с двумя m
2. =< на фортране обозначается .le.
3.Если объявляешь массивы как real, так в подпрогах не объявляй их как integer xD
4. у тебя в подпроги передается одно имя, а инициализируешь и используешь другое))
(пример) :
-----------------------------| двоечка ( arr2)
-----------------------------V
subroutine SummMat(arr2,arr1,arr3)
implicit none
integer size, i, j
integer arr(size,size),arr1(size,size),arr3(size,size)
-----------^
-----------| нету двоечки (arr )

5. текст вставляется в ' (одинарная кавычка)
6. Претендент на третье место : А кто будет размерность(size) передавать в другие подпроги, кроме FillArr ? xD
7. Претедент на второе место: транспонировал одну матрицу, а вторую нафиг не надо? xDD
А одну заполнил матрицу. а вторую нет ?)
8. И т.д. и т.п.
9. Вот, что у меня получилось:
Fortran
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
        programm zadanie3
        integer size
        dimension arr1(100000)
        dimension arr2(100000)
        dimension arr3(100000)
        dimension arr4(100000)
        dimension arr5(100000)
        print *, 'Input dimension'
        read *, size
        if (size.LE.0) then
        print*, 'Wrong dimension'
        stop
        endif
        print *, 'elements Matrica A'
        call FillArr(arr1,size)
        print *, 'elements Matrica B'
        call FillArr(arr3,size)
        call TransMar(arr1,arr2,size)
        call TransMar(arr3,arr4,size)
        call SummMat(arr2,arr4,arr5,size)
        print *, 'Matrica A'
        call ShowArr(arr1, size)
        print *, 'Trans Matrica A^T'
        call ShowArr(arr2, size)
        print *, 'Matrica B'
        call ShowArr(arr3, size)
        print *, 'Trans Matrica B^T'
        call ShowArr(arr4, size)
        !print *, 'Matrica-proizvedenie C'  !не стал убирать xD
        print *, 'Matrica-slogenie C'
        call ShowArr(arr5, size)
        read *
        end
 
        !Заполнение матриц 
        subroutine FillArr(arr1,size)
        integer size
        dimension arr1(size,size)
        do i=1, size
        do j=1, size
        print *, 'Vvedite element ',i,'stroki',j,'stolbcs'
        read *, arr1(i,j)
        end do
        end do
        end
 
        !Вычисление Матрицы-сложения C
        subroutine SummMat(arr2,arr1,arr3,size)
        integer size
        dimension arr2(size,size),arr1(size,size),arr3(size,size)
        do i=1,size
        do j=1,size
        arr3(i,j)=arr2(i,j)+ arr1(i,j)
        end do
        end do
        end
 
        !Заполнение матриц 
        subroutine TransMar(arr1,arr2,size)
        integer size
        dimension arr2(size,size), arr1(size, size)
        do i=1,size
        do j=1,size
        arr2(i,j)=arr1(j,i)
        end do
        end do
        end
 
        !Вывод матрицы на экран
        subroutine ShowArr(arr, size)
        integer size
        dimension arr(size, size)
        do i=1, size
        write (*,*)(arr(i,j), j=1, size)
        enddo
        end
p.s. Претендент на первое место: Задание, сложить две транспонированных матрицы, так почему:
print *, "Matrica-proizvedenie C" ? xDDD

p.s.s. Извини за стеб ))
0
Master2106
1 / 1 / 0
Регистрация: 08.05.2011
Сообщений: 11
13.05.2011, 18:56  [ТС] #3
Спасибо будем исправлять...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2011, 18:56
Привет! Вот еще темы с решениями:

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

Сложение Матриц
Здравствуйте! Пытаюсь написать программу, которая складывает 2 матрицы, компиль...

Сложение матриц
Разработать программу сложения матриц (максимальная размерность 10). Элементы...

Сложение матриц
Есть такое задание. Даны массивы А(м) и В(м), м=&lt;12. Сформировать массив С...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru