嵌套乘法

时间:2013-02-12 10:24:58

标签: matlab

我对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

如何修改for循环,使x将m-vector作为输入,例如x=(x1,x2,..,xm),该函数应计算每P(xi)i=1m并将所有内容输出为m-vector?非常感谢任何反馈,谢谢!

3 个答案:

答案 0 :(得分:1)

这可能是一个延伸的评论,而不是你当前问题的答案,但无论如何都要进行。

给出诸如

之类的权力向量
powers = 0:3

和系数向量,如

coeffs = [1 0 1 2]

您可以通过计算

来计算x^0+x^2+2x^3所定义的多项式的值(x==4
dot(4.^powers, coeffs)

并保存那些令人困惑的循环。

答案 1 :(得分: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

答案 2 :(得分:0)

您可以将其重写为Vandermonde Matrix作为系统方法。

也许repmatcumprod函数可以为您提供帮助。