Function 如何从Mathematica中用于初始化数组的函数返回值
在本例中,我试图创建一个长度为5的数组,其中每个元素包含次数。3的总和不超过1。i、 e.3次。所以每个元素都应该包含数字3。这是我的密码:Function 如何从Mathematica中用于初始化数组的函数返回值,function,math,wolfram-mathematica,Function,Math,Wolfram Mathematica,在本例中,我试图创建一个长度为5的数组,其中每个元素包含次数。3的总和不超过1。i、 e.3次。所以每个元素都应该包含数字3。这是我的密码: Array[( workingCount = 0; workingSum = 0; done = false; While[! done, workingSum = workingSum + .3; If[workingSum > 1, done = true; workingCount, workingCoun
Array[(
workingCount = 0;
workingSum = 0;
done = false;
While[! done,
workingSum = workingSum + .3;
If[workingSum > 1, done = true; workingCount, workingCount++]
])
, 5]
在第三行到最后一行,我有工作计数
,没有因为在Mathematica中似乎省略了代码>导致返回语句解析的值
相反,我得到的是:
{Null[1], Null[2], Null[3], Null[4], Null[5]}
为什么会发生这种情况?我怎样才能让我的程序做我想做的事情?i、 在传递给数组以初始化其元素的函数的上下文中,如何使用复杂的多行函数
提前谢谢 您的问题来自这样一个事实,即您试图初始化数组,但却试图在没有显式函数调用的情况下进行初始化—这正是您需要做的
有关Mathematica中数组的文档,请参见此处:
除此之外,还有一些小错误(True和False必须大写),这就是您要做的:
f[x_] :=
(
workingCount = 0;
workingSum = 0;
done = False;
While[done != True, workingSum = workingSum + 0.3;
If[workingSum > 1, done = True, workingCount++]
];
Return[workingCount];
);
Array[f, 5] (* The array here is generating 5 values of the return value of f[x_] *)
两件事:
首先,在Mathematica中实现这一点的一种方法是
Array[
Catch[
workingCount = 0;
workingSum = 0;
done = False;
While[! done,
workingSum = workingSum + .3;
If[workingSum > 1,
done = True; Throw@workingCount,
workingCount++]]] &,
5]
第二,也是最重要的:在Mathematica中,你永远不应该这样做!真的
例如,请访问,并阅读那里的问题和答案,以掌握编程风格。而且,我忘了提到,在您的情况下,您需要返回语句,这就是数组中填充空值的原因。或者,您可以使用@belisarius.Ah建议的匿名函数(与符号),而不是我向您展示的命名函数!我明白你在说什么了,贝里萨利斯。抢手货编辑。