Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wolfram mathematica 如何使函数使用Mathematica中列表的修改版本?_Wolfram Mathematica - Fatal编程技术网

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]
注:

  • 在Mathematica中,无论是使用循环还是其他构造,逐个元素构建列表几乎总是一个坏主意。要有效地使用系统,您需要学习一些基本的功能结构,其中
    FixedPointList
    就是其中之一
  • 我没有提供任何关于我使用的函数的解释,也没有解释诸如
    #
    &
    等符号的解释。这些都包含在文档中,文档比我能更好地解释问题,您应该熟悉这些文档
  • Mathematica允许使用字母数字(仅限)名称,且名称必须以字母开头。当然,数学可以识别许多Unicode字符,而不是英语字母表中的26个字母。按照惯例(仅限)内部名称以大写字母开头,您自己的名称以小写字母开头
  • 下划线绝对不允许出现在Mathematica名称中,它作为
    空白
    符号的缩写形式有一种特定且广泛使用的解释
  • 哦,LaTeX格式在这里不起作用,但是Mathematica代码足够可读

    似乎在调用函数定义时 追加[M,L],L在M的旧定义中调用M[], 这显然是不存在的

    我怎样才能让我使用更新更大版本的M

    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)
    
    ];