Python程序使用numpy和Scipy计算三重积分?

from scipy import integrate

import numpy as np


def f(x,z):

      return (3*x**2 + 3*z**2)**0.5


def limits_y(x,z):

     return [(2*x**2+2*z**2),8]


def limits_z():

    return [0,2*np.pi]


def limits_x():

   return [0,2]


integrate.nquad(f,[limits_y,limits_z,limits_x])

这是我的程序……写完之后显示错误:


" limits_z takes 0 positional arguments but 1 was given "


红颜莎娜
浏览 359回答 2
2回答

牧羊人nacy

该文档说您有两个选择limits_z(以及所有其他限制)通过元组 (start, end)传递一个可调用的(就像你一样)。如果您传递一个可调用对象,它将使用所有集成参数进行调用。这就是函数所做的,因为你的limit_z函数不接受参数,你会得到一个错误因此,最简单的方法是将其设置为变量limits_z = [0,2*np.pi]

PIPIONE

您的函数签名不正确。f想要三个,limits_z想要一个参数。恩夸德我添加了一个未使用的参数,称为dump。from scipy import integrateimport numpy as npdef f(x,z,dump):      return (3*x**2 + 3*z**2)**0.5def limits_y(x,z):     return [(2*x**2+2*z**2),8]def limits_z(dump):    return [0,2*np.pi]def limits_x():   return [0,2]print(integrate.nquad(f,[limits_y,limits_z,limits_x]))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python