为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

红颜莎娜 2021-05-30 11:45:13
from scipy import integrateimport numpy as npdef f(x,z):      return (3*x**2 + 3*z**2)**0.5def 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 "
查看完整描述

2 回答

?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

该文档说您有两个选择limits_z(以及所有其他限制)

  1. 通过元组 (start, end)

  2. 传递一个可调用的(就像你一样)。如果您传递一个可调用对象,它将使用所有集成参数进行调用。这就是函数所做的,因为你的limit_z函数不接受参数,你会得到一个错误

因此,最简单的方法是将其设置为变量

limits_z = [0,2*np.pi]


查看完整回答
反对 回复 2021-06-01
?
PIPIONE

TA贡献1829条经验 获得超9个赞

您的函数签名不正确。f想要三个,limits_z想要一个参数。恩夸德


我添加了一个未使用的参数,称为dump。


from scipy import integrate

import numpy as np


def f(x,z,dump):

      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(dump):

    return [0,2*np.pi]


def limits_x():

   return [0,2]


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


查看完整回答
反对 回复 2021-06-01
  • 2 回答
  • 0 关注
  • 358 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信