Войти

Показать полную графическую версию : [решено] Нахождение обратной матрицы методом Гаусса и рассширенной матрицы


Страниц : 1 2 [3] 4

D.Y.
18-07-2008, 21:31
Не-е дружище у меня расширение этого файла main_matr_gause.h
а .сср это вообще не из языка С++ (может .срр)?Создавался как Header File (.h) Давай я тебе выложу архивчик с файлами а ты уже сам посмотриш(только куда его выложить?)

Drongo
18-07-2008, 22:35
D.Y., а .сср это вообще не из языка С++ (может .срр) »Всё правильно :) это я малость тормознул, конечно же .cpp.Давай я тебе выложу архивчик с файлами а ты уже сам посмотриш »Давай, а тут сбоку есть панель Прикрепить файл - щёлкай по ней, а дальше раберёшься, если не поймёшь, выложи через файлообменник какой?

D.Y.
18-07-2008, 23:24
вот

D.Y.
18-07-2008, 23:24
http://forum.oszone.net/attachment.php?attachmentid=13561&stc=1&d=1216408949
Matr_Gause 1.1.zip

Drongo
19-07-2008, 00:08
D.Y., Браво! :up Отличная программа, и главное компилится и работает! Вот это ты молоток! :yes:

D.Y.
19-07-2008, 00:39
Я просто забросил ту книгу(мне старшекурсники говорили что там вообще ничего не компилится) и взял пару других проконсультировался с преподом и написал (не с первого раза пару раз клава страдала от этого) но всетаки чтото получилось и курсач сдан!

Drongo
19-07-2008, 01:09
D.Y., но всетаки чтото получилось и курсач сдан! »Ну, не скромничайте, это "что-то", весьма хорошая программа с интерфейсом. Так что, забегайте к нам на форум. :)

D.Y.
19-07-2008, 01:40
Ок только отдохну от учебы!!!

Luzuk
18-09-2008, 04:07
Приветствую всех ;)
Хочу поблагодарить участников форума за проделанную работу, так как пол дня потратил в поисках нормального рабочего кода для вычисления обратной матрицы, и смог найти его только здесь.
Сам не хотел его писать, т.к. лень было разбираться в теории расчета, и потом еще свой алгоритм для этого писать, задача то давно известная и зачем дважды изобретать велосипед.

У меня только один вопрос, выложенные выше исходники (точней готовый проект) для какого компилятора? Я работаю на Visual C++ 6.0, ну к нему он явно не подходит.

Так что пришлось их переделывать для своей программы. В итоге написал класс для работы с матрицами. Чуть позже выложу исходники ДОСовской программы с этим классом, хочу сначала немного интерфейс доработать.

Программа поддерживает следующие операции над матрицами: сложение, вычитание, умножение, транспонирование и обращение.

Luzuk
18-09-2008, 08:54
Ниже прикреплен архив с готовой программой (MATRIX.exe) и ее исходниками.

Описание:
Программа для выполнения различных операций с матрицами.
Возможности:
Сложение, вычитание, умножение, транспонирование, обращение матриц размера N*M.
Реализация:
Программа консольная, написана на MS Visual C++ 6.0.
Исходный код реализован на основе ООП, на классе matrix (его скачал с какого-то сайта).
В код были внесены небольшие изменения, добавлены 2 функции (транспонирование и обращение).

[P.S.]
Если у кого-нибудь будет желание дополнить или модифицировать этот код, можете это делать. Только желательно выложить здесь результат своей работы.

