下面这个代码运行结果为-376.05971230601887,我想要的运行结果为0.5118277
function hermite_interpolation(x, f, f_prime)
n = length(x)
z = zeros(2n)
Q = zeros(2n, 2n)
for i in 1:n
z[2i - 1] = x[i]
z[2i] = x[i]
Q[2i - 1, 1] = f[i]
Q[2i, 1] = f[i]
Q[2i, 2] = f_prime[i]
end
for i in 2:2:2n
Q[i, 1] = (Q[i, 1] - Q[i - 1, 1]) / (z[i] - z[i - 1])
end
for i in 3:2n
for j in 3:i
Q[i, j] = (Q[i, j - 1] - Q[i - 1, j - 1]) / (z[i] - z[i - j + 1])
end
end
return Q
end
function evaluate_polynomial(x, z, Q)
n = length(z)
result = Q[n, n]
for i in (n - 1):-1:1
result = result * (x - z[i]) + Q[i, i]
end
return result
end
给定数据
x = [1.3, 1.6, 1.9]
f = [0.6200860, 0.4554022, 0.2818186]
f_prime = [-0.5220232, -0.5698959, -0.5811571]
计算插值多项式的系数
Q = hermite_interpolation(x, f, f_prime)
要计算的点
x_eval = 1.5
计算近似值
approx_value = evaluate_polynomial(x_eval, [z for z in 1:2 * length(x)], Q)
println("Approximation of f(1.5): ", approx_value)