我对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=1
到m
并将所有内容输出为m-vector?非常感谢任何反馈,谢谢!
答案 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作为系统方法。
也许repmat
和cumprod
函数可以为您提供帮助。