gpt4 book ai didi

python - 蒙特卡洛分析 Python 石油和天然气体积

转载 作者:太空狗 更新时间:2023-10-30 02:25:06 26 4
gpt4 key购买 nike

我正在尝试自学 Python,我想从学习如何进行蒙特卡洛分析开始(我是一名经常使用 MCA 的科学家)。我正在尝试编写一个程序,该程序将执行 7 个变量的蒙特卡洛模拟,以计算给定公式的可能结果范围。

我是 Python 的新手。我有 VBA 经验,但仍在学习 Python。

我在网上找到的所有示例都与金融有关,不幸的是,我很难理解这些代码,因为它们与我正在尝试做的事情不太相关。

我觉得这应该是一件很简单的事情,因为方程很简单。但是,我似乎无法取得任何进展。有人可以看看我现在拥有的代码并指出正确的方向吗?如果您有一个初学者易于理解的非金融蒙特卡洛分析示例,请指点我。我想学习 python,但我发现最好的学习方法是看别人的例子。

我想要完成的是拥有一个包含 7 个变量的列表,每个变量都具有正态分布。我希望 python 对下面代码中的公式执行 10,000 次迭代,每次计算时拉出一组不同的 7 个不同变量。我最终想打印计算的 P90、P50 和 P10 值。此时我真的不关心看任何图表(稍后会出现)。

下面是我到目前为止编写的代码。同样,我正在寻找如何实现这一目标的方向。我知道我的语法可能搞砸了,但我真的很挣扎。任何帮助将不胜感激。

from scipy.stats import *
import numpy as np


n = 10000

for i in range(n):
Area = norm(200,50)
Thickness = norm(100,25)
NTG = norm(.85,.2)
POR = norm(.32,.02)
GS = norm(.80,.2)
BG= norm(.0024,.0001)
Feather = 1
return ((((Area*Thickness*NTG*POR*GS)/BG)*43560)*Feather)/1000000000


Result = ((((Area*Thickness*NTG*POR*GS)/BG)*43560)*Feather)/1000000000


print ('Result is ', Result, 'ft')

最佳答案

你的代码至少有几个问题:

  • 您不能将 return 放在函数之外

  • 您的对象是随机数生成器,而不是随机数;你不能将它们相乘

大概,你想要这样的东西:

n = 10000
Area = norm(200,50).rvs(n)
Thickness = norm(100,25).rvs(n)
NTG = norm(.85,.2).rvs(n)
POR = norm(.32,.02).rvs(n)
GS = norm(.80,.2).rvs(n)
BG= norm(.0024,.0001).rvs(n)
Feather = 1
Results = Area*Thickness*NTG*POR*GS/BG*43560*Feather/1000000000
print(Results)

输出:

array([  43.88063752,   88.94160248,   46.89368561, ...,   87.32369654,
210.16899452, 32.21191486])

Results 数组随后可用于执行统计分析,例如 P10、P50 和 P90 计算。

注意没有循环,在数值 python 中你应该尽量避免循环。这已经创建了 n 个结果。

我必须说,我认为您先阅读 Python 教程会更有效率。

关于python - 蒙特卡洛分析 Python 石油和天然气体积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50294715/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com