专栏
标签
hermite插值多项式
一般问题
发布于 2024-12-17 22:33:26
查看 19过去558天

下面这个代码运行结果为-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)

所属专栏:Julia语言
产品信息:Syslab科学计算环境
科学计算

全部回答 1

发布于 2024-12-18 09:15:38

您好,您的代码可以正常运行,计算结果不对,一般是由函数内计算算法导致,可以检查函数内算法是否正确。

用户
和原帖交流更多问题细节吧,去
我要发帖 我要发帖
资料中心 资料中心
查看更多>
热门帖子 热门帖子
主要贡献者 主要贡献者
过去7天