1

我想计算以下递归的符号积分:

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 到 T 的不同“x”值。但是,它会返回错误,因为myfunc会使用符号值“x”而不是实际值来调用。事实上,它不能确定if (T>0)表达式是真还是假。

如果您能建议如何计算这个递归积分,我将不胜感激?谢谢

4

1 回答 1

0

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

假设我们称它为depth,在顶层它等于 1。每深入一步,你就会增加depth1。

现在,如果您想获得与正确深度相对应的数字,您可以将其称为y(depth).

于 2013-01-11T15:00:59.857 回答