Divided difference(Newton metod)

32 Ansichten (letzte 30 Tage)
Ds31
Ds31 am 24 Okt. 2021
Beantwortet: Jan am 24 Okt. 2021
I have to calculate divided differences, for vector x and vector y(which is function value of vector x). Divided difference is get when substracting two consecutive y elements, and then dividing that difference with two consecutive x elements. My function has to return vector that consists only of first elements of each divided difference. Here is my code, but not working.(So if we have vector x=[x1, x2, x3, ..., xn] this function has to return vector [f[x1], f[x1,x2],f[x1,x2,x3],...,f[x1,x2,...,xn]].
function div = evalDiv(x,y)
difference = y;
for j=2:length(y)
temp = difference;
for i=j:length(y)
difference(i) = (temp(i)-temp(i-1))/(x(i)-x(i-(j-1));
end
end
div = difference;
end
test = evalDiv([ 1 2 3 4],[5 6 7 8]);
  2 Kommentare
Sargondjani
Sargondjani am 24 Okt. 2021
It is not clear what you want to me. You should provide a better formula for what this is supposed to be:
(temp(i)-temp(i-1))/(x(i)-x(i-(j-1));
Also I am not sure you intend to overwrite the values in 'difference'
Ds31
Ds31 am 24 Okt. 2021
Yes, I'm overwriting it, and on the end with that I will get only first element of each divided difference, that is what I need to return. But not sure why it is not printing anything

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Jan
Jan am 24 Okt. 2021
There was a missing closing parenthesis. The trailing esmivolon suppresses the output. If you omit it, this is displayed:
test = evalDiv([ 1 2 3 4],[5 6 7 8])
test = 1×4
5 1 0 0
function difference = evalDiv(x,y)
difference = y;
for j=2:length(y)
temp = difference;
for i=j:length(y)
difference(i) = (temp(i) - temp(i-1)) / (x(i) - x(i-(j-1)));
% missing: ^
end
end
end

Kategorien

Mehr zu Get Started with MATLAB finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by