2

我在 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

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

4

1 回答 1

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

数学图形

它几乎就在那儿。

让我们得到这些点:

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 *)

数学图形

所以,在我选择的时间间隔内,你可以使用

beta = 1085 - 20.5337 r
于 2012-09-19T18:06:32.037 回答