<
  • Главная
Статьи

GaussDLL JINRLIB

Мова: С ++
Середовище програмування: MS Visual C ++ 7.0

GaussDLL - це комплекс програм, написаний на мові С ++ в середовищі програмування MS Visual C ++, призначений для виконання матрічно- векторних операцій і вирішення систем лінійних алгебраїчних рівнянь (СЛАР) з речовими коефіцієнтами методом Гаусса без і з вибором головного елемента. GaussDLL розроблений як модуль розширення Microsoft Foundation Classes (MFC) і оформлений у вигляді динамічно яку пов'язують бібліотеки - GaussDLL.dll. Для використання GaussDLL потрібно скопіювати файли GaussDLL.dll і mfc70.dll в директорію SYSTEM (SYSTEM32) операційної системи і включити додається заголовки ARRAYS.H і саму бібліотеку в список зв'язків програми.

Призначені для користувача типи даних: CMatrix (ARRAYS.H) CVector (ARRAYS.H) Тип повернення з функцій:
enum MatErrType {matErr_None, matErr_Size, matErr_Singular,
matErr_IllConditioned, matErr_IterLimit, matErr_QNAN}; (ARRAYS.H). matErr_None - правильне рішення, matErr_Size - помилка розмірності, matErr_Singular - помилка сингулярності, matErr_IllConditioned - помилка поганої обумовленості, matErr_IterLimit - помилка перевищення меж за кількістю ітерацій, matErr_QNAN - помилка ділення на нуль.

Експортовані функції:

