Python中关于Y轴旋转的插值函数的体积

6yoyoihd  于 2023-08-02  发布在  Python
关注(0)|答案(1)|浏览(90)

我有一个(x,y)数据集,x域为(0,10)。该数据集表示我要查找其体积的对象的横截面。我的想法是:

  • 线性内插数据集并获得内插函数f(x)。
  • 求f(x)的逆-> g(y)
  • 使用方程$\pi\int_a^b g(y)^2dy $对函数g(y)绕y轴进行旋转积分

以下是我迄今为止的一个片段:

import numpy as np
from scipy import interpolate
from scipy.integrate import quad

#assume (x,y) dataset has been imported as xvals, yvals

f = interpolate.interp1d(xvals,yvals)
area=quad(f,0,xvals[-1],limit=200) #this finds the cross sectional area, I need a 3D volume

字符串
如何求g(y)的倒数或者更一般地说,找到围绕y轴旋转的形状所包围的体积的最佳过程是什么?

nhjlsmyf

nhjlsmyf1#

看起来你的尝试很接近。
诀窍是使用f(x)作为半径创建磁盘。所以每个磁盘的面积是pi * f(x)**2 ...
我相信这就足够了。

import numpy as np
from scipy import integrate
import matplotlib.pyplot as plt

def f(x):
    ''' some function (to be roatated around the x-axis)'''
    return x**2

# make some x and y values
x = np.linspace(0, 3)
y = f(x) 

def g(x):
    ''' volume of the curve by integrating the circle slices '''
    radius = f(x)
    return np.pi * radius**2

volume, error = integrate.quad(g, 0, 3)

print(volume)

字符串
在该(示例)情况下的结果是152.68
注意,要围绕y-axis旋转,您需要切换x和y。

相关问题