[FORTRAN] метод Гаусса

onyxis

Помогите, пожалуйста, найти нормальный стабильно работающий метод Гаусса на фортране. Самому мне его написать достаточно тяжело - язык начал изучать только недавно, раньше писал на C. Гугл нашел мне несколько вариантов, но они либо некорректно работают (делят на ноль либо изменяют входную матрицу.
В идеале хотелось бы видеть подпрограмму вида subrouitene gauss(A,b,x,n которая не меняет параметры A,b,n и результат возвращает в x. Какой именно метод Гаусса мне нужен (т.е. с выбором опорного элемета по столбцуб или по всей матрице или вообще без выбора такого) - неважно, так как используются невырожденные матрицы невысокого ранга (n<36). Также подойдет любой код, позволяющий стабильно решать СЛАУ общего вида с невырожденной матрицей, например, по формулам Крамера.
Если кто-нибудь видел подобный код, пожалуйста, скажите, где его можно взять.

Helga87

а зачем тебе метод гаусса? QR уже не рулит что ли?

onyxis

мне подойдет любой стабильно работающий код, решающий СЛАУ общего вида с невырожденной матрицей.
А что такое QR?

Helga87

QR Decomposition
А ответ на твой вопрос — LAPACK fortran

onyxis

Спасибо.
А есть ли что-нибудь попроще? Там оно как-то сложно устанавливается, a если скачать текст нужной мне процедуры, то там внутри есть еще ссылки на другие процедуры...

Helga87

Тебе чего вообще надо? Может, тебе вообще хватит в Матлабе написать скрипт на три строчки?

onyxis

Вообще хотелось бы код вида
[code]
subrtoutine gauss(A,b,x,n)
...
end subroutine gauss
[\code]
Но если не найду, придется писать самому или LAPACK устанавливать.

Serab

Тебе надо решение СЛАУ и метод Гаусса? Или метод Гаусса нужен только чтобы решать СЛАУ?

Helga87

Переформулирую: какую проблему ты решаешь, в рамках которой возник этот вопрос?

onyxis

точное решение задачи об упругом изгибе слоистой пластинки.
Подойдет любой метод, не только Гаусса, решающий СЛАУ общего вида небольшой (n<36) размерности.

Helga87

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

onyxis

Спасибо, конечно, но нужно на фортране.

Helga87

Так-так, а почему?
Я так спрашиваю не просто из любопытства, а чтобы сократить тебе количество проблем.
Пока что складывается впечатление, что тебе задали какое-то задание в университете, тебе надо сдать и забыть. И требование Фортрана пришло оттуда же.

dimi61

Понятия не имею, как это делается на фортране, но есть замечательная книга Numerical recipes in C. Ну так вот, ее клон для фортрана тоже существует.

tamusyav

либо изменяют входную матрицу
используются невырожденные матрицы невысокого ранга (n<36)
И чего в этом такого страшного? Нужна исходная матрица - сделай дубликат.
А есть ли что-нибудь попроще? Там оно как-то сложно устанавливается, a если скачать текст нужной мне процедуры, то там внутри есть еще ссылки на другие процедуры...
Куда уж проще, ссылки типа dgesv.f plus dependencies для кого сделаны?
Для данной задачи проще, пожалуй, только мат. пакеты (Matlab и т. п. но этот вариант тебя не устраивает.

onyxis

скачивается бинарный файл такого типа:

И что с ним дальше делать, я не знаю.
P.S. Всем спасибо. Постараюсь все-таки сам написать, времени на поиск уже потратил больше, чем ушло бы на написание.

Bird_V

Волшебные буковки PK в начале файла как-бы намекают, что это zip-архив.

tamusyav

Волшебные буковки PK в начале файла как-бы намекают, что это zip-архив.
Еще более прозрачный намек на это есть на странице, которая открывается по приведенной мной ссылке.

spensnp

например, по формулам Крамера.
оффтоп, но все же:
самое смешное, что численные алгоритмы нахождения определителя как раз приводят матрицы к треугольному виду, а затем находят произведение диагональных элементов, а вовсе не вычисляют его рекурсивно, как можно было бы подумать, т.к. это оказывается дольше. так что формула крамера в численных методах не актуальна.
По делу:
коли ты занялся программированием на фортране, мой тебе совет - переходи на *nix, ибо научный фортрановский софт чуть менее чем полностью написан под *nix и средства его сборки *nix-специфичны. Во всяком случае с установкой lapack проблем не будет.
ЗЫ А почему в самом деле фортран?

Ivan8209

> Волшебные буковки PK в начале файла как-бы намекают, что это zip-архив.
Волшебные буковки "man file" как бы намекают, что это знание лишнее.
---
"Не изобретай велосипеды, их уже изобрели за тебя."
Leo

caffeine

Гугл нашел мне несколько вариантов, но они либо некорректно работают (делят на ноль либо изменяют входную матрицу.
А как еще? либо он строки переставляет и делает выборку по максимальным элементам, либо на ноль иногда делит:)
Коль ты на С пишешь, как вариант - напиши Гаусса на С и вызови в фортране...
Еще есть куча других алгоритмов, например, QR или отражения...
Оставить комментарий
Имя или ник:
Комментарий: