Добавил:
Вуз:
Предмет:
Файл:
get_poly_newton
.m function poly_newton = get_poly_newton(nodes,f_labels,x)
table = get_table(nodes,f_labels);
for i = 1:length(nodes)
a(i) = table(i,i);
end
%P_n(x) = f_0 + f(x_0;x_1)(x-x_0) + f2(x_0;x_1;x_2)(x-x_0)(x-x_1) + ... + f(x_0;...;x_n)(x-x_0)(x-x_1)...(x-x_(n-1))
for k = 1:length(x)
res = 0;
for i = 1:length(nodes)
tmp = 1;
for j = 1:i-1
tmp = tmp*(x(k)-nodes(j));
end
res = res + tmp*a(i);
end
poly_newton(k) = res;
end
end
function table_div_diff = get_table(nodes,f_labels)
table_div_diff = zeros(length(nodes));
for i = 1:length(nodes)
table_div_diff(i,1) = f_labels(i);
end
for i = 2:length(nodes)
for j = 2:length(nodes)
if(i >=j)
table_div_diff(i,j) = (table_div_diff(i,j-1) - table_div_diff(j-1,j-1))/(nodes(i) - nodes(j-1));
end
end
end
end
table = get_table(nodes,f_labels);
for i = 1:length(nodes)
a(i) = table(i,i);
end
%P_n(x) = f_0 + f(x_0;x_1)(x-x_0) + f2(x_0;x_1;x_2)(x-x_0)(x-x_1) + ... + f(x_0;...;x_n)(x-x_0)(x-x_1)...(x-x_(n-1))
for k = 1:length(x)
res = 0;
for i = 1:length(nodes)
tmp = 1;
for j = 1:i-1
tmp = tmp*(x(k)-nodes(j));
end
res = res + tmp*a(i);
end
poly_newton(k) = res;
end
end
function table_div_diff = get_table(nodes,f_labels)
table_div_diff = zeros(length(nodes));
for i = 1:length(nodes)
table_div_diff(i,1) = f_labels(i);
end
for i = 2:length(nodes)
for j = 2:length(nodes)
if(i >=j)
table_div_diff(i,j) = (table_div_diff(i,j-1) - table_div_diff(j-1,j-1))/(nodes(i) - nodes(j-1));
end
end
end
end
Соседние файлы в предмете Компьютерная математика