如何编写包含数值积分的函数?

问题描述 投票:0回答:1

我需要计算很多点的积分。所以,

f = f(r,theta,k,phi); 
q =integral2(f,0,1,0,2*pi,'AbsTol',0,'RelTol',1e-10); % integration should be by k and phi

我希望 q 是 r 和 theta 的函数,我可以随时调用它来计算给定 r 和 theta 点的积分。我怎样才能做到这一点? 问题是我无法使用不定@函数或matlabFunction()方法,因为似乎积分是先完成的,当Matlab检测到它没有定义所有参数时,它会带来一些错误。

matlab numerical-integration
1个回答
2
投票

这就是您要找的吗(我仍然不知道

f
返回什么)?:

r = ...     % Define
theta = ... % Define
g = @(k,phi)f(r,theta,k,phi); % g is now a function of k and phi
q = integral2(g,0,1,0,2*pi,'AbsTol',0,'RelTol',1e-10);

这将创建一个匿名函数

g
,其中
r
theta
的值被捕获为参数,并且
k
theta
仍然是参数。这个概念在计算机科学中被称为“闭包”。 如果你想将整个事情变成一个由

r

theta
组成的函数并返回
q
,你可以创建以下匿名函数:

q = @(r,theta)integral2(@(k,phi)f(r,theta,k,phi),0,1,0,2*pi,'AbsTol',0,'RelTol',1e-10);

您可以使用 
q(r,theta)

拨打电话。当然,您同样可以只使用普通函数(通常更快,并且使您的代码更容易被其他人理解)。

    

© www.soinside.com 2019 - 2024. All rights reserved.