积分在MATLAB
问题描述:
一个递归函数的我想计算以下符号积分这是递归的:积分在MATLAB
function [y] = myfunc(i,T)
s = sym('s');
x= sym('x');
h=[....] %matrix n*n (function of x)
d=[....] %matrix n*1 (constants)
for k=1:n
if (T>0)
y= int(exp(-s*x)*h(i,k)*myfunc(k,T-x/d(i)),'x',0,T);
end
end
我预期MATLAB,而计算的积分,来电myfunc(k,T-x/d(i))
为从0到“x”的不同值T.但是,它将返回错误,因为myfunc
将以符号值“x”调用,而不是实际值。确实,它不能确定if (T>0)
表达式是真是假。
如果你能提出如何计算这个递归积分,我会很感激。谢谢
答
如果你想确保在递归函数的每一步中使用不同的实际值,你可以定义一个变量来说明你有多深。
假设我们把它叫做depth
,并在顶级它等于1。每次你去一个更深一步,你的1
增加depth
现在,如果你想获得对应的数正确的深度,你可以把它叫做y(depth)
。
我不认为我能够帮助你,但从试图理解你的问题,我仍然不清楚'h'和'd'包含什么。此外,在递归方案中,为什么当我传递函数时不会“更改”? – Vidar
我写了第一个简单和小的代码,只关注这个问题。但正如您所问,我编辑并添加了更多的细节。此外,'h'的元素是'x'函数的概率密度函数,'d'包含常量值...谢谢 – Joseph
符号集成不会通过递归调用不同值的myfunc来工作。这种方法只适用于数字正交(显然,它只是近似于积分,尽管通常很好)。 –