Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 20.01.2013, 22:37   #1 (permalink)
frad
Новичок
 
Регистрация: 20.01.2013
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Exclamation Определитель матрицы, Fortran

Помогите пожалуйста. Нужен код на фортране для нахождения определителя матрицы любого размера (чтение из текстового файла) по формуле Лапласа.
Спасибо!
frad вне форума   Ответить с цитированием

Старый 20.01.2013, 22:37
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Вам не помешает прочесть схожие по содержанию темы

Матрицы С++
Пожалуйста, помогите решить простую задачу по информатике в FORTRAN про массив
Не работает Сompaq visual fortran 6.6 на windows 7 х32

Старый 20.01.2013, 22:51   #2 (permalink)
Gruvi
VIP user
 
Аватар для Gruvi
 
Регистрация: 10.03.2011
Сообщений: 766
Записей в дневнике: 1
Сказал(а) спасибо: 11
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3453
По умолчанию

Вот тебе программа. (и прикрепил тебе фаил еще)

Цитата:
REAL FUNCTION FindDet(matrix, n)
IMPLICIT NONE
REAL, DIMENSION(n,n) :: matrix
INTEGER, INTENT(IN) :: n
REAL :: m, temp
INTEGER :: i, j, k, l
LOGICAL :: DetExists = .TRUE.
l = 1
!Convert to upper triangular form
DO k = 1, n-1
IF (matrix(k,k) == 0) THEN
DetExists = .FALSE.
DO i = k+1, n
IF (matrix(i,k) /= 0) THEN
DO j = 1, n
temp = matrix(i,j)
matrix(i,j)= matrix(k,j)
matrix(k,j) = temp
END DO
DetExists = .TRUE.
l=-l
EXIT
ENDIF
END DO
IF (DetExists .EQV. .FALSE.) THEN
FindDet = 0
return
END IF
ENDIF
DO j = k+1, n
m = matrix(j,k)/matrix(k,k)
DO i = k+1, n
matrix(j,i) = matrix(j,i) - m*matrix(k,i)
END DO
END DO
END DO

!Calculate determinant by finding product of diagonal elements
FindDet = l
DO i = 1, n
FindDet = FindDet * matrix(i,i)
END DO

END FUNCTION FindDet
Цитата:
Это подпрограмма-функция, которая на входе получает квадратную матицу размерности n и считает ее дискриминант.
Вложения
Тип файла: zip determinantfortran.zip (835 байт, 69 просмотров)
Gruvi вне форума   Ответить с цитированием
Старый 20.01.2013, 23:06   #3 (permalink)
frad
Новичок
 
Регистрация: 20.01.2013
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо, но это не то! Мне нужно по формуле (разложению) Лапласа (в этом то вся соль), а это методом Гаусса.
frad вне форума   Ответить с цитированием
Старый 20.01.2013, 23:53   #4 (permalink)
Gruvi
VIP user
 
Аватар для Gruvi
 
Регистрация: 10.03.2011
Сообщений: 766
Записей в дневнике: 1
Сказал(а) спасибо: 11
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3453
По умолчанию

Вот тебе Теорема Лапласа =) смотри и учись. А по факту это - работа с двумерным массивом.
Gruvi вне форума   Ответить с цитированием
Старый 21.01.2013, 09:44   #5 (permalink)
frad
Новичок
 
Регистрация: 20.01.2013
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо конечно, но эту теорему я знаю еще с 1 курса, а вот как ее осуществить - может какой блок-схемой, хотя бы поможете (
frad вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 05:03.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.