请告诉我GSL库中矩阵乘法的功能.我搜索了很多,但我无法对它进行罚款.如果有人知道这个功能,请回答.提前致谢.
我正在编写一些代码,其中我使用了一些GNU GSL函数.出于纯粹的兴趣,我想知道这些函数是如何实现的,因此我想看看源代码.问题是我似乎无法找到它所在的目录.
我知道我可以在"/ usr/local/include/gsl /"中找到标题,但匹配的".c"文件在哪里?
对不起,如果这是n00bing它,但我希望有人可以帮助我.
我正在尝试将MATLAB程序移植到C++.我想在矩阵A和列向量之间实现左矩阵除法B.
A是一个m-by-n具有矩阵m不等于n和B是与列矢量m分量.
并且我希望结果X = A\B是最小二乘意义上的解决方案对于欠定或超定方程组AX = B.换句话说,X最小化norm(A*X - B)矢量的长度AX - B.这意味着我希望它与A\BMATLAB中的结果相同.
我想在GSL-GNU(GNU Science Library)中实现这个功能,我不太了解数学,最小二乘拟合或矩阵运算,有人能告诉我如何在GSL中做到这一点吗?或者如果在GSL中实现它们太复杂了,有人可以建议我提供一个好的开源C/C++库来提供上面的矩阵操作吗?
好吧,在我花了5个小时后,我终于弄明白了.但是仍然感谢我对我的问题的建议.
假设我们有一个5*2矩阵
A = [1 0
1 0
0 1
1 1
1 1]
Run Code Online (Sandbox Code Playgroud)
和一个矢量 b = [1.8388,2.5595,0.0462,2.1410,0.6750]
A \ b将是的解决方案
#include <stdio.h>
#include <gsl/gsl_linalg.h>
int
main (void)
{
double a_data[] = {1.0, 0.0,1.0, 0.0, 0.0,1.0,1.0,1.0,1.0,1.0};
double b_data[] …Run Code Online (Sandbox Code Playgroud) 我在我的C应用程序中使用了GSL库的一些函数.这个库很大,有很多功能和设施,我只想要它们中的一小部分.我的问题是我想在一个小型嵌入式系统上使用我的应用程序,并使用这个大型库使我的编译应用程序如此之大.
是否有任何设施可以从这些大型库中提取特定的函数和文件子集?
谢谢大家,
我在谷歌搜索,我找不到使用GSL计算矩形矩阵的逆的函数.由于很难找到,当需要找到矩形矩阵的逆时,这里的答案将有助于其他人.如果使用GSL是不可能的,那么请建议一些易于使用的替代库,并提供矩形矩阵的逆矩阵.
我正在尝试使用hmatrix,而且hmatrix-gsl-stats.但我得到了绝对奇怪的结果.任何人都能重现我所看到的吗?
import Numeric.LinearAlgebra
import Numeric.GSL.Fitting.Linear
main :: IO ()
main = do
let y = fromList [1,2,3,4,5]
let x = trans $ fromLists [[1,2,3,4,5], [1,1,1,1,1]]
let x3 = fromLists [[1,1], [2,1], [3,1], [4,1], [5,1]]
print $ x == x3
print $ multifit x y
print $ multifit x3 y
Run Code Online (Sandbox Code Playgroud)
所以我只是编译它并运行它,我得到:
True
(fromList [0.6121951219512196,0.39756097560975645],(2><2)
[ 0.5100317271465397, -0.46568114217727535
, -0.46568114217727535, 0.82048582193139 ],27.27560975609756)
(fromList [1.0000000000000002,-8.881784197001252e-16],(2><2)
[ 2.1364982849735737e-32, -6.40949485492072e-32
, -6.40949485492072e-32, 2.350148113470931e-31 ],6.409494854920721e-31)
Run Code Online (Sandbox Code Playgroud)
我错过了一些完全明显的东西吗
这似乎很简单,但我似乎无法弥补这最后的差距.我最近添加GSL通过我的Heroku的基于应用程序的Heroku buildpack为GSL /红宝石.buildpack和相关的GSL gem似乎都按照下面的缩写推送输出正常安装:
$git push staging master
Fetching repository, done.
Counting objects: 7, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 476 bytes, done.
Total 4 (delta 3), reused 0 (delta 0)
-----> Fetching custom git buildpack... done
-----> Ruby app detected
-----> Compiling Ruby/Rails
-----> Using Ruby version: ruby-1.9.3
-----> Installing gsl
-----> Installing dependencies using 1.5.2
Running: bundle install --without development:test --path vendor/bundle --binstubs …Run Code Online (Sandbox Code Playgroud) 我需要在运行Rails(4.0.2)应用程序的Heroku上安装GSL库,以使用一些依赖它的gem.
目标: 安装GSL库以在Heroku中使用GSL和相似性宝石.
尝试的方法:
我尝试过这些步骤(编译二进制文件):
cd gsl-1.15./configuremake cleanmakesudo make install它适用于我的本地环境,但不适用于Heroku.Heroku不允许sudo但允许访问heroku run.问题是文件系统是短暂的,dyno只会在你的控制台会话中存在.
更新:
我也尝试构建自己的Heroku Buildpack但我无法使其工作.我尝试过使用multipacks.我不是Heroku Buildpack专家所以也许这就是问题所在,我正在学习更多关于它的一个简单的存储库,其中包含一个示例和对此问题的扩展解释.
我需要从n + 1个数据点获得n度函数.通过使用以下gnuplot脚本,我得到了正确的拟合:
f(x) = a + b*x + c*x**2 + d*x**3 + e*x**4 + f*x**5 + g*x**6 + h*x**7 + i*x**8 + j*x**9 + k*x**10 + l*x**11 + m*x**12
# Initial values for parameters
a = 0.1
b = 0.1
c = 0.1
d = 0.1
e = 0.1
f = 0.1
g = 0.1
h = 0.1
i = 0.1
j = 0.1
k = 0.1
l = 0.1
m = 0.1
# Fit f to the following …Run Code Online (Sandbox Code Playgroud) 我在docker镜像中运行alpine并运行ruby代码.这成功安装了所有软件包,但在我尝试使用gsl时失败了.
这是Dockerfile:
FROM alpine:3.4
RUN apk upgrade --update \
&& apk add libatomic readline readline-dev libxml2 libxml2-dev \
libxslt libxslt-dev zlib-dev zlib ruby yaml \
yaml-dev libffi-dev build-base git nodejs \
ruby-io-console ruby-irb ruby-json ruby-rake \
make gsl gsl-dev \
gcc g++ libffi-dev ruby-dev tzdata
RUN gsl-config --cflags
RUN gem install --no-document nmatrix gsl
ADD scripts/gsl-test.rb test.rb
RUN ruby test.rb
Run Code Online (Sandbox Code Playgroud)
测试文件是:
require 'gsl'
Run Code Online (Sandbox Code Playgroud)
运行docker build.产生以下输出:
Sending build context to Docker daemon 20 MB
Step 0 : FROM alpine:3.4
---> ad84c222f6a3 …Run Code Online (Sandbox Code Playgroud)