小编zor*_*ank的帖子

面向对象的数学编程

我想知道如何一般地做到这一点,最好的策略是什么等等.我已经看到了一些解决方案,其中一些看起来非常难/乏味.我工作的那个使用纯函数来实现对象函数和头像OBJECT [].在类编码方面使用起来非常困难.在定义函数和构造函数时(特别是继承部分很难),我感到头晕目眩.

因此,我的问题的编码是关于类的编码部分的优点.理想情况下,我正在寻找可以如下工作的东西.首先,我们定义一个类,例如汽车如下:

beginClass["vehicle"];
   public startTheEngine;
   private fuel;
   vehicle[args_]:=Block[{},...];
   startTheEngine[thrust_]:=Block[{}...];
endClass

beginClass["car", "vehicle"];
public TurnTheRadioOn;
private frequency;
car[args_] := Block[{...},];
TurnTheRadioOn[]:=
   Block[{},
      use private variable frequency
   ]
endClass;
Run Code Online (Sandbox Code Playgroud)

请注意,私有/公共函数的定义几乎与"普通"mathematica代码一样非常重要.这就是主要要求.

该课程将被用作

car1 = newObject["car", args];
car1.StartTheEngine[];
car1.TurnOnTheRadio[];
Run Code Online (Sandbox Code Playgroud)

我很好奇那个人要考虑什么?为了构建像上面这样的东西可能涉及Mathematica的许多方面,例如如何修复".".语法等.如果您建议现有的软件包,我将不胜感激,如果您可以原则上评论它是如何工作的.

我天真的期望是封装部分可以通过BeginPackage结构修复.所有对象都可以存储在专门为每个类设计的名称空间中.我认为对象看起来像

car1 = OBJECT["car"][fuel$1,frequency$1,....];
car2 = OBJECT["car"][fuel$2,frequency$2,....];
Run Code Online (Sandbox Code Playgroud)

我认为必须构建类似编译器的东西,将上面的类定义代码转换为类.m文件.此外,在某种程度上,第二个主要问题是如何构建这样的编译器.

关心佐兰

ps我之所以问这个问题,是因为我真的需要多次这样的东西.

wolfram-mathematica

10
推荐指数
2
解决办法
9144
查看次数

从稀疏定义列表中挑选无模式下值的算法

我有以下问题.

我正在开发一个随机模拟器,它随机对系统的配置进行采样,并存储在某些时间点访问每个配置的次数的统计数据.大致代码就像这样工作

f[_Integer][{_Integer..}] :=0
...
someplace later in the code, e.g.,
index = get index;
c = get random configuration (i.e. a tuple of integers, say a pair {n1, n2}); 
f[index][c] = f[index][c] + 1;
which tags that configuration c has occurred once more in the simulation at time instance index.
Run Code Online (Sandbox Code Playgroud)

一旦代码完成,就会有一个f的定义列表,看起来像这样(我手工输入它只是为了强调最重要的部分)

?f
f[1][{1, 2}] = 112
f[1][{3, 4}] = 114
f[2][{1, 6}] = 216
f[2][{2, 7}] = 227
...
f[index][someconfiguration] = some value
...
f[_Integer][{_Integer..}] :=0
Run Code Online (Sandbox Code Playgroud)

请注意,首先出现的无模式定义可能相当稀疏.也无法知道将挑选哪些值和配置.

问题是有效地提取所需索引的值,例如问题

result …
Run Code Online (Sandbox Code Playgroud)

wolfram-mathematica

6
推荐指数
2
解决办法
344
查看次数

标签 统计

wolfram-mathematica ×2