Функції, що експортуються з бібліотеки GaussDLL, дозволяють зробити розрахунок норми вектора, норми матриці, числа обумовленості системи, лівої і правої перестановки матриць, суми і різниці двох матриць, творів матриці на вектор і матриці на матрицю, зворотний матриці і детермінантою матриці. Крім того, вони дозволяють зробити копіювання вектора, копіювання матриці, а також транспонування і Low / Up декомпозицію матриць. Три функції працюють над вирішенням систем лінійних алгебраїчних рівнянь з речовими коефіцієнтами методом Гаусса, методом Гаусса з вибором головного елемента по стовпцю і методом Гаусса з вибором головного елемента по матриці відповідно. Ліва перестановки матриця використовується для перестановки рядків в матриці коефіцієнтів і векторі вільних членів. Права перестановки матриця використовується для перестановки стовпців в матриці коефіцієнтів і рядків у векторі рішення. Абсолютне значення детермінанта матриці коефіцієнтів має бути більше, ніж 1.е-15 (машинний нуль).

  1. Норма вектора:
    void NormVec (double & norm, CVector & VecA, int numRowsA); Вхідні параметри: VecA - вихідний вектор, numRowsA - число рядків вихідного вектора. Вихідні параметри: norm - норма вихідного вектора.
  2. Норма матриці:
    void NormMat (double & norm, CMatrix & MatA, int numRowsA, int numColsA); Вхідні параметри: MatA - вихідна матриця, numRowsA - число рядків вихідної матриці, numColsA - число стовпців початкової матриці. Вихідні параметри: norm - норма вихідної матриці.
  3. Число обумовленості системи:
    void SystCond (double normMat, double normInvMat, double & cond); Вхідні параметри: normMat - норма вихідної матриці, normInvMat - норма зворотної матриці. Вихідні параметри: cond - число обумовленості системи.
  4. Ліва перестановки матриця:
    MatErrType RrrMatL (CMatrix & MatRes, int numRowsA, int rowInd, int colInd); Вхідні параметри: numRowsA - число рядків вихідної матриці, rowInd - індекс рядка головного елемента, colInd - індекс стовпця головного елемента. Вихідні параметри: MatRes - ліва перестановки матриця.
  5. Права перестановки матриця:
    MatErrType RrrMatR (CMatrix & MatRes, int numColsA, int rowInd, int colInd); Вхідні параметри: numColsA - число стовпців початкової матриці, rowInd - індекс рядка головного елемента, colInd - індекс стовпця головного елемента. Вихідні параметри: MatRes - права перестановки матриця.
  6. Копіювання вектора:
    void CopyVec (CVector & VecA, CVector & VecB, int numRowsB); Вхідні параметри: VecB - вихідний вектор, numRowsB - число рядків вихідного вектора. Вихідні параметри: VecA - вектор результату.
  7. Копіювання матриці:
    void CopyMat (CMatrix & MatA, CMatrix & MatB, int numRowsB, int numColsB); Вхідні параметри: MatB - вихідна матриця, numRowsB - число рядків вихідної матриці, numColsB - число стовпців початкової матриці. Вихідні параметри: MatA - матриця результату.
  8. Додавання матриць:
    MatErrType AddMat (CMatrix & MatA, CMatrix & MatB, CMatrix & MatC,
    int numRowsA, int numColsA, int numRowsB, int numColsB); Вхідні параметри: MatA - перша вихідна матриця, MatB - друга вихідна матриця, numRowsA - число рядків першої вихідної матриці numColsA - число стовпців першої вихідної матриці, numRowsB - число рядків другий вихідної матриці, numColsB - число стовпців другої вихідної матриці. Вихідні параметри: MatC - сума вихідних матриць.
  9. Віднімання матриць:
    MatErrType SubMat (CMatrix & MatA, CMatrix & MatB, CMatrix & MatC,
    int numRowsA, int numColsA, int numRowsB, int numColsB); Вхідні параметри: MatA - зменшується матриця, MatB - віднімається матриця, numRowsA - число рядків зменшується матриці, numColsA - число стовпців зменшується матриці, numRowsB - число рядків віднімається матриці, numColsB - число стовпців віднімається матриці. Вихідні параметри: MatC - різниця двох матриць.
  10. Транспонування матриці:
    void TransMat (CMatrix & MatA, CMatrix & MatRes, int numRowsA, int numColsA); Вхідні параметри: MatA - вихідна матриця, numRowsA - число рядків вихідної матриці, numColsA - число стовпців початкової матриці. Вихідні параметри: MatRes - транспонована матриця.
  11. Множення матриці на вектор:
    MatErrType MulMatVec (CMatrix & MatA, CVector & VecB, CVector & VecC,
    int numRowsA, int numColsA, int numRowsB); Вхідні параметри: MatA - вихідна матриця, VecB - вихідний вектор, numRowsA - число рядків вихідної матриці, numColsA - число стовпців початкової матриці, numRowsB - число рядків вихідного вектора. Вихідні параметри: VecC - твір.
  12. Множення двох матриць:
    MatErrType MulMatMat (CMatrix & MatA, CMatrix & MatB, CMatrix & MatC,
    int numRowsA, int numColsA, int numRowsB, int numColsB); Вхідні параметри: MatA - ліва матриця, MatB - права матриця, numRowsA - число рядків лівої матриці, numColsA - число стовпців лівої матриці, numRowsB - число рядків правої матриці, numColsB - число стовпців правою матриці. Вихідні параметри: MatC - твір
  13. Low / Up перестановка:
    MatErrType LowUp (CMatrix & MatA, CMatrix & MatLow, CMatrix & MatUp,
    int numRowsA, int numColsA); Вхідні параметри: MatA - вихідна матриця, numRowsA - число рядків вихідної матриці, numColsA - число стовпців початкової матриці. Вихідні параметри: MatLow - нижня трикутна матриця, MatUp - верхня трикутна матриця.
  14. Детермінант матриці:
    MatErrType DetMat (CMatrix & MatA, double & det, int numRowsA, int numColsA); Вхідні параметри: MatA - вихідна матриця, numRowsA - число рядків вихідної матриці, numColsA - число стовпців початкової матриці. Вихідні параметри: det - детермінант.
  15. Зворотна матриця:
    MatErrType InverseMat (CMatrix & MatA, CMatrix & MatRes, int numRowsA, int numColsA); Вхідні параметри: MatA - вихідна матриця, numRowsA - число рядків вихідної матриці, numColsA - число стовпців початкової матриці. Вихідні параметри: MatRes - зворотна матриця.
  16. Метод Гаусса:
    MatErrType Gauss (CMatrix & MatLow, CMatrix & MatUp, CVector & VecIn, CVector & VecOut,
    int numRowsLow, int numColsLow, int numRowsUp, int numColsUp, int numRowsIn); Вхідні параметри: MatLow - нижня трикутна матриця, MatUp - верхня трикутна матриця, VecIn - вектор вільних членів, numRowsLow - число рядків нижньої трикутної матриці, numColsLow - число стовпців нижньої трикутної матриці, numRowsUp - число рядків верхньої трикутної матриці, numColsUp - число стовпців верхньої трикутної матриці, numRowsIn - число рядків вектора вільних членів. Вихідні параметри: VecOut - вектор рішення.
  17. Метод Гаусса з вибором головного елемента по стовпцю:
    MatErrType GaussPivCol (CMatrix & MatA, CVector & VecIn, CVector & VecOut,
    int numRowsA, int numColsA, int numRowsIn); Вхідні параметри: MatA - вихідна матриця, VecIn - вектор вільних членів, numRowsA - число рядків вихідної матриці, numColsA - число стовпців початкової матриці, numRowsIn - число рядків вектора вільних членів. Вихідні параметри: VecOut - вектор рішення.
  18. Метод Гаусса з вибором головного елемента по таблиці:
    MatErrType GaussPivTbl (CMatrix & MatA, CVector & VecIn, CVector & VecOut,
    int numRowsA, int numColsA, int numRowsIn); Вхідні параметри: MatA - вихідна матриця, VecIn - вектор вільних членів, numRowsA - число рядків вихідної матриці, numColsA - число стовпців початкової матриці, numRowsIn - число рядків вектора вільних членів. Вихідні параметри: VecOut - вектор рішення.

