在Excel中求解方程组

时间:2016-04-06 17:55:28

标签: excel vba excel-vba

我想在Excel中解决以下方程组。

enter image description here

X1,X2,σ1和σ2,以及S都是已知的。我想同时解决这个系统,发现B和σ。手工操作相对微不足道。我可以毫不费力地发现一个时间点的B和σ。

然而,在Excel中,我想在不同的时间点为S,X等各种不同的值创建一个B的时间序列。所以我需要一遍又一遍地解决这个系统数百次来创建这个时间序列。

我可以使用Excel或VBA中的哪个工具:

a)求解除B和σ

之外的所有变量的给定输入的上述方程组

b)使过程自动化,以便我可以针对X1,X2,S,σ1和σ2的不同值解决相同的系统数百次

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

希望有所帮助