0

剰余関数を使用して、結果をいくつかのベクトル変数として取得します。

[r,p,k] = 残基(b,a)

次のように、返された結果からシンボリック式を(選択した変数、たとえば「x」で)構築する方法はありますか?

eq = residue2sym(r,p,k)
pretty(eq)
4

1 に答える 1

0

最後に、私はそれを自分で実装しました:

function eq = residue2sym( R,P,K )

syms s

eq = 0;

lastR = NaN;
lastP = NaN;
multiplicityCounter = 1;
for i = 1:length(R)
    rc = R(i);
    pc = P(i);

    if(~isnan(lastP) )
        if(pc == lastP && abs(lastR) < 1e-15)   % Quando existe multiplicidade, o R correspondente ao primeiro P
                                                % da multiplicidade deveria
                                                % ser 0, mas estranhamente
                                                % aparece como -4.4409e-16.
                                                % O que deveria ser uma
                                                % comparação com 0 então
                                                % vira uma comparação para
                                                % um módulo bem pequeno
            multiplicityCounter = multiplicityCounter + 1;
        else
            eq = eq + lastR/(s - lastP)^multiplicityCounter;
            multiplicityCounter = 1;
        end
    end
    lastR = rc;
    lastP = pc;
end
if(~isnan(lastP))
    eq = eq + lastR/(s - lastP)^multiplicityCounter;
end

 if(~isempty(K))
     eq = eq + sum(s.^(0:length(K)));
 end

eq = vpa( eq, 2);

end
于 2013-03-23T04:30:37.247 に答える