Тема: Библиотека DLL для решения СЛАУ в VBA

Помогите найти билиотеку DLL с функциями для вычислений произведения, транспонирования, обращения матриц и решения систем линеёных уравнений, которую можно подключить к VBA и использовать её функции в программах! Например для MathCAD2001 есть пакет Numeric Recipes в котором есть замечательная функция gaussjSolve(A,b), а в самом MathCAD2001 есть функция lsolve(M,v) но как ими воспользоваться в программе VBA не знаю.
Пробовал сам писать функции для решения СЛАУ методом Гаусса (и даже написал функцию для решения СЛАУ с диагональной матрицей) но они или работают медленно или в точности и надёжности их решений у меня нет уверенности.
Помогите найти надёжный, быстрый и проверенный пакет или библиотеку для решения СЛАУ пожалуйста!

Re: Библиотека DLL для решения СЛАУ в VBA

Каким образом это связано с AutoCAD. Зачем в графическом пакете решать СЛАУ?

Re: Библиотека DLL для решения СЛАУ в VBA

Например для отрисовки эпюр

Re: Библиотека DLL для решения СЛАУ в VBA

Считай в какой нибудь проге для этого предназначенной, например в excel, тот же маткад...можешь сам прогу написать....экспортируй во временный файл, потом из него считывай и все, не надо мудрить...

Re: Библиотека DLL для решения СЛАУ в VBA

Сделай DLL, типа в Fortran (быстрее чем VB и остальное в вычислениях). А стандартного кодинга методов - предостаточно.

Re: Библиотека DLL для решения СЛАУ в VBA

Пользуюсь старыми наработками в VBA но с треугольной матрицей не рискую, однако вроде работала без ошибок.
Метод Гауса мне был необходим для решения прочностных задач с помощью МКЭ и в AutoCAD моя программа рисовала расчётные схемы, назначала закрепления узлов, прикладываемые силы и т.д.
Но из-за того-что в VBA нет удобного OCX StringGrid в котором можно редактировать ячейки, обединять их создавать красивые и удобные заголовки таблиц работу с этой программой мне пришлось остановить и не знаю когда я снова возьмусь за эту программу. Наверное когда найду хороший OCX.

Re: Библиотека DLL для решения СЛАУ в VBA

Михаил, вот что нашел в сети. Автор, судя по тексту не против пользования его решениями.
"....Понадобилось мне решить систему линейных уравнений.
Я такую програмку уже, наверное, раз 20 писал на разных языках, начиная с
алгола А вот для VB почему-то лень стало. Дня три искал везде по сети, но так и не
нашел. Неужели никому не надо?
Короче говоря, сел и написал свою. Может быть она еще кому-нибудь пригодится?
Владимир Мизгулин ....."
Sub Eq_Sol(a() As Double, b() As Double, x() As Double, n As Integer)
' Решение системы линейных уравнений AX = B
' методом Халецкого (http://www.chat.ru/~alglib/).
' Обращение:
'  Call (A(),B(),X(),N)
' где N - кол-во уравнений (неизвестных), A - матица коэффициентов (N*N),
'       B - столбец (N), X - решение системы (N).
' Метод: матрицу A можно представить в виде A = L*R,
' где L - левая (нижняя) треугольная матрица,
' R - правая (верхняя) треугольная матрица с единицами по диагонали,
' тогда AX = LRX = L(RX) = LY = B,
' т.е. надо решить две простые системы LY = B и затем RX = Y
' Перед обращением следет проверить, что A(1,1) <> 0.
' Имеет ли система решение прграмма не проверяет.
Dim L(1 To 20, 1 To 20), R(1 To 20, 1 To 20), Y(1 To 20)
Dim i As Integer, j As Integer, k As Integer
For i = 1 To n
   L(i, 1) = a(i, 1)
   R(1, i) = a(1, i) / a(1, 1)
Next i
Y(1) = b(1) / a(1, 1)
For i = 2 To n
   R(i, i) = 1
   j = 2
   Do
      L(i, j) = a(i, j)
      R(i, j) = 0
      For k = 1 To j - 1
         L(i, j) = L(i, j) - L(i, k) * R(k, j)
      Next
      j = j + 1
   Loop Until j > i
   R(i, i) = 1
   Do
      L(i, j) = 0
      R(i, j) = a(i, j)
      Y(i) = b(i)
      For k = 1 To i - 1
         R(i, j) = R(i, j) - L(i, k) * R(k, j)
         Y(i) = Y(i) - L(i, k) * Y(k)
      Next
      R(i, j) = R(i, j) / L(i, i)
      Y(i) = Y(i) / L(i, i)
      j = j + 1
   Loop Until j > n
Next
x(n) = Y(n)
For i = n - 1 To 1 Step -1
   x(i) = Y(i)
   For k = i + 1 To n
      x(i) = x(i) - R(i, k) * x(k)
   Next
Next
End Sub

Re: Библиотека DLL для решения СЛАУ в VBA

Методом Халецкого это очень интересно. Обязательно попробую стравнить с методом Гаусса.