问题标签 [alglib]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1019 浏览

c# - 使用 minlmoptimize 拟合 Alglib 数据不会最小化结果。包含完整的 c#

我在 alglib 库中实现 lm 优化器时遇到问题。我不确定为什么在仍然收到退出代码 4 的同时参数几乎没有改变。我无法确定我在使用 alglib 的文档时做错了什么。以下是我正在运行的完整来源:

0 投票
2 回答
190 浏览

performance - 使用 Eigen 和使用 Alglib 一样快速地获取行列式日志

我需要一种快速的方法来获取复杂行列式的对数,最好不要先获取行列式然后取对数,因为数字可以变得非常大或非常小(我后来使用这些数字的比率,但仅在它们相似时; 所以他们的差异的指数表现良好)。

到目前为止,我一直在使用 alglib 库;进行 LU 分解,然后沿对角线添加对数,然后添加 i*pi 乘以枢轴点数。假设我有一个alglib::complex_2d_array msize n,我做

我在哪里使用函数

然而,在很多方面,Eigen 库看起来都不错。更易于使用和使用,complex<double>而不是它自己的复杂类。此外,我已经将它用于其他目的,因此这将简化事情。

我尝试以类似的方式使用它,假设 aEigen::MatrixXcd m大小n

但是,当我进行一些测试时,Eigen 的执行速度要慢得多。

所以我想知道是否有另一种方法可以更快地使用 Eigen?也许另一种完全获取行列式日志的方法?

编辑:评论后:这就是我测试代码的方式:

它是用g++ -c -std=c++11 -O2. 典型的运行给出:

0 投票
1 回答
1216 浏览

c++ - 如何在 QT C++ 中连接库 alglib

我想从官方站点链接运行示例。当我试图编译

我得到了很多错误,他们看起来

C:\Qt\Tools\QtCreator\bin\VK_DotaFeed\neuralnet.cpp:-1: 错误:未定义对 alglib::mlpcreatetrainercls(int, int, alglib::mlptrainer&) 的引用

C:\Qt\Tools\QtCreator\bin\VK_DotaFeed\neuralnet.cpp:-1: 错误:未定义对 alglib::real_1d_array::~real_1d_array() 的引用

我写

在什么错误?

0 投票
0 回答
116 浏览

c++ - 如何在 /with/for alglib 中创建矩阵数组

我正在尝试使用 C++ 中的 Alglib 库制作一个二维矩阵数组来计算特征值,但我找不到如何制作一个矩阵数组(如果可能的话)来计算它们的特征值。我知道如何计算 1 个矩阵的特征值和特征向量,但同时对于其中的几个,我不知道。谁能帮我?

0 投票
1 回答
189 浏览

xamarin.android - alglib 的 spline2dbuildbicubic 出错

我想做一个双三次 2D 样条插值。为此,我选择使用 Alglib 库。我有两个向量 xs 和 ys 以及一个矩阵幅度。根据我写的文档(幅度是双[N,27]):

我收到异常“alglib+alglibexception:抛出了‘alglib+alglibexception’类型的异常。”

0 投票
0 回答
585 浏览

c++ - 将双精度数组/向量转换为 alglib 复数

我正在创建一个项目来过滤信号。目前,它只需要真正的输入值,但是,使用alglib它需要接受alglib::complex类型的库来进行过滤。因此double[]需要转换输入

参考手册中,它的状态是双精度复杂类型。有没有办法简单地复制数据 - 因为唯一的选择似乎是按元素分配,或者创建一个非常大的字符串并直接分配给复杂的数组。

到目前为止,我发现分配给数组的两种方法包括:

0 投票
1 回答
176 浏览

f# - 在将 C# 转换为 F# 时处理 byref 和 out 参数

有人可以帮助将以下 C# 示例代码从Alglib库转换为 F# 吗?我无法在互联网上找到任何关于如何从 F# 使用它的示例。

这是我对 F# 翻译的(糟糕的)尝试:

0 投票
0 回答
99 浏览

java - 通过 JNI 从 Java 数组到/从 ALGLIB 实数数组的高效转换

我需要分别通过 JNI 将一维和二维 Javadouble元素数组与 ALGLIBreal_1d_arrayreal_2d_arrayC/C++ 进行转换。目前,流程如下:

  1. 使用 JNIGetDoubleArrayElements()获取jdoubleC/C++ 中的连续向量。在我的机器上,这总是产生一个副本,即 JNI 将此调用的最后一个参数 , 设置jboolean isCopyJNI_TRUE

  2. 分配一个 C/C++ 向量double并从 JNI 向量中复制元素jdouble到它。请注意,一般情况下,无法保证jdouble类型与类型相同double,因此在double逐个复制数组元素时需要强制转换为。(有没有一种干净的方法来确定它jdouble确实与 相同double,无论是在编译时还是运行时?)

  3. 分别实例化 ALGLIBreal_1d_arrayreal_2d_array。据我从 ALGLIB 代码中可以看出,这会创建一个ae_matrix由数组内部保存的维度 (0, 0)。

  4. 使用该方法将数组元素从 C/C++ 连续向量复制double到 ALGLIB 数组setcontent()。据我从代码中可以看出,这会ae_matrix适当地调整内部保存的大小并将元素一个一个地复制到该矩阵中。看起来在二维矩阵的情况下,第一维是指向 的线性向量的指针向量double,因此元素不连续地存储在一维数组的数组中(类似于 Java)。

  5. 使用 ALGLIB 使用实数数组执行所需的计算。

  6. 要通过 JNI 将结果复制回 JAVA 数组,请反转该过程。ALGLIB 实数数组的元素只能通过方法访问。对于一维数组,有一种getcontent()方法可以返回指向 的连续向量的指针double。对于二维数组,通过operator []它返回一个指向连续行的指针。和以前一样,使用带有强制转换的一对一元素副本jdouble

如您所见,其中涉及大量复制。对于小型阵列,这没什么大不了的,但对于较大的阵列,这在内存和 CPU 方面会变得相当昂贵。

有没有办法在不依赖 ALGLIB 内部结构的知识(可能会发生变化)的情况下加快速度?

0 投票
1 回答
1778 浏览

c# - 如何在c#中解决非线性约束优化

我想优化 c# 中的非线性函数,12 或 15 个变量(视情况而定)。它受到两个非线性不等式和四个线性不等式的约束。我已经尝试使用 ALGLIB 曲目的 AUL(增广拉氏)方法。不幸的是,算法收敛到错误的最小值。我认为这是因为我想不出可行解决方案的初步猜测。

有谁知道解决这个问题的方法?非常感谢。

PS:本人不会说英文,如有错误请见谅!

0 投票
1 回答
205 浏览

c# - 如何在面部识别中对特征人脸进行归一化?

人脸识别的PCA算法中||u||=1是什么?