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 に等しいとします。1 段階深く進むたびに、1 ずつ増加depthします。

ここで、適切な深さに対応する数値を取得したい場合は、単に として呼び出すことができますy(depth)

于 2013-01-11T15:00:59.857 に答える