This commit is contained in:
LinlyBoi
2023-05-14 22:18:08 +03:00
parent cb5c3be111
commit 140ff50583

View File

@@ -13,22 +13,24 @@ function y = b_newt_diff1(Y,h)
end
function y = newt_diff_fr(Y,X,x,h)
function y = newt_diff_fr1(Y,X,x,h)
idx = find(X==x);
if (idx == length(X))
elems = [X(idx), X(idx-1)]
elems = [Y(idx), Y(idx-1)]
y = b_newt_diff1(elems,h)
elseif (idx == 1)
elems = [X(idx), X(idx+1)]
elems = [Y(idx), Y(idx+1)]
y = f_newt_diff1(elems,h)
else
elems = [X(idx), X(idx+1)]
elems = [Y(idx-1), Y(idx+1)]
y = c_newt_diff1(elems,h)
endif
endfunction
X = [0 1 2 3 4]
Y = X.^2
newt_diff_fr1(Y,X,1,1)
@@ -41,11 +43,11 @@ function y = newt_diff_fr(Y,X,x,h)
function y = f_newt_diff2(Y,h)
Y = ( Y(3) - 2 * Y(2) + Y(1) ) / h^2
y = ( Y(3) - 2 * Y(2) + Y(1) ) / h^2
end
function y = c_newt_diff2(Y,h)
Y = ( Y(3) - 2 * Y(2) + Y(1) ) / h^2
y = ( Y(3) - (2 * Y(2)) + Y(1) ) / h^2
end
@@ -57,18 +59,18 @@ end
function y = newt_diff_fr(Y,X,x,h)
function y = newt_diff_fr2(Y,X,x,h)
idx = find(X==x);
if (idx == length(X))
elems = [X(idx), X(idx-1), X(idx-2)]
y = b_newt_diff1(elems,h)
if (idx == length(X)) %forwards
elems = [Y(idx), Y(idx-1), Y(idx-2)]
y = b_newt_diff2(elems,h)
elseif (idx == 1)
elems = [X(idx), X(idx+1), X(idx+2)]
y = f_newt_diff1(elems,h)
else
elems = [X(idx-1), X(idx), X(idx+1)]
y = c_newt_diff1(elems,h)
elseif (idx == 1) %backwards
elems = [Y(idx), Y(idx+1), Y(idx+2)]
y = f_newt_diff2(elems,h)
else % centered
elems = [Y(idx-1), Y(idx), Y(idx+1)]
y = c_newt_diff2(elems,h)
endif
endfunction