Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -0,0 +1,32 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import math
|
||||
|
||||
def thieleInterpolator(x, y):
|
||||
ρ = [[yi]*(len(y)-i) for i, yi in enumerate(y)]
|
||||
for i in range(len(ρ)-1):
|
||||
ρ[i][1] = (x[i] - x[i+1]) / (ρ[i][0] - ρ[i+1][0])
|
||||
for i in range(2, len(ρ)):
|
||||
for j in range(len(ρ)-i):
|
||||
ρ[j][i] = (x[j]-x[j+i]) / (ρ[j][i-1]-ρ[j+1][i-1]) + ρ[j+1][i-2]
|
||||
ρ0 = ρ[0]
|
||||
def t(xin):
|
||||
a = 0
|
||||
for i in range(len(ρ0)-1, 1, -1):
|
||||
a = (xin - x[i-1]) / (ρ0[i] - ρ0[i-2] + a)
|
||||
return y[0] + (xin-x[0]) / (ρ0[1]+a)
|
||||
return t
|
||||
|
||||
# task 1: build 32 row trig table
|
||||
xVal = [i*.05 for i in range(32)]
|
||||
tSin = [math.sin(x) for x in xVal]
|
||||
tCos = [math.cos(x) for x in xVal]
|
||||
tTan = [math.tan(x) for x in xVal]
|
||||
# task 2: define inverses
|
||||
iSin = thieleInterpolator(tSin, xVal)
|
||||
iCos = thieleInterpolator(tCos, xVal)
|
||||
iTan = thieleInterpolator(tTan, xVal)
|
||||
# task 3: demonstrate identities
|
||||
print('{:16.14f}'.format(6*iSin(.5)))
|
||||
print('{:16.14f}'.format(3*iCos(.5)))
|
||||
print('{:16.14f}'.format(4*iTan(1)))
|
||||
Loading…
Add table
Add a link
Reference in a new issue