Доступна ли документация по матрицам Blitz++?
Доступна ли документация по матрицам Blitz++?
Я нашел http://www.oonumerics.org/blitz//manual/blitz01.html с Google, но, похоже, это не содержит документации.
Единственный полезный пример, который я нашел, это от Rosettacode:
#include <iostream>
#include <blitz/tinymat.h>
int main()
{
using namespace blitz;
TinyMatrix<double,3,3> A, B, C;
A = 1, 2, 3,
4, 5, 6,
7, 8, 9;
B = 1, 0, 0,
0, 1, 0,
0, 0, 1;
C = product(A, B);
std::cout << C << std::endl;
}
Но этот небольшой пример не отвечает на многие мои вопросы:
- Существует ли что-то вроде BigMatrix?
- Как я могу создать матрицы, когда я не знаю их размера во время компиляции?
- Какие другие операции поддерживают эти матрицы?
Поиск файла tinymat.h обнаружил эту папку:
moose@pc07:/usr/include/blitz$ ls
applics.h matbops.h ops.h tinyvec-et.h vecglobs.h
array matdiag.h prettyprint.h tinyvec.h vecio.cc
array.h matexpr.h promote.h tinyvecio.cc veciter.h
array-impl.h matgen.h promote-old.h tinyveciter.h vecmax.cc
array-old.h mathf2.h rand-dunif.h traversal.cc vecmin.cc
bench.cc mathfunc.h rand-mt.h traversal.h vecnorm1.cc
benchext.cc matltri.h rand-normal.h tuning.h vecnorm.cc
benchext.h matref.h random.h tvcross.h vecpick.cc
bench.h matrix.cc randref.h tvecglobs.h vecpick.h
blitz.h matrix.h rand-tt800.h update.h vecpickio.cc
bzconfig.h matsymm.h rand-uniform.h vecaccum.cc vecpickiter.h
bzdebug.h mattoep.h range.h vecall.cc vecsum.cc
compiler.h matuops.h reduce.h vecany.cc vector.cc
config.h matutri.h shapecheck.h vecbfn.cc vector-et.h
etbase.h memblock.cc tau.h vecbops.cc vector.h
extremum.h memblock.h timer.h veccount.cc vecuops.cc
funcs.h meta tiny.h vecdelta.cc vecwhere.cc
gnu minmax.h tinymatexpr.h vecdot.cc vecwhere.h
indexexpr.h mstruct.h tinymat.h vecexpr.h wrap-climits.h
limits-hack.h numinquire.h tinymatio.cc vecexprwrap.h zero.cc
listinit.h numtrait.h tinyvec.cc vecglobs.cc zero.h
Так что я думаю Matrix
для больших матриц. Но как мне их умножить? Кроме того, это не мой любимый способ узнать что-то о библиотеке.
я имею libblitz-doc - C++ template class library for scientific computing
установлен, поэтому документация должна быть на моем компьютере. Но где мне искать?
1 ответ
Сайт http://www.oonumerics.org/ в данный момент, похоже, не работает. Однако полная документация для Blitz включена в пакет, который можно скачать по этой ссылке на SourceForge.
В Blitz нет специального класса, как BigMatrix
, Матрица - это просто двумерный массив, поэтому используйте Array
шаблон. Вам не нужно знать размер массива / матрицы во время компиляции. Вот небольшой пример из документации:
#include <blitz/array.h>
using namespace blitz;
int main()
{
Array<int,2> A(6,6), B(3,3);
// Set the upper left quadrant of A to 5
A(Range(0,2), Range(0,2)) = 5;
// Set the upper right quadrant of A to an identity matrix
B = 1, 0, 0,
0, 1, 0,
0, 0, 1;
A(Range(0,2), Range(3,5)) = B;
// Set the fourth row to 1
A(3, Range::all()) = 1;
// Set the last two rows to 0
A(Range(4, Range::toEnd), Range::all()) = 0;
// Set the bottom right element to 8
A(5,5) = 8;
cout << "A = " << A << endl;
return 0;
}
Если вы используете дистрибутив на основе Debian, dpkg -L libblitz-doc
раскроет содержание libblitz-doc
пакет, и вы могли видеть, где находятся документы. На моей машине они в /usr/share/doc/libblitz-doc/