From dd95c148afbd508f6b708496e062fde104b6b6fd Mon Sep 17 00:00:00 2001 From: Anmol Jain <30307833+jainanmol123@users.noreply.github.com> Date: Fri, 3 Aug 2018 18:36:27 +0530 Subject: [PATCH 1/2] Create newton_forward_interpolation.py This code is for calculating newton forward difference interpolation for fixed difference. --- .../newton_forward_interpolation.py | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 ArithmeticAnalysis/newton_forward_interpolation.py diff --git a/ArithmeticAnalysis/newton_forward_interpolation.py b/ArithmeticAnalysis/newton_forward_interpolation.py new file mode 100644 index 000000000000..497daf84becb --- /dev/null +++ b/ArithmeticAnalysis/newton_forward_interpolation.py @@ -0,0 +1,48 @@ +import math + +#for calculating u value +def ucal(u,p): + temp=u + for i in range(1,p): + temp=temp*(u-i) + return temp + +def main(): + n=int(input("enter the numbers of values")) + y=[] + for i in range(n): + y.append([]) + for i in range(n): + for j in range(n): + y[i].append(j) + y[i][j]=0 + + + print("enter the values of parameters in a list") + x=list(map(int,input().split())) + + print("enter the values of corresponding parameters") + for i in range(n): + y[i][0]=(float(input())) + + value=int(input("enter the value to interpolate")) + u=(value-x[0])/(x[1]-x[0]) + + #for calculating forward difference table + + for i in range(1,n): + for j in range(n-i): + y[j][i]=y[j+1][i-1]-y[j][i-1] + + summ=y[0][0] + for i in range(1,n): + summ+=((ucal(u,i)*y[0][i])/math.factorial(i)) + + print("the value at {} is {}".format(value,summ)) + + +if __name__ == "__main__": + main() + + + From ac29eb180c9ad643c18b8794693db598791dc2e6 Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Tue, 22 Oct 2019 09:58:01 +0200 Subject: [PATCH 2/2] Add doctests and reformat with black --- .../newton_forward_interpolation.py | 48 ---------------- .../newton_forward_interpolation.py | 55 +++++++++++++++++++ 2 files changed, 55 insertions(+), 48 deletions(-) delete mode 100644 ArithmeticAnalysis/newton_forward_interpolation.py create mode 100644 arithmetic_analysis/newton_forward_interpolation.py diff --git a/ArithmeticAnalysis/newton_forward_interpolation.py b/ArithmeticAnalysis/newton_forward_interpolation.py deleted file mode 100644 index 497daf84becb..000000000000 --- a/ArithmeticAnalysis/newton_forward_interpolation.py +++ /dev/null @@ -1,48 +0,0 @@ -import math - -#for calculating u value -def ucal(u,p): - temp=u - for i in range(1,p): - temp=temp*(u-i) - return temp - -def main(): - n=int(input("enter the numbers of values")) - y=[] - for i in range(n): - y.append([]) - for i in range(n): - for j in range(n): - y[i].append(j) - y[i][j]=0 - - - print("enter the values of parameters in a list") - x=list(map(int,input().split())) - - print("enter the values of corresponding parameters") - for i in range(n): - y[i][0]=(float(input())) - - value=int(input("enter the value to interpolate")) - u=(value-x[0])/(x[1]-x[0]) - - #for calculating forward difference table - - for i in range(1,n): - for j in range(n-i): - y[j][i]=y[j+1][i-1]-y[j][i-1] - - summ=y[0][0] - for i in range(1,n): - summ+=((ucal(u,i)*y[0][i])/math.factorial(i)) - - print("the value at {} is {}".format(value,summ)) - - -if __name__ == "__main__": - main() - - - diff --git a/arithmetic_analysis/newton_forward_interpolation.py b/arithmetic_analysis/newton_forward_interpolation.py new file mode 100644 index 000000000000..09adb5113f82 --- /dev/null +++ b/arithmetic_analysis/newton_forward_interpolation.py @@ -0,0 +1,55 @@ +# https://www.geeksforgeeks.org/newton-forward-backward-interpolation/ + +import math + +# for calculating u value +def ucal(u, p): + """ + >>> ucal(1, 2) + 0 + >>> ucal(1.1, 2) + 0.11000000000000011 + >>> ucal(1.2, 2) + 0.23999999999999994 + """ + temp = u + for i in range(1, p): + temp = temp * (u - i) + return temp + + +def main(): + n = int(input("enter the numbers of values")) + y = [] + for i in range(n): + y.append([]) + for i in range(n): + for j in range(n): + y[i].append(j) + y[i][j] = 0 + + print("enter the values of parameters in a list") + x = list(map(int, input().split())) + + print("enter the values of corresponding parameters") + for i in range(n): + y[i][0] = float(input()) + + value = int(input("enter the value to interpolate")) + u = (value - x[0]) / (x[1] - x[0]) + + # for calculating forward difference table + + for i in range(1, n): + for j in range(n - i): + y[j][i] = y[j + 1][i - 1] - y[j][i - 1] + + summ = y[0][0] + for i in range(1, n): + summ += (ucal(u, i) * y[0][i]) / math.factorial(i) + + print("the value at {} is {}".format(value, summ)) + + +if __name__ == "__main__": + main()