Wolfram mathematica 如何在Mathematica中找到数组中的最大正值?

Wolfram mathematica 如何在Mathematica中找到数组中的最大正值?,wolfram-mathematica,Wolfram Mathematica,我有一个表达式数组,每个表达式都依赖于a 我想找到最小正值,因为它取决于a,而不必替换a 例如,如果数组是[a^2,1-2a,1],那么函数call itMinPositive将返回: (MinPositive[a^2, 1-2a, 1]) /. a-> 0 0 (MinPositive[a^2, 1-2a, 1]) /. a-> 0.7 0.7^2 等等 有什么想法吗 我希望您能帮助我编写MinPositive函数,例如,它可以用来代替常规的Min函数 谢谢。表达方式 [a

我有一个表达式数组,每个表达式都依赖于
a

我想找到最小正值,因为它取决于
a
,而不必替换a

例如,如果数组是
[a^2,1-2a,1]
,那么函数call it
MinPositive
将返回:

(MinPositive[a^2, 1-2a, 1]) /. a-> 0

0

(MinPositive[a^2, 1-2a, 1]) /. a-> 0.7

0.7^2
等等

有什么想法吗

我希望您能帮助我编写
MinPositive
函数,例如,它可以用来代替常规的
Min
函数

谢谢。

表达方式

[a^2, 1-2a, 1]
也许你的意思是,这不是一个格式良好的数学表达式

{a^2, 1-2a, 1}
这是包含3个元素的列表的有效表达式。Mathematica实际上并没有这样做数组,尽管列表通常可以用来为数组建模

另一方面,表达

MinPositive[a^2, 1-2a, 1]
是对名为
MinPositive
且具有3个参数的函数的有效调用

从一方面来说,我认为您可能正在寻找一个函数调用,例如

MinPositive[{a^2, 1-2a, 1}/.a->0]
其中,
0
的值将在对
MinPositive
的调用中替换为
a
,但不会应用于该调用之外

您的问题不清楚您是否需要帮助来编写
MinPositive
函数;如果你这样做了,编辑你的问题并把它弄清楚。此外,您的问题标题要求的是最大正值,而您的问题主体是最小值。你可能也想解决这个问题

编辑

我没有在这台机器上安装Mathematica,所以我没有检查它,但它应该足够近,您可以完成:

minPositive[lst_List] := Min[Select[lst,#>0&]]
你会这样称呼它

minPositive[{a^2, 1-2a, 1}]
(注意:我避免创建名称首字母大写的函数。)

或者,考虑到你的评论,也许你想要

minPositive[lst_List, rl_Rule] := Min[Select[lst/.rl,#>0&]]
你会这样称呼它:

minPositive[{a^2, 1-2a, 1},a->2]
编辑2

麻烦,对你来说,用这样的表达

(MinPositive[a^2, 1-2a, 1]) /. a-> 0

Mathematica中的正常求值循环将导致在应用替换规则之前对
MinPositive
函数求值。那么,当
a
被设置为特定值时,Mathematica如何计算出列表中的最小正值呢?

您有这样的想法吗?返回在最小值中重新生成的表达式

minp[lst_, a_, v_] := (
     pos = Select[lst, ((# /. a -> v) > 0) &];
     Last@Sort[pos , ( (#1 /. a -> v ) > (#2 /. a -> v )) &])


minp[{a^2, 1 - 2 a, 1}, a, .2]  -> a^2
minp[{a^2, 1 - 2 a, 1}, a, .48]  -> 1-2 a
minp[{a^2, 1 - 2 a, 1}, a, 2]   -> 1

通过将函数的属性设置为HoldAll(防止对所有参数进行求值)、HoldFirst(仅防止对第一个参数进行求值)或HoldRest(防止对第一个参数以外的所有参数进行求值),可以在调用函数体之前防止对参数进行求值。 此外,由于“a”本身不是参数,所以需要使用Block将其与“a”的(潜在)定义隔离

所以

即使您显式地将a设置为其他值

a=3

按预期返回9


耶胡达

谢谢。实际上,我不想在调用中应用替换,而是希望它像Min函数一样,在实际计算表达式时,根据需要替换它。是的,我确实需要有关MinPositive函数的帮助。但是使用
/。
确实可以在实际计算表达式时按需替换。我现在非常不确定你在这方面想要什么。谢谢!我希望能够整合到MinPositive之上,这就是为什么我希望它被整合机制“按需”取代。哦,我认为你的答案是合理的!你能帮我恢复一下吗?我想尝试一下,我认为如果MinPositive可以像Min一样使用,它会起作用,因为我已经尝试过与Min函数集成,而且效果很好。
a=3
minPositive[{a^2, 1 - 2 a, 100}]