Wolfram mathematica 如何使函数使用Mathematica中列表的修改版本?
我想制作一个列表,其中的元素表示Wolfram mathematica 如何使函数使用Mathematica中列表的修改版本?,wolfram-mathematica,Wolfram Mathematica,我想制作一个列表,其中的元素表示 x_{n+1} = a*x_n(1-x_n) 我尝试了以下代码(手动添加内容而不是For循环): 似乎,当在Append[M,L[2]]中调用函数定义时,L[2]正在调用M的旧定义中的M[[2]],这显然是不存在的 我怎样才能让我使用更新更大版本的M 完成此操作后,我可以使用For循环生成整个列表,直至某个索引 另外,我为糟糕的格式表示歉意,但我可以在这里找到如何使Latex代码工作的方法 其他小问题:函数和列表的允许名称是什么?名称中是否允许使用下划线?在我
x_{n+1} = a*x_n(1-x_n)
我尝试了以下代码(手动添加内容而不是For循环):
似乎,当在Append[M,L[2]]中调用函数定义时,L[2]正在调用M的旧定义中的M[[2]],这显然是不存在的
我怎样才能让我使用更新更大版本的M
完成此操作后,我可以使用For循环生成整个列表,直至某个索引
另外,我为糟糕的格式表示歉意,但我可以在这里找到如何使Latex代码工作的方法
其他小问题:函数和列表的允许名称是什么?名称中是否允许使用下划线?在我看来,您似乎在试图计算
FixedPointList[a*#*(1-#)&, x0]
注:
FixedPointList
就是其中之一#
和&
等符号的解释。这些都包含在文档中,文档比我能更好地解释问题,您应该熟悉这些文档空白
符号的缩写形式有一种特定且广泛使用的解释M
从未在此处更新<代码>追加不会修改传递给它的参数;它返回数组的串联值
因此,以下代码:
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)
];
xn=x0;
对于[i=0,i
更快的方法是使用NestList[A*#*(1-#)和x0,n]
作为上述Mark所述方法的变体
这里,表达式a*#*(1-#)和
基本上是一个(#
是它的参数,&
是将它包含在函数[]
中的缩写)。该方法将函数作为一个参数,并从x0
开始递归地应用它,用于n
迭代
其他小问题:函数和列表的允许名称是什么?名称中是否允许使用下划线
没有下划线,它们用于模式匹配。否则,变量可以包含字母表和特殊字符(如θ和all),但不能包含在mathematica中有意义的字符(括号/大括号/括号、at符号、哈希符号、符号、句点、算术符号、下划线等)。它们可能包含一个美元符号,但最好不要以一个美元符号开头(这些符号通常是为系统变量和所有变量保留的,尽管您可以定义一个以美元符号开头的变量,而不破坏任何符号)。哦,FixedPointsList函数非常有用。然而,我想使用这个算法/想法,并将其扩展到最终答案不是固定点的情况。例如,在区域3中,查看
折叠
,嵌套
,地图
,等等。我已经阅读了Mathematica参考网上的文档。下面是描述:Append[expr,elem],给出了expr中附加了elem。我认为这意味着在“expr”之后附加“elem”。谢谢你澄清了这一困惑。@varun如果你是MMA新手,我建议你阅读,尤其是(在这种情况下)。Mathematica比循环更倾向于函数编程、递归和列表迭代,因此默认情况下,除非明确指定,否则函数不会修改其参数。
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]
xn=x0;
For[i = 0, i < n, i++,
M = Append[M, xn];
xn = A*xn (1 - xn)
];