Виклик функцій GaussDLL (MS Visual C ++ XX):

Декларація глобальної змінної управління модулем: HMODULE gGaussDLL; Визначення типу покажчика на функцію: typedef MatErrType (* GAUSSPIVTBL) (CMatrix & MatA, CVector & VecIn, CVector & VecOut, int numRowsA, int numColsA, int numRowsIn); Декларація глобального покажчика на функцію: GAUSSPIVTBL pGaussPivTbl; Завантаження DLL (в конструкторі): gGaussDLL = LoadLibrary ( "GaussDLL"); Отримання адреси функції, що експортується DLL (в конструкторі): pGaussPivTbl = (GAUSSPIVTBL) GetProcAddress (gGaussDLL, "GaussPivTbl"); Декларація локальної змінної і виклик функції, що експортується: MatErrType ErrCode; ErrCode = pGaussPivTbl (MatA, VecIn, VecOut, MatA.getRows (), MatA.getCols (), VecIn.getSize ()); Вивантаження DLL (в деструкції): FreeLibrary (gGaussDLL);

В архіві містяться опис програм (в форматі .doc), dll-бібліотеки GaussDLL.dll і mfc70.dll, файл ARRAYS.H з описом призначених для користувача типів даних, фрагменти програми, що використовують GaussDLL.dll, і тестовий приклад TestDLL.exe.





Новости
  • Виртуальный хостинг

    Виртуальный хостинг. Возможности сервера распределяются в равной мере между всеми... 
    Читать полностью

  • Редизайн сайта

    Редизайн сайта – это полное либо частичное обновление дизайна существующего сайта.... 
    Читать полностью

  • Консалтинг, услуги контент-менеджера

    Сопровождение любых интернет ресурсов;- Знание HTML и CSS- Поиск и обновление контента;-... 
    Читать полностью

  • Трафик из соцсетей

    Сравнительно дешевый способ по сравнению с поисковым и контекстным видами раскрутки... 
    Читать полностью

  • Поисковая оптимизация

    Поисковая оптимизация (англ. search engine optimization, SEO) — поднятие позиций сайта в результатах... 
    Читать полностью