关于油藏的相渗曲线的以及含水饱和度曲线交点求法
小熊维尼
在油藏的期末复习的时候,我就发现了这个问题,明明很正常的fw-Sw曲线,想当然的会以为直接对它求导,然后求得斜率相等的点就行了。
但是往往事与愿违,往往给出的是点的数据,就是测井数据。
那么我们怎么来精确地求得那个交点值呢,以下给出一种数值方法,希望对大家有用。
前期准备:
你必须得有mathematical,matlab或者maple,当然如果你对自己的计算能力有信心,那也行的。
步骤:
1,我们从Excel表格中读取数据(以下我以传姐的数据为例)
2,对导入的数据进行插值(三次艾米尔特插值的精度就可以了),画出插值函数,即:
这就是经过插值之后的fw-Sw曲线了,既然我们有了函数表达式,那么后面的步骤我相信很多人都明白了。
3,但是事情往往没这么简单,你可能会想:“对啊,我略懂mathematical或者matlab 我知道切点的斜率和切线的斜率相等,而且切线过(0.32,0)这个点,这个还不好求吗?不就是一个Solve命令嘛。
”如果你真要这么想,我只能表示呵呵了。
可以明确表示常规的解方程命令在这里都不起作用。
原因是你的曲线是插值分段函数,虽然你看起来就像一条完整的曲线一样。
4,穷则思变,我们采用的是牛顿切线法或者割线法,这是一种线性收敛的计算方法,但是对于这道题的要求够了。
在mathematical下命令是FindRoot,matlab我就不知道了(求教)。
本质上牛顿切线法是一种迭代方法,也就是说必须给出迭代初始点
以上是mathematical下的FindRoot函数的调用格式,和普通解方程的格式一致,看看
下面的例子就明白了
5,通过这样的方法我们就可以得到交点的x数值了带入插值函数(就是上面的函数可以求得y值了。
这样就可以把切线完美的表达出来了(两个点了)。
如下图:
以下是传姐同学的数据,大家可以先仿照做一遍,看看自己做对没有:。