Thiele's interpolation formula: Difference between revisions

Content added Content deleted
m (→‎{{header|Phix}}: added syntax colouring the hard way)
Line 30: Line 30:
{{trans|Python}}
{{trans|Python}}


<lang 11l>F thieleInterpolator(x, y, val)
<lang 11l>F thieleInterpolator(x, y)
V ρ = enumerate(y).map((i, yi) -> [yi] * (@y.len - i))
V ρ = enumerate(y).map((i, yi) -> [yi] * (@y.len - i))
L(i) 0 .< ρ.len - 1
L(i) 0 .< ρ.len - 1
Line 40: Line 40:
F t(xin)
F t(xin)
V a = 0.0
V a = 0.0
L(i) (@ρ0.len - 1 .< 1).step(-1)
L(i) (@=ρ0.len - 1 .< 1).step(-1)
a = (xin - @x[i - 1]) / (@ρ0[i] - @ρ0[i - 2] + a)
a = (xin - @=x[i - 1]) / (@=ρ0[i] - @=ρ0[i - 2] + a)
R @y[0] + (xin - @x[0]) / (@ρ0[1] + a)
R @=y[0] + (xin - @=x[0]) / (@=ρ0[1] + a)
R t(val)
R t


V xVal = (0.<32).map(i -> i * 0.05)
V xVal = (0.<32).map(i -> i * 0.05)
Line 49: Line 49:
V tCos = xVal.map(x -> cos(x))
V tCos = xVal.map(x -> cos(x))
V tTan = xVal.map(x -> tan(x))
V tTan = xVal.map(x -> tan(x))
V iSin = thieleInterpolator(tSin, xVal, 0.5)
V iSin = thieleInterpolator(tSin, xVal)
V iCos = thieleInterpolator(tCos, xVal, 0.5)
V iCos = thieleInterpolator(tCos, xVal)
V iTan = thieleInterpolator(tTan, xVal, 1)
V iTan = thieleInterpolator(tTan, xVal)
print(‘#.14’.format(6 * iSin))
print(‘#.14’.format(6 * iSin(0.5)))
print(‘#.14’.format(3 * iCos))
print(‘#.14’.format(3 * iCos(0.5)))
print(‘#.14’.format(4 * iTan))</lang>
print(‘#.14’.format(4 * iTan(1)))</lang>


{{out}}
{{out}}