Показать полную графическую версию : [решено] Нахождение обратной матрицы методом Гаусса и рассширенной матрицы
Не-е дружище у меня расширение этого файла main_matr_gause.h
а .сср это вообще не из языка С++ (может .срр)?Создавался как Header File (.h) Давай я тебе выложу архивчик с файлами а ты уже сам посмотриш(только куда его выложить?)
D.Y., а .сср это вообще не из языка С++ (может .срр) »Всё правильно :) это я малость тормознул, конечно же .cpp.Давай я тебе выложу архивчик с файлами а ты уже сам посмотриш »Давай, а тут сбоку есть панель Прикрепить файл - щёлкай по ней, а дальше раберёшься, если не поймёшь, выложи через файлообменник какой?
http://forum.oszone.net/attachment.php?attachmentid=13561&stc=1&d=1216408949
Matr_Gause 1.1.zip
D.Y., Браво! :up Отличная программа, и главное компилится и работает! Вот это ты молоток! :yes:
Я просто забросил ту книгу(мне старшекурсники говорили что там вообще ничего не компилится) и взял пару других проконсультировался с преподом и написал (не с первого раза пару раз клава страдала от этого) но всетаки чтото получилось и курсач сдан!
D.Y., но всетаки чтото получилось и курсач сдан! »Ну, не скромничайте, это "что-то", весьма хорошая программа с интерфейсом. Так что, забегайте к нам на форум. :)
Ок только отдохну от учебы!!!
Приветствую всех ;)
Хочу поблагодарить участников форума за проделанную работу, так как пол дня потратил в поисках нормального рабочего кода для вычисления обратной матрицы, и смог найти его только здесь.
Сам не хотел его писать, т.к. лень было разбираться в теории расчета, и потом еще свой алгоритм для этого писать, задача то давно известная и зачем дважды изобретать велосипед.
У меня только один вопрос, выложенные выше исходники (точней готовый проект) для какого компилятора? Я работаю на Visual C++ 6.0, ну к нему он явно не подходит.
Так что пришлось их переделывать для своей программы. В итоге написал класс для работы с матрицами. Чуть позже выложу исходники ДОСовской программы с этим классом, хочу сначала немного интерфейс доработать.
Программа поддерживает следующие операции над матрицами: сложение, вычитание, умножение, транспонирование и обращение.
Ниже прикреплен архив с готовой программой (MATRIX.exe) и ее исходниками.
Описание:
Программа для выполнения различных операций с матрицами.
Возможности:
Сложение, вычитание, умножение, транспонирование, обращение матриц размера N*M.
Реализация:
Программа консольная, написана на MS Visual C++ 6.0.
Исходный код реализован на основе ООП, на классе matrix (его скачал с какого-то сайта).
В код были внесены небольшие изменения, добавлены 2 функции (транспонирование и обращение).
[P.S.]
Если у кого-нибудь будет желание дополнить или модифицировать этот код, можете это делать. Только желательно выложить здесь результат своей работы.
Luzuk, У меня только один вопрос, выложенные выше исходники (точней готовый проект) для какого компилятора? »У меня такое (http://www.forum.oszone.net/post-832281.html#post832281) и всё работает. Загляните в тему Помогите решить (http://www.forum.oszone.net/post-673722.html#post673722) начните с сообщения №6, скорее всего, что это не совсем то, что надо, но тоже тема с матрицами и векторами.
Программа поддерживает следующие операции над матрицами: сложение, вычитание, умножение, транспонирование и обращение. »У меня программа отработала до возможности выбора действий, сложение, ..., ..., ..., обращение и закрывается... :dont-know А так конечно работы проделано много и программа нужная. :up
Моя программа писалась для Borland C++ Builder 6 а под вижуал я думаю вполне реально переделать там основное отличие в библиотеках.
У меня программа отработала до возможности выбора действий, сложение, ..., ..., ..., обращение и закрывается...
Хм... у меня все работает... Единственное, что нет обработки введенных символов, если ввести букву вместо цифры программа "накроется". Просто не было время ее так отшлифовывать, задача была, сделать программу для 5ти операция с матрицами, обработку ошибок делать было не обязательно. К тому же ее уже сегодня нужно сдавать, так что время было мало.
Ну, думаю я в ближайшее время смогу ее довести до ума и убрать все "косяки" ;)
А чтобы было понятно, как с программой работать ниже привожу листинг с примером ее работы.
----[Matrix A(N,M)]----
Enter size //вводим размер матрицы А//
N> 3
M> 3
Enter matrix elements: //вводим элементы матрицы А (вводить можно через пробел или enter)//
1 2 3
6 5 4
8 7 9
Matrix> 1 2 3 //получившаяся матрица А//
6 5 4
8 7 9
-----------------------
//дальше аналогично, но для матрицы В//
----[Matrix B(N,M)]----
Enter size
N> 3
M> 1
Enter operant elements:
1 5 8
Matrix> 1
5
8
-----------------------
//Теперь необходимо выбрать что мы с этими матрицами будем делать//
################################
# Chouce operation:
# 1. A+B //если ввести 1 - сложение А и В//
# 2. A-B //если ввести 2 - вычитание В из А//
# 3. A*B //если ввести 3 - умножение А на В//
# 4. Transponent A //если ввести 4 - транспонирование матрицы А//
# 5. Invert A //если ввести 5 - обращение матрицы А//
# 9. EXIT //если ввести 9 - программа зароиться//
# >3 //здесь нужно указать номер нужно вам действия, я выбрал умножение//
Matrix> 35 //А это результат умножения//
63
115
Luzuk, # >3 //здесь нужно указать номер нужно вам действия, я выбрал умножение//Вот-вот, ввожу число из меню выбора, от 1 до 5, жму Enter и программа закрывается.
Вот-вот, ввожу число из меню выбора, от 1 до 5, жму Enter и программа закрывается. »
А какие данные ты вводил, и что с матрицами делал? Просто есть один нюанс (не доработал я этот момент), в случаи ошибки какого-либо действия, допустим, если сложить две матрицы разного размера, что в принципе невозможно, обработчик ошибок сразу при этом выдает сообщение об ошибочном действии (Addition isn't possible), после чего программа закрывается.
Попробуй запустить программу в командной строке (cmd), чтобы было видно, что она выводит перед закрытием.
В исходниках, в файле matrix.h можно глянуть список всех ошибок, которые программа обрабатывает.
Еще возможно глюк из-за разных ОС (что вряд ли), у меня в Win XP(2SP) все нормально работает.
Попробуй создать матрицу А и В размером 1*1, с ними по идеи должны выполняться все действия.
Luzuk, две матрицы разного размера » и Попробуй создать матрицу А и В размером 1*1, с ними по идеи должны выполняться все действия »Вот теперь тебя люблю я, вот теперь тебя хвалю я. :up Правильно, всё правильно, работает.
http://smages.com/t/60/18/60185c1cd83bc903261e5f1da664e277.jpg (http://smages.com/60/18/60185c1cd83bc903261e5f1da664e277.jpg.htm)
Нужно бы добавить проверку размера второй матрицы. И добавить счётчик номера вводимого элемента матрицы, а то неудобно, неизвестно какой номер ты вводишь. И перед выполняемым действием, было бы лучше выводить название самого действия - Умножение, или Сложение, так проще будет ориентироваться. :yes:
Попробуй запустить программу в командной строке (cmd), чтобы было видно, что она выводит перед закрытием. »Вот этого я или не знаю, или не понял, склоняюсь больше к тому, что не знаю, как её так запустить? :dont-know Поделишься знаниями? Объяснишь?
Drongo, а я думаю что всё же больше не понимания :wink:
Пуск => Выполнить => cmd указываем путь к откомпилированному файлу.
В программе, которая на скрине, слово Chouce по английски правильно пишется как Choose, но сюда больше подходит Select.
Ооо, точно Admiral, проверил таким способом, да, если размеры матрицы неправильные, всё правильно, ошибка вылетает. Спасибо за разъяснения. :up
Вопрос как бы уже решён, Luzuk, но если интерес есть, то вот такая ошибка была. Но повторю, размеры матрицы я вводил разные. А в целом всё класс - :up
################################
# Chouce operation:
# 1. A+B
# 2. A-B
# 3. A*B
# 4. Transponent A
# 5. Invert A
# 9. EXIT
# >3
ERROR! >>> Multiplication isn't possible
В программе, которая на скрине, слово Chouce по английски правильно пишется как Choose, но сюда больше подходит Select. »
Ясно, учтем ;) Спасибо за подсказку, поправим.
Drongo, Вот и хорошо. Я так сразу и подумал, что в этом ошибка.
Сейчас думаю тоже самое сделать, только с нормальным интерфейсом. Если за основу возьму то что D.Y. сделал:
http://forum.oszone.net/attachment.p...1&d=1216408949
Matr_Gause 1.1.zip »
Думаю ни кто против не будет?
Правда из Билдера в Визуал не разу ничего не переделывал, да и вообще графические оболочки только на Win API могу писать, и то на среднем уровне. Посоветуйте, кто знает, с чего лучше начать в этой задачи? Или проще на Билдере ее и продолжить писать и не мучиться с переделкой на Визуал С?
Luzuk, если со средой Билдера не возникает проблем то лучше проект продолжать писать там же.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.