Wolfram mathematica 数学;将Nsolve的解决方案转换为列表

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,它接受一个函数和一个列表,并

我用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
,它接受一个函数和一个列表,并对列表中的每个项目执行该函数。您可以在帮助页面中查找
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}