我正在研究MonteCarlo仿真模型,其中一部分是要计算以下公式:
X = Sqr(1-p)Y + Sqr(p)Z,
位置:
Y和Z是根据标准正态(inv。)分布基于(分别是特质和系统因素)随机获得的值,计算公式为:
Application.WorksheetFunction.NormInv (Rnd(), mean, sd)
p表示一个相关因子。
我的目的是求出一个召回的公式的平方根,但是,当我尝试以下操作(插入第一个Sqr)时,它不起作用并给出错误:
Matrix (n, sims) = (R * Sqr(Application.WorksheetFunction.NormInv(Rnd(), mean, sd))) + (Sqr(1 - R) * RandomS(s, x))
其中:
R :相关系数
RandomS(s,x):生成的Z值矩阵。
我不想过多地介绍背景和其他变量,因为我遇到的唯一问题是平方根方程。
我收到的错误消息为:
运行时错误“ 5”:
无效的过程调用或参数
当我单击“调试”时,它将带我到公式,因此语法肯定有问题。
您可以直接对公式求平方吗?
谢谢!
安德鲁
答案 0 :(得分:3)
平方根就是Sqr
。
它在Excel VBA中工作正常,例如:
MsgBox Sqr(144)
...返回12
。
请不要将其与工作表函数的语法为SQRT
混淆。
如果您的公式仍然存在问题,则tit必须与平方根函数以外的其他函数一起使用,我建议您检查变量的值,并确保正确声明了它们的值(最好使用Option Explicit
在模块顶部)。
还要确保您传递的是Sqr
的正值。
文档:Sqr
Function
我不是数学专业,但您的公式为:
X = Sqr(1-p)Y + Sqr(p)Z,
...您指定了Y
和Z
的计算方式,因此请分别进行计算以使其简单:
Dim X as Double, Y as Double, Z as Double
Y = Application.WorksheetFunction.NormInv (Rnd(), mean, sd)
Z = Application.WorksheetFunction.NormInv (Rnd(), mean, sd)
假设公式中不应该包含逗号,并且不知道p
是什么,那么计算X
的最终代码是:
X = Sqr(1-p) * Y + Sqr(p) * Z