• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте, чтобы узнать больше. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Определитель матрицы, Fortran

  • Автор темы Автор темы frad
  • Дата начала Дата начала

frad

Ученик
Регистрация
20 Янв 2013
Сообщения
3
Реакции
0
Баллы
0
Определитель матрицы, Fortran

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

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 и считает ее дискриминант.
 

Вложения

Спасибо, но это не то! Мне нужно по формуле (разложению) Лапласа (в этом то вся соль), а это методом Гаусса.
 
Вот тебе Теорема Лапласа =) смотри и учись. А по факту это - работа с двумерным массивом.
 
Спасибо конечно, но эту теорему я знаю еще с 1 курса, а вот как ее осуществить - может какой блок-схемой, хотя бы поможете (
 
Назад
Сверху