Wolfram mathematica 数学;将Nsolve的解决方案转换为列表
我用mathematica的solve解一个多项式。解决此问题时,Nsolve通常会提供如下解决方案: {x->1},{x->2},{x->3},{x->4} 但是,我需要将此输出转换为数字列表,因此它看起来像: {1,2,3,4}Wolfram mathematica 数学;将Nsolve的解决方案转换为列表,wolfram-mathematica,Wolfram Mathematica,我用mathematica的solve解一个多项式。解决此问题时,Nsolve通常会提供如下解决方案: {x->1},{x->2},{x->3},{x->4} 但是,我需要将此输出转换为数字列表,因此它看起来像: {1,2,3,4} 我该怎么做?必须有一个简单的方法。你有一个列表{{x->1},{x->2},{x->3},{x->4}如果你想对列表中的每个项目做同样的事情,你想用n替换{x->n} 在Mathematica中,这是一件非常常见的事情。有一个函数Map,它接受一个函数和一个列表,并
我该怎么做?必须有一个简单的方法。你有一个列表
{{x->1},{x->2},{x->3},{x->4}
如果你想对列表中的每个项目做同样的事情,你想用n
替换{x->n}
在Mathematica中,这是一件非常常见的事情。有一个函数Map
,它接受一个函数和一个列表,并对列表中的每个项目执行该函数。您可以在帮助页面中查找Map
,并尝试理解它
您的列表中有规则
。因此,您拥有的是{{Rule[x,1]},{Rule[x,2]},{Rule[x,3]},{Rule[x,4]}
,Mathematica将其缩写为{x->1}
,等等。您可以在帮助系统中查找Rule
,并尝试理解它
让我们来看看做你想做的事情的一种方法
sol = {{x -> 1}, {x -> 2}, {x -> 3}, {x -> 4}};
f[r_] := ReplaceAll[x, r];
Map[f, sol]
它定义了一个函数f
,该函数使用ReplaceAll
函数和x
以及一个单独的规则来替换x
中的所有x
,并且只有一个具有该规则中的值。然后,Map
会反复执行此操作,直到它处理完列表中的所有项目。结果是{1,2,3,4}
,这就是您想要的
现在,Mathematica的文化是,你尝试缩写一切,你总是尝试使用一些标点符号,而不是使用函数名。对于新用户来说,这可能很难理解。这里有一种不同的方式,用户可以用它来代替
x/.#&/@{{x -> 1}, {x -> 2}, {x -> 3}, {x -> 4}}
这会给你同样的结果。您可以在帮助系统中查找/.
和#
和&
和/@
,并尝试理解这些内容
在数学中,几乎总是有十几种不同的方法来完成任何事情。其中至少有几个几乎完全无法理解。如果可以的话,选择一种你认为自己能理解并能记住和使用的方式,而不会犯太多错误。但这似乎成了一场竞赛,看谁能用更少的字符完成某件事,或者谁能在几秒钟内完成这项任务。只需执行以下命令即可
sol = {{x -> 1}, {x -> 2}, {x -> 3},{x -> 4}}
x /. sol
结果将显示为预期的简单规则替换:x/{{{x->1},{x->2},{x->3},{x->4}
给出{1,2,3,4}