我想创建一个列表,其元素表示
给出的逻辑映射x_{n+1} = a*x_n(1-x_n)
我尝试了以下代码(手动添加内容而不是For循环):
x0 = Input["Enter x0"]
a = Input["a"]
M = {x0}
L[n_] := If[n < 1, x0, a*M[[n]]*(1 - M[[n]])]
Print[L[1]]
Append[M, L[1]]
Print[M]
Append[M, L[2]]
Print[M]
输出如下:
0.3
2
{0.3}
0.42
{0.3,0.42}
{0.3}
Part::partw: Part 2 of {0.3`} does not exist. >>
Part::partw: Part 2 of {0.3`} does not exist. >>
{0.3, 2 (1 - {0.3}[[2]]) {0.3}[[2]]}
{0.3}
似乎在Append [M,L [2]]中调用函数定义时,L [2]在M的旧定义中调用M [[2]],这显然不存在。
如何让L使用更新,更大版本的M?
执行此操作后,我可以使用For循环生成整个列表,直到某个索引。
P.S。我为糟糕的格式道歉,但我可以找到如何使Latex代码在这里工作。
其他小问题:函数和列表的允许名称是什么?姓名中是否允许使用下划线?
答案 0 :(得分:3)
我觉得你好像在试图计算
的结果FixedPointList[a*#*(1-#)&, x0]
注意:
FixedPointList
就是一个。#
和&
等符号的解释。这些都包含在文档中,它解释了比我更好的事情以及你应该熟悉的事情。Blank
符号的缩写形式。哦,LaTeX格式在这里不起作用,但Mathematica代码足够可读。
答案 1 :(得分:1)
似乎在调用函数定义时 追加[M,L 2],L 2在旧的M定义中调用M [2], 显然不存在。
如何让L使用更新,更大版本的M?
M
永远不会在此更新。 Append
不修改您传递给它的参数;它返回数组的连接值。
所以,以下代码:
A={1,2,3}
B=Append[A,5]
最终会以B={1,2,3,5}
和A={1,2,3}
结束。 A
未修改。
分析你的输出,
0.3 // Output of x0 = Input["Enter x0"]. Note that the assignment operator returns the the assignment value.
2 // Output of a= Input["a"]
{0.3} // Output of M = {x0}
0.42 // Output of Print[L[1]]
{0.3,0.42} // Output of Append[M, L[1]]. This is the *return value*, not the new value of M
{0.3} // Output of Print[M]
Part::partw: Part 2 of {0.3`} does not exist. >> // M has only one element, so M[[2]] doesn't make sense
Part::partw: Part 2 of {0.3`} does not exist. >> // ditto
{0.3, 2 (1 - {0.3}[[2]]) {0.3}[[2]]} (* Output of Append[M, L[2]]. Again, *not* the new value of M *)
{0.3} // Output of Print[M]
此处的简单修复是使用M=Append[M, L[1]]
。
要在单个for循环中执行此操作:
xn=x0;
For[i = 0, i < n, i++,
M = Append[M, xn];
xn = A*xn (1 - xn)
];
更快的方法是使用NestList[a*#*(1-#)&, x0,n]
作为上面Mark提到的方法的变体。
此处,表达式a*#*(1-#)&
基本上是anonymous function(#
是其参数,&
是将其括在Function[]
中的简写。 NestList
方法将函数作为一个参数,并以x0
开始递归地应用它,用于n
次迭代。
其他小问题:函数和列表的允许名称是什么?姓名中是否允许使用下划线?
没有下划线,它们用于模式匹配。否则变量可以包含字母和特殊字符(如theta和all),但没有在mathematica中有意义的字符(括号/大括号/括号,at符号,哈希符号,&符号,句点,算术符号,下划线)等)。它们可能包含一个美元符号,但最好不以一个开头(这些通常保留给系统变量和所有,但是你可以定义一个以美元符号开头的变量而不会破坏任何东西)。