Drongo
18-09-2008, 16:30
Luzuk, У меня только один вопрос, выложенные выше исходники (точней готовый проект) для какого компилятора? »У меня такое (http://www.forum.oszone.net/post-832281.html#post832281) и всё работает. Загляните в тему Помогите решить (http://www.forum.oszone.net/post-673722.html#post673722) начните с сообщения №6, скорее всего, что это не совсем то, что надо, но тоже тема с матрицами и векторами.
Программа поддерживает следующие операции над матрицами: сложение, вычитание, умножение, транспонирование и обращение. »У меня программа отработала до возможности выбора действий, сложение, ..., ..., ..., обращение и закрывается... :dont-know А так конечно работы проделано много и программа нужная. :up

D.Y.
18-09-2008, 20:51
Моя программа писалась для Borland C++ Builder 6 а под вижуал я думаю вполне реально переделать там основное отличие в библиотеках.

Luzuk
19-09-2008, 06:18
У меня программа отработала до возможности выбора действий, сложение, ..., ..., ..., обращение и закрывается...

Хм... у меня все работает... Единственное, что нет обработки введенных символов, если ввести букву вместо цифры программа "накроется". Просто не было время ее так отшлифовывать, задача была, сделать программу для 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

Drongo
19-09-2008, 13:56
Luzuk, # >3 //здесь нужно указать номер нужно вам действия, я выбрал умножение//Вот-вот, ввожу число из меню выбора, от 1 до 5, жму Enter и программа закрывается.

Luzuk
20-09-2008, 06:25
Вот-вот, ввожу число из меню выбора, от 1 до 5, жму Enter и программа закрывается. »

А какие данные ты вводил, и что с матрицами делал? Просто есть один нюанс (не доработал я этот момент), в случаи ошибки какого-либо действия, допустим, если сложить две матрицы разного размера, что в принципе невозможно, обработчик ошибок сразу при этом выдает сообщение об ошибочном действии (Addition isn't possible), после чего программа закрывается.

Попробуй запустить программу в командной строке (cmd), чтобы было видно, что она выводит перед закрытием.
В исходниках, в файле matrix.h можно глянуть список всех ошибок, которые программа обрабатывает.


Еще возможно глюк из-за разных ОС (что вряд ли), у меня в Win XP(2SP) все нормально работает.
Попробуй создать матрицу А и В размером 1*1, с ними по идеи должны выполняться все действия.

Drongo
20-09-2008, 15:03
Luzuk, две матрицы разного размера » и Попробуй создать матрицу А и В размером 1*1, с ними по идеи должны выполняться все действия »Вот теперь тебя люблю я, вот теперь тебя хвалю я. :up Правильно, всё правильно, работает.
http://smages.com/t/60/18/60185c1cd83bc903261e5f1da664e277.jpg (http://smages.com/60/18/60185c1cd83bc903261e5f1da664e277.jpg.htm)
Нужно бы добавить проверку размера второй матрицы. И добавить счётчик номера вводимого элемента матрицы, а то неудобно, неизвестно какой номер ты вводишь. И перед выполняемым действием, было бы лучше выводить название самого действия - Умножение, или Сложение, так проще будет ориентироваться. :yes:
Попробуй запустить программу в командной строке (cmd), чтобы было видно, что она выводит перед закрытием. »Вот этого я или не знаю, или не понял, склоняюсь больше к тому, что не знаю, как её так запустить? :dont-know Поделишься знаниями? Объяснишь?

Admiral
20-09-2008, 18:18
Drongo, а я думаю что всё же больше не понимания :wink:
Пуск => Выполнить => cmd указываем путь к откомпилированному файлу.

В программе, которая на скрине, слово Chouce по английски правильно пишется как Choose, но сюда больше подходит Select.

Drongo
20-09-2008, 19:14
Ооо, точно 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

Luzuk
22-09-2008, 03:00
В программе, которая на скрине, слово Chouce по английски правильно пишется как Choose, но сюда больше подходит Select. »
Ясно, учтем ;) Спасибо за подсказку, поправим.

Drongo, Вот и хорошо. Я так сразу и подумал, что в этом ошибка.

Сейчас думаю тоже самое сделать, только с нормальным интерфейсом. Если за основу возьму то что D.Y. сделал:
http://forum.oszone.net/attachment.p...1&d=1216408949
Matr_Gause 1.1.zip »
Думаю ни кто против не будет?
Правда из Билдера в Визуал не разу ничего не переделывал, да и вообще графические оболочки только на Win API могу писать, и то на среднем уровне. Посоветуйте, кто знает, с чего лучше начать в этой задачи? Или проще на Билдере ее и продолжить писать и не мучиться с переделкой на Визуал С?

Admiral
22-09-2008, 04:12
Luzuk, если со средой Билдера не возникает проблем то лучше проект продолжать писать там же.




© OSzone.net 2001-2012