我想在Excel中解决以下方程组。
X1,X2,σ1和σ2,以及S都是已知的。我想同时解决这个系统,发现B和σ。手工操作相对微不足道。我可以毫不费力地发现一个时间点的B和σ。
然而,在Excel中,我想在不同的时间点为S,X等各种不同的值创建一个B的时间序列。所以我需要一遍又一遍地解决这个系统数百次来创建这个时间序列。
我可以使用Excel或VBA中的哪个工具:
a)求解除B和σ
之外的所有变量的给定输入的上述方程组b)使过程自动化,以便我可以针对X1,X2,S,σ1和σ2的不同值解决相同的系统数百次
答案 0 :(得分:2)
写一个vba函数,它接受X1,X2,σ1和σ2的值,并返回B和Theta。
以下是编写函数的方法。 http://www.excel-easy.com/vba/examples/user-defined-function.html
以下是如何从一个函数返回多个值。 Return multiple values from a function, sub or type?
您将无法直接从编辑2个单元格的工作表中调用函数。 https://superuser.com/questions/818141/excel-possible-to-fill-two-cells-with-one-if-formula
相反,您需要编写一个在一系列值上调用该函数的宏。 How do I call a VBA Function into a Sub Procedure
您可以在工作表中设置参数范围,只需让子例程访问工作表即可。以下是如何访问工作表中的值。 Excel VBA - read cell value from code
答案 1 :(得分:2)
您可以通过分析方法求解这些公式:
B:
=-(1/sigma2-1/sigma1)/(LN(X2/S)/(X2-S)/sigma2-LN(X1/S)/(X1-S)/sigma1)
西格玛:
=sigma1/(1+B*LN(X1/S)/(X1-S))
或
=sigma2/(1+B*LN(X2/S)/(X2-S))
您还可以导出不依赖于B的sigma公式:
=(sigma2*(X2-S)/LN(X2/S)-sigma1*(X1-S)/LN(X1/S))/((X2-S)/LN(X2/S)-(X1-S)/LN(X1/S))
我假设自然对数;如果您打算基于10个日志,则将LOG10
替换为LN
。
希望有所帮助