在mathematica中解决这个问题?

时间:2012-09-12 02:38:27

标签: math wolfram-mathematica

我在Mathematica中有以下代码:

rbar = 0.006236
rt = r_bar
k = 0.95
sigmar = 0.002
betazr = -0.00014
sigmaz = 0.4
pi = 0.99
chi = 0.05
Cbar = -3.7

alpha1[n_] := alpha1[n] = alpha1[n - 1] + alpha2[n - 1]
alpha2[n_] := alpha2[n] = k (alpha2[n - 1])
sigma1sq[n_] := 
 sigma1sq[n] = sigma2sq[n - 1] + 2 sigma12[n - 1] + sigmaz^2
sigma12[n_] := 
 sigma12[n] = k (sigma12[n - 1]) + k (sigma2sq[n - 1]) + betazr
sigma2sq[n_] := sigma2sq[n] = (k^2) (sigma2sq[n - 1]) + sigmar^2
phi1[n_] := phi1[n] = phi1[n - 1] + phi2[n - 1] + (0.5) (sigmaz^2)
phi2[n_] := phi2[n] = k (phi2[n - 1]) + (1 - k) (rbar)
psi[n_] := psi[n] = phi1[n] - (0.5) (sigma1sq[n])

alpha1[0] = 0
alpha2[0] = 1
sigma1sq[0] = 0
sigma12[0] = 0
sigma2sq[0] = 0
phi1[0] = 0
phi2[0] = 0

B[h_, r_] := Exp[(-alpha1[h]) (r) - psi[h]]
Exp[Cbar - beta] Sum[(Pi^x) B[x, r], {x, 1, 1000}]

我想知道是否有可能解决最后一行,以便我将“r”作为“beta”的函数,满足

Exp[Cbar - beta] Sum[(Pi^x) B[x, r], {x, 1, 1000}] == 1

因为最终,我需要将函数J [r]集成到“beta”,所以如果我没有“r”作为“beta”的函数,我不知道如何进行集成J [r]。

1 个答案:

答案 0 :(得分:0)

你不能将r作为beta的显式函数,但也许你可以做一些数字魔术。让我们在一些选定的时间间隔内看到函数的形式:

B[h_, r_] := Exp[(-alpha1[h]) (r) - psi[h]]
g0 = ContourPlot[ 1 == Exp[Cbar - beta] Sum[(Pi^x) B[x, r], {x, 1, 1000}], 
                  {r, 25, 60}, {beta, -10, 10}]

Mathematica graphics

那里几乎是直的。

让我们得到这些观点:

ll = FullForm[g0] /. Graphics[GraphicsComplex[x_, ___], ___] -> x;

现在适合直线

line = Fit[ll[[1]], {1, r}, r]
Show[ListPlot[ll[[1]], PlotStyle -> Red], Plot[line, {r, 52.3, 53.5}]]

(* 1085.- 20.5337 r *)

Mathematica graphics

因此,在我选择的时间间隔内,您可以使用

beta = 1085 - 20.5337 r