Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Решение сист. уравнений методом Гаусса
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Alhen
Как всегда вопрос времени заставляет искать что-нибудь готовое, помогите найти java script:emoticon(':help:', 'smid_14')
=GM=
Цитата(Alhen @ Aug 12 2007, 11:22) *
Как всегда вопрос времени заставляет искать что-нибудь готовое, помогите найти java script:emoticon(':help:', 'smid_14')

Вот здесь находится одна из наиболее мощных программ. Насколько помню, там используется модифицированный метод Гаусса-Жордана.
nss
Вот здесь есть неплохая подборка алгоритмов http://alglib.sources.ru/
haker_fox
Цитата(Alhen @ Aug 12 2007, 20:22) *
Как всегда вопрос времени заставляет искать что-нибудь готовое, помогите найти java script:emoticon(':help:', 'smid_14')

Т.е. Вы хотите, чтобы AVR решал систему уравнений? Я так понимаю система линейных уравнений первого порядка? Тогда (ИМХО) проще применить метод Крамера. Все сводится к нахождению определителей матриц и вычислению отношений этих определителей. По сути, алгоритм очень прост. Все можно отработать на IBM PC, а затем перенести в CV AVR.
Успехов!
Alhen
У меня задача реализовать на С для AVR кусок готового кода написаного под Дельфи, там единственная подпрограмма gauss для решения системы уравнений. Менять метод решения я не в праве.
Спасибо за полезные ссылки, в принципе я уже смирился что придется поскрипеть мозгами.
haker_fox
Цитата(Alhen @ Aug 13 2007, 10:46) *
У меня задача реализовать на С для AVR кусок готового кода написаного под Дельфи, там единственная подпрограмма gauss для решения системы уравнений. Менять метод решения я не в праве.
Спасибо за полезные ссылки, в принципе я уже смирился что придется поскрипеть мозгами.

В принципе если программа на паскале написана без особых наворотов, то перенести ее на Си не должно быть большой проблемой. Сказанное справедливо при хорошем знании обоих языков. И самое главное не переводить строчку за строчкой, а понять смысл программы и реализовать его на си.
=GM=
Цитата(haker_fox @ Aug 13 2007, 00:04) *
Я так понимаю система линейных уравнений первого порядка? Тогда (ИМХО) проще применить метод Крамера. Все сводится к нахождению определителей матриц и вычислению отношений этих определителей. По сути, алгоритм очень прост. Все можно отработать на IBM PC, а затем перенести в CV AVR.

Ну, дорогой товарищ! У вас сведения начала 20 века (те, что в средней школе дают). Великий Гаусс еще в 19 веке предложил более удобный метод решения, метод Гаусса называется, с тех пор математика шагнула далеко вперёд (есть более продвинутый метод - Гаусса-Жордана). Метод Гаусса обходит прямое вычисление определителей.

Немного теории, если позволите. Вот что можно сказать о матрице 80х80, у которой главный определитель равен 1.0Е-80? Чтобы получить решение по Крамеру, надо будет делить на 1.0Е-80. Неприятное деление, как будто делишь на ноль. Можно предположить, что матрица вырожденная, но это не всегда так. Например, диагональная матрица с элементами по диагонали 0.1. Математики давно осознали, что определитель матрицы не есть абсолютный показатель вырожденности, поэтому в качестве критерия стали применять число обусловленности матрицы.
haker_fox
Цитата(=GM= @ Aug 13 2007, 22:06) *
Ну, дорогой товарищ! У вас сведения начала 20 века (те, что в средней школе дают). Великий Гаусс еще в 19 веке предложил более удобный метод решения, метод Гаусса называется, с тех пор математика шагнула далеко вперёд (есть более продвинутый метод - Гаусса-Жордана). Метод Гаусса обходит прямое вычисление определителей.

Я знаю о методе Гаусса. Метод Гаусса-Жордана мне не знаком. Я предположил, что человек не будет работать с матрицами больших размеров. Ибо это все-таки это AVR, а не PC. Размер ОЗУ не очень большой.
Цитата(=GM= @ Aug 13 2007, 22:06) *
Немного теории, если позволите. Вот что можно сказать о матрице 80х80, у которой главный определитель равен 1.0Е-80? Чтобы получить решение по Крамеру, надо будет делить на 1.0Е-80. Неприятное деление, как будто делишь на ноль. Можно предположить, что матрица вырожденная, но это не всегда так. Например, диагональная матрица с элементами по диагонали 0.1. Математики давно осознали, что определитель матрицы не есть абсолютный показатель вырожденности, поэтому в качестве критерия стали применять число обусловленности матрицы.

Резонно предположить, что матрица будет из чисел типа float (4 байта). Тогда при указанном Вами размере понадобиться 80*80*4 = 25600 байт. Насколько мне известно, ни у одной AVR нет такого объема встроенной ОЗУ. Значит придется ставить внешнюю. А уж какая скорость понадобиться на обработку все этого, на реализацию алгоритма, да с учетом, что МК еще чем-то будет заниматься, трудно сказать. Автор не предоставил деталей задачи.
Хотя может я в чем-то и не прав.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.