ToString[i] = i*2, {i, 1, 20}] 从哪里获得F1 = 2,F2 = 4,F3 = 6,...等等。 -6ren">
gpt4 book ai didi

variables - 如何保存多个变量与数学的迭代的名字吗?

转载 作者:行者123 更新时间:2023-12-04 18:47:33 30 4
gpt4 key购买 nike

我想创建一个在数学,这样的事情重复名称的多个变量:

Do["f" <> ToString[i] = i*2, {i, 1, 20}]

从哪里获得F1 = 2,F2 = 4,F3 = 6,...等等。

我的错误:

Set::write: Tag StringJoin in f<>1 is Protected. >>



任何帮助都会很棒。谢谢!

最佳答案

为此,您需要评估 "f" <> ToString[i]之前的表达式 Set ( = ) 看到它,或者您尝试分配给带有 head StringJoin 的对象,正如错误消息试图告诉您的那样。此外,您不能对字符串进行赋值,因此您需要使用(惊喜)Symbol 将其转换为符号。 .一种方法是使用 Evaluate :

Do[Evaluate[Symbol["f" <> ToString[i]]] = i*2, {i, 1, 20}]

{f1, f2, f17}

{2, 4, 34}



然而,这对于 Mathematica 来说通常不是一个好的行动方案。例如,如果这些符号中的任何一个已经存在并且具有分配的值,则操作将失败。如 How to Block Symbols without evaluating them? 的答案所示,人们可以更加努力地解决这个问题。 (或更具体地说,在 my answer here 中)但同样,这通常不是一个好的行动方案。

正常的方法是使用 indexed objects正如台球王子所展示的那样。

请查看 this question ,它的答案,以及在它下面的评论中链接的四个相关问题,以了解有关该主题的更多信息。

关于variables - 如何保存多个变量与数学的迭代的名字吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11783760/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com