Форум программистов, компьютерный форум CyberForum.ru

Работа с alglib - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 46, средняя оценка - 4.65
eugrita
3 / 4 / 0
Регистрация: 18.11.2009
Сообщений: 405
03.11.2011, 22:53     Работа с alglib #1
Здравствуйте. Пытаюсь начать работу с библиотекой alglib.
Из поверхностного знакомства понял, что никаких настроек проекта на библиотеку не надо
просто кидаешь в папку проекта основной хэдер linalg.h и связанные с ним хэдеры
ap.h, alglibmisc.h,alglibinternal.h
Первым делом попытался объявить библиотечный тип alglib::real_1d_array
Добился только включив ap.cpp в состав проекта
Далее проблема - не нашел готовых примеров работы с библиотекой
В частности, есть типы alglib::real_1d_array и alglib::real_2d_array
а как например задать размеры вектора и матрицы?
Основная цель - попробовать вызвать программу расчета собственных частот и значений smatrixevd из субпакеджа eig.
Не хватает примеров - что- то у нее хреново с документацией в отличие скажем от IMSL
Может кто примером кода поделится

Добавлено через 40 минут
как работать с массивами типов real_1d, real_2d ? если объявить
C++
1
2
const int n=3;
alglib::real_2d_array A[n][n];   alglib::real_2d_array Z[n];
то это проходит, но как инициализировать массивы?
Инициализация по обращению по индексам типа
A[0][0]=1; A[0][1]=1; A[0][2]=0; не проходит.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
04.11.2011, 00:17     Работа с alglib #2
C++
1
2
3
4
alglib::real_2d_array r2("[[2,3],[3,4]]");
alglib::real_2d_array r2_1("[[]]");
alglib::real_2d_array r2_2(r2);
r2_1 = r2;
Добавлено через 17 минут
eugrita, чем boost не устраивает? по крайней мере на офсайте я не нашел даже лицензии, в то время как в вашем варианте условия GPL тыкают на всех документах.
eugrita
3 / 4 / 0
Регистрация: 18.11.2009
Сообщений: 405
05.11.2011, 01:44  [ТС]     Работа с alglib #3
lда пытался как-то boost настроить - не пошла.
Собственно с alglib вроде разобрался.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int n=3;
alglib::real_2d_array A,V;
alglib::real_1d_array Lm;//Lm -собств знач, V - собств векторы
alglib::real_1d_array a,b;//диагонали 3-диаг матрицы
A.setlength(n,n);
V.setlength(n,n);Lm.setlength(n);
A[0][0]=-2; A[0][1]=1; A[0][2]=0;
A[1][1]=-2; A[1][2]=1; A[2][2]=2;
alglib::smatrixevd(A,n,1,1,Lm,V);
for (int j=0;j<n;j++) {
 printf("\nEig=%7.3f V=",Lm[j]);
 for (int i=0;i<n;i++)
   printf("%5.2f ",V[i][j]);
                      }
Но неприятно что пакет сделан так, что для пользования одной программой в проект должен кидать несколько библиотечных *.cpp и *.h
Мне в идеале из всех математич библиотек нужны только 2 проги но хорошего качества:
1)решение СЛАУ с контролем (диагностикой)плохой обусловленности матрицы
2)прогр нахожд собств векторов и значений симметричной и лучше всего 3-диагональной матрицы
(хотя нужны бывают и другие формы)
Если бы у меня были эти пара исходников - проблема была бы закрыта.
Одно время думал переписать с фортрановских SIMQ, NROOT
Потом хотел найти IMSL CNL
Потом пытался (и не довел до конца) подключение к математическим б-кам Matlab6.5 -
там известная проблема - длинные строки в хэдерах и не до конца читаются редактором C++Builder
-начал как рекомендовано делить строки, вроде все сделал - наткнулся на ошибку компилятора
двойное определение. (но это тема отдельного поста)
Kir7
0 / 0 / 0
Регистрация: 06.04.2012
Сообщений: 2
10.12.2013, 12:37     Работа с alglib #4
Всем доброго времени суток. Надеюсь, что мой вопрос не останется без ответа и не придется создавать новую тему.
Использую функцию rmatrixsolvels из пакета alglib. Сделал, как и автор темы. Закинул в папку с проектом все хедеры и сишники alglib. Из 13 файлов пришлось подключить 6 для вызова лишь одной функции. exe подрос заметно в размерах, время компиляции увеличилось заметно, ну да ладно, главное цель достигнута. Решается система линейных уравнений с прямоугольной матрицей - число уравнений превышает число неизвестных. Минимизируется невязка. Но чувствую, не хватает точности. В alglib есть возможность работы с арифметикой высокой точности http://alglib.sources.ru/equations/linear.php Но как ее подключить ? Что-то я не соображу... Так все запутано в этом alglib. Использую компилятор MinGW-W64. Буду признателен за любые подсказки.
Yandex
Объявления
10.12.2013, 12:37     Работа с alglib
Ответ Создать тему
Опции темы

Текущее время: 02:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru