【发布时间】:2020-10-12 13:03:15
【问题描述】:
我正在尝试编写用于多项式评估的霍纳方法,但由于某种原因它对我不起作用,我不确定我在哪里弄错了。
这些是我拥有的数据:
nodes = [-2, -1, 1]
x = 2
c (coefficients) = [-3, 3, -1]
我目前的代码是:
function y = horner(x, nodes, c)
n = length(c);
y = c(1);
for i = 2:n
y = y * ((x - nodes(i - 1)) + c(i));
end
end
我应该得到一个多项式,例如(−1)·(x+2)(x+1)+3·(x+2)−3·1,如果是x =2,那么我应该得到-3。但是由于某种原因,我不知道我哪里出错了。
编辑:
所以我改变了我的代码。我认为它有效,但我不确定:
function y = horner(x, nodes, c)
n = length(c);
y = c(n);
for k = n-1:-1:1
y = c(k) + y * (x - nodes((n - k) + 1));
end
end
【问题讨论】:
-
您的第二个功能(您通过编辑添加的功能)不正确。它仅适用于 x=2...
-
你能解释一下你期望得到的多项式中的每个系数或节点是什么吗?我不明白...
-
@Avi 很抱歉没有说清楚。节点是数据点。所以对于这个例子,多项式是 c_1 + c_2(x - x_1) + c_3(x-x_1)(x-x_2)。每个 C 对应于系数,每个 x_i 是节点(数据点)。所以对于这个例子,它将是 (-1)*(x-x_1)(x-x_2) + 3*(x - x_1) - 3。但是我需要使用霍纳的方法来编写。