Вопрос № 180291: Здравствуйте, реализую программу для вычислений Систем Линейных Алгебраических Уравнений (СЛАУ) методами Гаусса и Вращения. (среда Visual C++ 2008, консолька). Практически все реализовано (методы, проверки), но видимо куда-то закралась ошибка...
Вопрос № 180291:
Здравствуйте, реализую программу для вычислений Систем Линейных Алгебраических Уравнений (СЛАУ) методами Гаусса и Вращения. (среда Visual C++ 2008, консолька).
Практически все реализовано (методы, проверки), но видимо куда-то закралась ошибка в методе Гаусса, либо алгоритм изначально неверен, и из-за этого не решает (по ходу ошибка находится в прямом ходе метода Гаусса, т.к. в методе вращения используется та-же функция, что и в обратном ходе гаусса, но там верно).
Эксперты, посмотрите
исходничек, может вам удастся найти и устранить данную ошибку.
У вас в исходнике в методе Гаусса не ведется работа с массивом ответов а его тоже нужно делить на выбранный элемент. URL >> Посмотрите по этой ссылке решение, думаю это Вам поможет.
Дело в том что у Вас не переставляются строчки в методе Гаусса а только происходит операция с индексами и при выполнении
обратного шага происходит деление на нуль. нужно переписать идея то у вас правильная но нужно переставлять массивы целиком.
В приложении пример, как можно поправить программу (решение не совсем красивое, но рабочее). Так нужно вызывать его в программе:
Код:
void re_gauss(void) { system("cls"); reload(); if (flag>0) { GausResh(/**A,*B,Dim*/);
/* // Первый шаг. for(int i = 0; i < Dim-1 ; i++) { Gauss1(i);
} // Второй шаг. for( i = Dim - 1; i >= 0; i--) { Gauss2(i); }*/ flag=2; metod=1; cout<<"\r\nРешение методом Гаусса выполнено.\r\n\r\nНажмите любую кнопку для возврата в главное меню.";
} else { system("color
0c"); cout<<"Наверное сначала нужно ввести данные, а потом считать.\r\nНажмите любую кнопку для возврата к меню. "; } getch(); }
Подкорректировала оформление, добавила код
-----
∙ Отредактировал: Verena (Профессионал)
∙ Дата редактирования: 13.10.2010, 15:41 (время московское)
Приложение:
Ответ отправил: cradlea (5-й класс)
Ответ отправлен: 13.10.2010, 13:03
Номер ответа: 263483
Вам помог ответ? Пожалуйста, поблагодарите эксперта за это! Как сказать этому эксперту "спасибо"?
Отправить SMS#thank 263483
на номер 1151 (Россия) |
Еще номера »
Оценить выпуск »
Нам очень важно Ваше мнение об этом выпуске рассылки!
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.