2011-11-25 113 views
1

一个递归函数的我想计算以下符号积分这是递归的:积分在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)表达式是真是假。

如果你能提出如何计算这个递归积分,我会很感激。谢谢

+0

我不认为我能够帮助你,但从试图理解你的问题,我仍然不清楚'h'和'd'包含什么。此外,在递归方案中,为什么当我传递函数时不会“更改”? – Vidar

+0

我写了第一个简单和小的代码,只关注这个问题。但正如您所问,我编辑并添加了更多的细节。此外,'h'的元素是'x'函数的概率密度函数,'d'包含常量值...谢谢 – Joseph

+0

符号集成不会通过递归调用不同值的myfunc来工作。这种方法只适用于数字正交(显然,它只是近似于积分,尽管通常很好)。 –

回答

0

如果你想确保在递归函数的每一步中使用不同的实际值,你可以定义一个变量来说明你有多深。

假设我们把它叫做depth,并在顶级它等于1。每次你去一个更深一步,你的1

增加depth现在,如果你想获得对应的数正确的深度,你可以把它叫做y(depth)