请教一个table自动自由组合的问题
mathematica吧
全部回复
仅看楼主
level 6
刚才发的贴子存在一点问题,抱歉,在下面这两个公式中,主要是Faa这一项中,由于分子带有一个随机变量a,导致faa的计算结果产生了四个(即v1正好2个值,而Faa中含有两个v1导致其自由组合,即前面的乘以积分导致的得到四个值),请问因该如何解决,使的运用v1得到的两个结果分别运用到Faa中进行计算,即最终只得到2个运算结果,谢谢
\[Nu]1 = Table[1/rin^(3/2) Sqrt[1/rin], {rin, 6, 7}];
Faa = \[Nu]1/(2 a) Integrate[BesselK[5/3, t], {t, \[Nu]1/(2 a), Infinity}]
2023年05月04日 06点05分 1
吧务
level 10
哪来的四个?我运行结果就两个。
2023年05月04日 17点05分 2
@贴吧用户_7M7N9We 你说的对,是我没仔细看
2023年05月05日 17点05分
我这里确实是四个解啊,详细情况请看3楼,谢谢,他确实是有两个if,但一个if里包含了两个解
2023年05月05日 01点05分
level 6
2023年05月05日 01点05分 3
吧务
level 10
Faa = MapAt[\[Nu]1/(2 a)#&, 1]@Integrate[BesselK[5/3, t], {t, \[Nu]1/(2 a), Infinity}]
2023年05月05日 17点05分 4
吧务
level 15
至少有3个解决方法。
1. 先别乘外面的\[Nu]1/(2 a),等Integrate积完之后,把 ConditionalExpression 里的表达式挖出来再乘:
Faa = \[Nu]1/(2 a) First@Integrate[BesselK[5/3, t], {t, \[Nu]1/(2 a), Infinity}]
2. 给Integrate设置适当的Assumptions,使它输出的不是ConditionalExpression。一个例子(a的范围我瞎设的):
Faa = \[Nu]1/(2 a) (
Integrate[BesselK[5/3, t], {t, \[Nu]1/(2 a), Infinity},
Assumptions -> {a > 1/144}])
3. 别直接用 \[Nu]1/(2 a) 当积分限,而是用Map( /@ )把Integrate作用到 \[Nu]1/(2 a) 的每一项:
Faa = (\[Nu]1*(Integrate[BesselK[5/3, t], {t, #1, Infinity}] & ) /@ (\[Nu]1/(2*a)))/(2*a)
个人推荐这个做法,因为Integrate在明面上是不能Listable的(虽然它很多时候是可以接收列表),利用这种未定义的行为指不定出啥岔子.
2023年05月06日 06点05分 5
1