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 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^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}]