Перейти к содержанию
    

Решение СЛАУ методом Гаусса

Не подскажите как можно в Verilog Hdl работать с дробями или вещественными числами? Мне нужно реализовать СЛАУ методом Гаусса, только вот как я понял без этих вещей там не обойтись, или как то можно?))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...

Мне нужно реализовать СЛАУ методом Гаусса

...

Найти решение в общем виде что ли? Покорректнее вопрос пожалуйста

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...

Мне нужно реализовать СЛАУ методом Гаусса

...

Найти решение в общем виде что ли? Покорректнее вопрос пожалуйста

 

Для начало меня интересует прямой ход, над обратным я еще не думал) Как матрицу привести к ступенчатой или треугольной форме. Там же нужно работать с дробями либо с вещественными числами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для начало меня интересует прямой ход, над обратным я еще не думал) Как матрицу привести к ступенчатой или треугольной форме. Там же нужно работать с дробями либо с вещественными числами.

Вы для начала определитесь с форматом, добные числа или плав. точка. Что-то мне подсказывает, что в общем виде

с дробными будет куча проблем из-за малого динамического диапазона.

 

А вообще, лучше с самого начала, как стоит задача? Решать очень быстро уравнения, как быстро? Какая размерность уравнений?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы для начала определитесь с форматом, добные числа или плав. точка. Что-то мне подсказывает, что в общем виде

с дробными будет куча проблем из-за малого динамического диапазона.

 

А вообще, лучше с самого начала, как стоит задача? Решать очень быстро уравнения, как быстро? Какая размерность уравнений?

Размер матрицы 10^2, решать их нужно как можно быстрей, а точнее выжать максимум, в том числе использовать конвейер=) Задача стоит в том чтобы реализовать на ПЛИС СЛАУ методом Гаусса и оценить производительность.

 

Что касается дробных, то мне приходит на ум использование двух матриц, в одной из которых будет числитель, а в другой знаменатель. Только при таком раскладе слишком много памяти придется потратить... Так что пусть будет плавающая точка, только тут у меня вообще идей нету...

Изменено пользователем Kadaj

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Размер матрицы 10^2, решать их нужно как можно быстрей, а точнее выжать максимум, в том числе использовать конвейер=) Задача стоит в том чтобы реализовать на ПЛИС СЛАУ методом Гаусса и оценить производительность.

Что касается дробных, то мне приходит на ум использование двух матриц, в одной из которых будет числитель, а в другой знаменатель. Только при таком раскладе слишком много памяти придется потратить... Так что пусть будет плавающая точка, только тут у меня вообще идей нету...

По моему правильнее определить требования, а уже потом смотреть какой метод туда подходит.

Озвучте исходные данные:

1) матрица 10х10, правильно?

2) точность представления чисел?

3) требуемое время решения, какой порядок хотя-бы, 1 мкс, 1 мс, 1 сек?

4) как будет встроено в систему, или это чисто академическая задача?

5) что по требованиям к финансам для задачи, в ПЛИС дорого будет.

6) - мож ещё чего скажете.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1) матрица 10х10, правильно?

Матрица 100х100

 

2) точность представления чисел?

Я думаю 4 знака после запятой хватит

 

3) требуемое время решения, какой порядок хотя-бы, 1 мкс, 1 мс, 1 сек?

1 мкс наверно)

 

4) как будет встроено в систему, или это чисто академическая задача?

Никак не будет встрояно, академическая задача.

 

5) что по требованиям к финансам для задачи, в ПЛИС дорого будет.

Так как ни как не будет встрояно, то бесплатно)

 

6) - мож ещё чего скажете.

Да вроде больше нечего)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1) матрица 10х10, правильно?

Матрица 100х100

 

2) точность представления чисел?

Я думаю 4 знака после запятой хватит

А до знака сколько? Хотя учитывая п. 4 не важно, см. п.4.

 

3) требуемое время решения, какой порядок хотя-бы, 1 мкс, 1 мс, 1 сек?

1 мкс наверно)

4) как будет встроено в систему, или это чисто академическая задача?

Никак не будет встрояно, академическая задача.

Ну, раз академическая и реально в железе делаться не будет, то берите формат стандартного float и не майтесь,

задача сведётся к собственно алгоритму, а не форматам чисел.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну, раз академическая и реально в железе делаться не будет, то берите формат стандартного float и не майтесь,

задача сведётся к собственно алгоритму, а не форматам чисел.

 

А что значит берите формат стандартного float??

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А что значит берите формат стандартного float??

В исходном поте Вы спрашивали:

Не подскажите как можно в Verilog Hdl работать с дробями или вещественными числами?

Вот я и говорю - берите стандартное вечественное число, float или double.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В исходном поте Вы спрашивали:

 

Вот я и говорю - берите стандартное вечественное число, float или double.

 

Насколько я знаю в верилоге вещественные переменные объявляются как real x, только синтезатор квартус не поддерживает работу с таким типом... Выдает ошибку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Насколько я знаю в верилоге вещественные переменные объявляются как real x, только синтезатор квартус не поддерживает работу с таким типом... Выдает ошибку.

Вы меня не поняли, возьмите намример на http://opencores.org какой нибуть проект с плавающей точкой,

выдерите из него реализацию элементарных операций и в путь....

А поводу синтеза Вы сказали что это Вам не нужно, делайте всё на модели, там в ActiveHDL или в ModelSim.

Хотя в таком варианте можно и скомпилять в микруху, но кажись в лоб - не зватит ресурсов :)

Вы-ж ещё по хорошему должны будете делать и оценку результата на правильность, смотреть там дискреминанты и т.п.

без таких проверок результат IMHO не интересен, если только это заранее не проверено. Это кто делать будет?

 

Может по ресурсам всё-же придумать какой векторный сопроцессор + обычный проц для управления процессом,

внешний или внутренний?

 

1) матрица 10х10, правильно?

Матрица 100х100

Кстати, а на таких размерностях Гаус применяется? Ошибки округления не сводят всё на нет?

Может лучше численно как?

В некоторых задачах матрицы можно разложить на матрыцы меньшей размерности -

задача заметно уменьшает зазмерность.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В исходном поте Вы спрашивали:

 

Вот я и говорю - берите стандартное вечественное число, float или double.

 

в верилоге оно называется real

 

если это задача студенческая - то напишите влоб стандартный алгоритм Гауса (как на С) и все

 

если делать модель вычислителя, то real использовать нельзя, и писать надо по-другому (типа векторно)

то есть сразу домножаем строку и вычитаем как векторную операцию

 

основная проблема - не поделить на 0 и переставлять строки (по моему это уже модифицированный алгоритм Гаусса) ну и проверять, что не загнулся алгоритм (система совместна (?) уже не помню, как это называется)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2Builder

Ну естественно я использую ModelSim, у меня там ошибка за ошибкой, без отладки такую вещь помоему не написать)

Что касается больших размерностей то да, над этим я не подумал, может и вправду там уже не получится)

 

2yes

Задача не совсем академическая, скорее научная, так что real не подходит, мне нужно чтобы синтезировалось с очень хорошей частотой, потом придется еще конвейер делать. А можно по подробней насчет векторов. Там же при домножении дроби получаются, как с ними быть?)

 

Вобщем мне нужно реализовать что то типо этого

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вобщем мне нужно реализовать что то типо этого

ну так берите за основу ту статью - по сути, векторный сопроцессор.

Формат там скорее всего обычный float подразумевается (4 байта).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...