标签: ilnumerics

如何在ILCube中保持形状

我想用ILNumerics绘制一些3D表面.我注意到,如果我旋转它,ILCube不会保持表面的形状,这是因为它试图使立方体适合ILPanel.但是,如果我使用ILCamera,它将保持形状,但周围没有立方体.这是一个例子,

private void ilPanel1_Load(object sender, EventArgs e)
{
    var scene = new ILScene();
    ILArray<float> A = ILSpecialData.torus(0.75f, 0.25f);
    var sf = new ILSurface(A);
    var pc = new ILPlotCube();
    pc.TwoDMode = false;
    scene.Add(pc);
    pc.Add(sf);
    sf.Colormap = Colormaps.Jet;
    var cb = new ILColorbar();
    cb.Location = new PointF(1, .1f);
    sf.Children.Add(cb);
    ilPanel1.Scene = scene;
}
Run Code Online (Sandbox Code Playgroud)

结果是

在此输入图像描述

而对于ILCamera

private void ilPanel1_Load(object sender, EventArgs e)
{
    var scene = new ILScene();
    ILArray<float> A = ILSpecialData.torus(0.75f, 0.25f);
    var sf = new ILSurface(A);
    var cam = scene.Camera;
    cam.Add(sf); …
Run Code Online (Sandbox Code Playgroud)

c# 3d plot numeric ilnumerics

7
推荐指数
1
解决办法
514
查看次数

初学者ILNumerics:在VS2012下安装

我对ILNUmerics非常感兴趣,想尝试免费版,但我遇到了麻烦.

我已经开始使用控制台应用程序,并试图运行'hello ilnumerics'console应用程序,但我注意到VS无法找到MKL库.

我在Windwos 8下使用VS2012(在2010年中期的MacBook Pro上通过Bootcamp;它是否相关); 我已从Project解决方案中安装了NuGet Packages扩展.然后右键单击解决方案资源管理器中的引用,"管理Nu获取包",在线/搜索各种版本的ilnumerics.我选择'ILNumerics'并安装.我将'ILNumerics'和'ILNumerics.Native'添加到我的项目中.然后我可以在解决方案资源管理器中的"引用"下看到ILNumerics并获得两个新文件夹/ bin32 /和/ bin64 /它们都包含两个名为libiomp5md.dll和mkl_custom.dll的DLL.我检查了他们的'复制到输出目录'属性,他们都设置为'复制如果更新'.

显然找不到mkl_custom.我从快速入门指南中编写了以下代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ILNumerics;

namespace ConsoleApplication3
{

  class Program  : ILMath
{
    static void Main(string[] args)
    {

        ILArray<double> A = array<double>
            (new double[] { 1,1,1,1,1,2,3,4,1,3,6,10,1,4,10,20} ,4, 4);
        ILArray<double> B = counter(4, 2);

        ILArray<double> Result = linsolve(A, B);
        Console.Out.WriteLine("A: " + Environment.NewLine +
                A.ToString());

            Console.Out.WriteLine("B: " + Environment.NewLine + B.ToString());

            Console.ReadKey();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到此异常:ILNumerics.dll中出现未处理的"System.DllNotFoundException"类型异常

附加信息:无法加载DLL'mkl_custom':找不到指定的模块.(来自HRESULT的异常:0x8007007E)

如果我不调用linsolve,ILArray的ToString方法确实有效:如果我发表评论// ILArray Result = …

c# visual-studio-2012 ilnumerics

5
推荐指数
1
解决办法
1716
查看次数

ILNumerics 在向量上的简单数学运算与系统数组和 Math.NET 的性能对比

我最近正在研究 C# 中的数值算法。因此我做了一些实验来寻找最适合.NET 的数学库。我经常做的一件事是评估目标函数,这些函数通常是将向量作为输入并返回向量作为输出的函数。我比较了 ILNumerics、系统数组和 Math.NET 中相同目标函数的实现。ILNumerics 的语法确实使其脱颖而出,因为它类似于 MatLab 和 R 的冗长数学公式。然而,我发现对于相同数量的评估,ILNumerics 似乎比 Math.NET 的任何一个系统数组花费的时间都要长得多。下面是我用来比较的代码。我在这里不做任何线性代数,只是纯粹将数学公式应用于长向量。

[Test]
public void TestFunctionEval()
{
    int numObj = 2;
    int m = 100000;
    Func<double[], double[]> fun1 = (x) =>
    {
        double[] z = new double[numObj];
        z[0] = x[0];
        double g = 1.0;
        for (int i = 1; i < x.Length; i++)
            g = g + 9.0 * x[i] / (m - 1);
        double h = 1.0 - Math.Sqrt(z[0] / g);
        z[1] = g * h; …
Run Code Online (Sandbox Code Playgroud)

c# numerical ilnumerics math.net

3
推荐指数
1
解决办法
2996
查看次数

将C#'using'关键字转换为F#

在尝试将以下C#代码翻译为F#时,我正在努力使用'using'关键字.以下代码段来自ILNumerics库.如何翻译以下内容?

ILRetArray<double> ObjFuncBFGS2D(ILInArray<double> X) {
    using (ILScope.Enter(X)) {
        return X[0] * X[0] + X[1] * X[1] + 2; 
    }
} 
Run Code Online (Sandbox Code Playgroud)

另外,F#人们倾向于使用哪些库进行优化?我一直在使用NLoptNet,但是在Matlab,Julia和Python中正确收敛的例程存在非常奇怪的收敛问题.所以问题在于我的F#翻译(更有可能授予)或优化库.这是我希望确定的.坦率地说,我对互联网上缺乏与F#相关的数值优化材料感到有些惊讶.

f# c#-to-f# ilnumerics

3
推荐指数
1
解决办法
183
查看次数

F# 和 ILNumerics

我刚刚下载了 ILNumerics 的最新版本,可用于我的 F# 项目。是否可以在 F# 中利用这个库?我尝试过简单的计算,但看起来很麻烦(在 F# 中)。

我想设置一个有约束(甚至无约束)的优化问题。通常的 Rosenbrock 函数会做,然后我将使用我自己的函数。我什至很难定义一个数组。我可以定义的唯一类型的数组是 RetArray,例如使用此代码

let vector = ILMath.vector<float>(1.0, 2.0)
Run Code Online (Sandbox Code Playgroud)

编译器表示 vector 是一个 RetArray;我认为这是因为它是从函数返回的(即:ILMath.vector)。如果我定义另一个类似的向量,我可以 -eg- 求和向量,简单地写,例如

let a = ILMath.vector<float>(1.0, 2.0)
let b = ILMath.vector<float>(3.2,2.2)
let c = a  + b 
Run Code Online (Sandbox Code Playgroud)

我得到

RetArray<float> = seq [4.2; 4.2]
Run Code Online (Sandbox Code Playgroud)

但是如果我尝试检索 c 的值,再次写入,例如在 FSI 中,

c;;
Run Code Online (Sandbox Code Playgroud)

我得到

错误:未将对象引用设置为对象的实例。

在 F# 中使用 ILNumerics 的建议方法是什么?是否可以在 F# 中本地使用该库,或者我被迫从 C# 库调用我的 F# 代码以使用整个 ILNumerics 库?除了引用的问题之外,当我在 F# 中移植时,我在理解 ILNumerics 的基本逻辑方面存在问题。

例如,示例代码中使用作用域的 C# 的 F# 等效项是什么,如下所示:

using (ILScope.Enter(inData)) { ...

}
Run Code Online (Sandbox Code Playgroud)

optimization f# numerical-analysis ilnumerics

2
推荐指数
1
解决办法
77
查看次数

如何获得 2 的下一个更高的幂?

我想将以下 Matlab 代码转换为 C#:

nfft=2^nextpow2(nn);
Run Code Online (Sandbox Code Playgroud)

其中NEXTPOW2(N)表示 Matlab 中 2 的下一个更高的幂。

那么我们如何自己用C#代码或者借助ilnumerics Lab来实现同样的功能呢?

c# matlab ilnumerics

0
推荐指数
1
解决办法
2893
查看次数

ILNumerics Library中"(!0)"的含义是什么?

ILNumerics中"(!0)"的含义就像这样

return (!0)ILMathInternal.exp(this.m_mu);
Run Code Online (Sandbox Code Playgroud)

并且像这样,

return 0.5 + (!0)ILMathInternal.log(this.m_sigma) + this.m_mu + (!0)ILMathInternal.log(ILMathInternal.sqrt(2.0 * ILMathInternal.pi));
Run Code Online (Sandbox Code Playgroud)

为什么我们使用这种表达式 - "(!0)"?

c# ilnumerics

0
推荐指数
1
解决办法
89
查看次数