1

MATLAB コードに少し問題があります。xこれは、評価される値でありa、多項式係数のベクトルである多項式の値を計算する関数です。

function P=nesting(a,x)
P=a(end);
for n=numel(a)-1:-1:1
    P=a(n)+P.*x;
end
return

たとえば、m-vector を入力として取り、関数がすべての forを計算し、すべてを m-vector として出力するようにforループを変更するにはどうすればよいですか? どんなフィードバックでも大歓迎です、ありがとう!xx=(x1,x2,..,xm)P(xi)i=1m

4

3 に答える 3

1

使ってみませんpolyvalか?

独自の実装が必要な場合はどうでしょうか。

function p = nesting( coeff, x )

ex = (numel(coeff)-1) : -1 : 0;
v = bsxfun( @power, x(:), ex ); % vanermonde matrix
p = v * coeff(:)'; % dot product of coeff with respecting x^k
于 2013-02-12T11:48:19.707 に答える
1

これはおそらく、差し迫った質問への回答ではなく、拡張されたコメントですが、とにかくここに行きます.

次のようなベキのベクトルが与えられると、

powers = 0:3

および次のような係数のベクトル

coeffs = [1 0 1 2]

このように定義された多項式 ( x^0+x^2+2x^3) の値は、たとえば次のように計算してx==4計算できます。

dot(4.^powers, coeffs)

混乱を招くループを自分で保存してください。

于 2013-02-12T11:14:12.077 に答える
0

体系的なアプローチとして、これをVandermonde Matrixに書き直すことができます。

repmat関数とcumprod関数が役立つかもしれません。

于 2013-02-12T11:41:20.493 に答える