相关疑难解决方法(0)

Mathematica中的树数据结构

我主要使用mathematica作为数学工作台,并编写相对较小的ad-hoc程序.然而,我正在设计一个我打算在Mathematica中编程的系统.我需要将数据存储在树中,并搜索和遍历树.虽然我知道如何实现树,但我更喜欢标准的,经过测试的代码.我在Mathematica用户维基上查看了基本数据结构的类型.我没有找到,尽管Mathematica文档中有一个小例子.

现在问我的问题:

  1. 是否有可用的数据结构(开源)包?

  2. 您在数据结构方面使用了什么方法?逐步开发自己的util包?

(这不是一个问题,只是一个评论.也许......缺乏(大量可用的)开源软件包是Mathematica没有应有的动力的原因.我害怕鸡/蛋问题.)

wolfram-mathematica

39
推荐指数
2
解决办法
9412
查看次数

Mathematica编辑器:当左侧'['被删除时,自动删除正确的匹配']'?

在Mathematica编辑器(即笔记本)中,我总是发现最困难的事情之一是当我想要编辑一些长表达式时,在我有机会删除右边之前去除左边的"["某个表达式" ]",单元格中的代码将变得混乱,因为它不再平衡,使得很难追逐,现在悬挂,右端"]"因为它不再在原来的位置!

这是一个简单的例子,假设我们有这个

Text[Row[{PaddedForm[currentTime, {6, 3}, NumberSigns -> {"", ""}, NumberPadding -> {"0", "0"}]}]]
Run Code Online (Sandbox Code Playgroud)

现在说我想删除外部Text []调用.所以我删除了"Text [",在我有机会删除另一方"]之前,笔记本现在会把所有东西都放在一边,很难找到合适的"]".对于长单元(这是demonestrations工作的情况),代码可以大量移动,右边的"]"也可以不在视图中,必须向下滚动并向上查找它.

有没有办法通过选项等设置它,这样当我删除左边的"["时,Mathematica会自动删除匹配的右边"]"?这也适用于"("和")".

对我来说,使用笔记本编辑器确实是个大问题.不能告诉你我花了多少时间看着悬挂的"]".

谢谢 - 纳瑟

wolfram-mathematica

13
推荐指数
2
解决办法
999
查看次数

如何动态生成mathematica代码?

我想在mma中制作一个迷你编程语言.从文本文件到包中的模块.理想情况下,我应该能够通过另一个包中的函数从Mathematica中生成包和模块.

问题:这可能吗?我正在寻找一个参考或一个例子来启动它.

编辑:例如:

想象一下具有n个整数类型寄存器的存储体.

说明是:

1 Z(n)

2 C(m,n)

3 J(m,n,q)

4 S(n)

每行都有一个地址.第一行1,第二行2等.Z(n)在寄存器n中存储0.寄存器n中的寄存器m的C(m,n)存储值.J(m,n,q)如果值寄存器m等于寄存器n的值则跳转到地址q的行.S(n)将n加1到寄存器n中的值.

然后给出两个工作程序P和QI想要生成连接程序P + Q.

然后给出两个工作程序P和QI想要在P之后生成替换Q.

最后,我想开始尝试递归...这个'迷你项目'的目的.

wolfram-mathematica

10
推荐指数
1
解决办法
1541
查看次数

面向对象的数学编程

我想知道如何一般地做到这一点,最好的策略是什么等等.我已经看到了一些解决方案,其中一些看起来非常难/乏味.我工作的那个使用纯函数来实现对象函数和头像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
查看次数

标签 统计

wolfram-mathematica ×4