2013-02-21 55 views
0

我是Python新手,学习遵循Python“科学讲义 Rlease 2013.1”教程。 请帮我解决下面srcreenshot中的这个三重一体化问题(第70页)。我已经介绍了该教程的以前的内容。 如果可能的话,请提供步骤明确的命令和解释,因为作为航空航天工程师编程概念对我而言是新的。与Python/Numpy/Scipy的三重集成

谢谢。

http://dl.dropbox.com/u/50511173/Untitled.png

练习:粗积分近似值 写函数f(A,B,C)返回一个^ B - ℃。在参数 范围[0,1] x [0,1] x [0,1]中形成一个包含其值的24x12x6阵列。

回答

1

这似乎令人生畏,但问题一步一步告诉你该怎么做。

撰写函数f(a, b, c)返回a^b-c

def f(a, b, c): 
    return a ** b - c 

形成包含其参数24x12x6阵列范围[0,1] x [0,1] x [0,1]。给你提示ogrid提示。所以,读我猜的文档的样子:

x = np.ogrid[0:1:24j, 0:1:12j, 0:1:6j] 

然后你可以做

f(x[0], x[1], x[2]) 

并采取再取平均

np.mean(f(x[0], x[1], x[2])) 

这给了我0.18884234602967925

+0

非常感谢,我对使用ogrid函数感到困惑,并误解了函数。如果没有附加的轴参考语句,可以按如下方式工作:def f(a,b,c): \t返回a ** b -c; a,b,c = np.ogrid [0:1:24j,0:1:12j,0:1:6j]; np.mean(F(A,B,C)) – nilesh 2013-02-21 11:14:18

1

你误解了这个问题。他们不要求你计算积分。他们要求你在一组点上计算该函数的平均值。这个练习的动机是这个意思将是该积分值的近似值。

所有你需要做的就是形成他们请求的数组,用24x12x6的值,将所有这些值相加,然后除以该数组中的元素数。

+0

非常感谢。我误解了这个问题,并试图实现scipy intergrate函数,因为我不明白ogrid函数部分。可以使用这种方法并使用更高的descretization(numpy.ogrid [start:end:j]中的j值)来解决各种类似的积分问题吗? – nilesh 2013-02-21 11:12:18

+1

并非总是如此。它将在这种情况下工作,因为您正在计算单位体积中的积分:积分域[0,1] x [0,1] x [0,1]的体积为1,这就是为什么平均值是近似值的积分。如果你的音量是X,你可以近似X的平均值。 – HerrKaputt 2013-02-21 15:08:11