- #1
mafagafo
- 188
- 12
Homework Statement
As a string in my program.
Homework Equations
Solving a system with the forward phase of row echelon reduction and a consecutive back substitution.
All done by numpy here. (The book suggested MATLAB, etc).
The Attempt at a Solution
Python:
import numpy
""" In a wind tunnel experiment, the force on a projectile due to air
resistance was measured at different velocities:
Velocity (100 ft/sec) 0 2.00 4.00 6.00 8.00 10.00
Force (100 lb) 0 2.90 14.8 39.6 74.3 119.0
Find an interpolating polynomial for these data and estimate the force on the
projectile when the projectile is traveling at 750 ft/sec.
Use p(t) = a0 + a1*t + a2*t^2 + a3*t^3 + a4*t^4 + a5*t^5.
What happens if you try to use a polynomial of degree less than 5?
(Try a cubic polynomial, for instance.)
"""
make_row_for_t = lambda t: [t ** n for n in range(6)]
A = numpy.array([make_row_for_t(t * 100) for t in range(0, 11, 2)])
B = numpy.array([[n] for n in [0, 290, 1480, 3960, 7430, 11900]])
coefficients = numpy.linalg.solve(A, B)
p = numpy.polynomial.Polynomial(coefficients.flatten())
print_p = lambda x: print("{:<8} = {}".format("p(" + str(x) + ")", p(x)))
for n in range(0, 1100, 200):
print_p(n)
print_p(750)
Code:
p(0) = 0.0
p(200) = 290.0000000000015
p(400) = 1480.0000000000023
p(600) = 3960.0000000000036
p(800) = 7430.000000000004
p(1000) = 11900.00000000001
p(750) = 6483.837890625005
Did it work? Yes. (Just get the python3 and python3-numpy packages under Linux and it should run in your machine too.)
The book does not have the answer, but mine seems OK, I wanted to get some review on what I did as I am new to numpy and interpolation and thought I would get some useful advice or even corrections.