首页 文章

如何解决Mathematica中的双积分?

提问于
浏览
1

我是Mathematica的新手,我正在努力解决以下问题 .

  • 我有一个 Z = aZ^3 + bZ^2 + a + b 形式的立方方程 . 我想要做的第一件事是获得一个函数,通过分析解决Z,并选择最小的正根,作为a和b的函数 .

我认为,为了获得我可以使用的根:

Z = Solve[z == az^3 + bz^2 + a + b, z];

看起来我并没有得到根源,正如我所期望的那样使用一般的三次方程解公式 .

  • 我想将 Z 的最小正根与 ab (再次,最好是分析地)从0到1整合为 a ,将 a 整合为 b 为1 .

我试过了

Y = Integrate[Z, {a, 0, 1}, {b, a, 1}];

并且似乎没有给出任何公式或数值,但只返回一个积分 . (请注意,我甚至不确定如何选择最小的正根,但我正在玩Mathematica试图找出它 . )

关于如何做到这一点的任何想法?

2 回答

  • 0

    abz 之间的空格非常重要 . 你可以通过以下方式获得根源:

    sol = z /. Solve[z == a z^3 + b z^2 + a + b, z]
    

    但是,你确定这个表达式有你想象的解决方案吗?对于 a=0.5b=0.5 ,唯一真正的根是负数 .

    sol /. {a->0.5, b->0.5}
    {-2.26953,0.634765-0.691601 I,0.634765+0.691601 I}
    
  • 1
    sol = z /. Solve[z == a z^3 + b z^2 + a + b, z];
    zz[a0_ /; NumericQ[a0], b0_ /; NumericQ[b0]] := 
            Min[Select[ sol /. {a -> a0, b -> b0} , 
                     Element[#, Reals] && # > 0 & ]]
    

    当没有解决方案时,这会返回-infinty . 正如sirintinga所说,您的示例集成限制无效 .

    RegionPlot[NumericQ[zz[a, b] ] , {a, -1, .5}, {b, -.5, 1}]
    

    enter image description here

    但如果你有一个有效的地区,你可以数字整合..

    NIntegrate[zz[a, b], {a, -.5, -.2}, {b, .8, .9}]  ->> 0.0370076
    

    编辑---

    上面有一个错误选择Reals是扔掉真正的解决方案与无穷小的复杂部分..修复为:..

    zz[a0_ /; NumericQ[a0], b0_ /; NumericQ[b0]] := 
            Min[Select[ Chop[ sol /. {a -> a0, b -> b0} ], 
                     Element[#, Reals] && # > 0 & ]]
    

    Edit2,如果你没有找到Chop满意的更干净的方法..

    zz[a0_ /; NumericQ[a0], b0_ /; NumericQ[b0]] := 
         Module[{z, a, b}, 
              Min[z /. Solve[ 
                 Reduce[(z > 0 && z == a z^3 + b z^2 + a + b /.
                      { a -> a0, b -> b0}), {z}, Reals]]]]
    RegionPlot[NumericQ[zz[a, b] ] , {a, -2, 2}, {b, -2, 2}]
    

    enter image description here

    NIntegrate[zz[a, b], {a, 0, .5}, {b, 0, .5 - a}]  -> 0.0491321
    

相关问题