mirror of
https://github.com/TheAlgorithms/Python.git
synced 2025-03-19 21:19:47 +00:00
added horner's method (#1360)
This commit is contained in:
parent
dcee2eac68
commit
927a8c7722
@ -1,25 +1,53 @@
|
||||
def evaluate_poly(poly, x):
|
||||
"""
|
||||
Objective: Computes the polynomial function for a given value x.
|
||||
Returns that value.
|
||||
Input Prams:
|
||||
poly: tuple of numbers - value of cofficients
|
||||
x: value for x in f(x)
|
||||
Return: value of f(x)
|
||||
from typing import Sequence
|
||||
|
||||
>>> evaluate_poly((0.0, 0.0, 5.0, 9.3, 7.0), 10)
|
||||
79800.0
|
||||
"""
|
||||
|
||||
def evaluate_poly(poly: Sequence[float], x: float) -> float:
|
||||
"""Evaluate a polynomial f(x) at specified point x and return the value.
|
||||
|
||||
Arguments:
|
||||
poly -- the coeffiecients of a polynomial as an iterable in order of
|
||||
ascending degree
|
||||
x -- the point at which to evaluate the polynomial
|
||||
|
||||
>>> evaluate_poly((0.0, 0.0, 5.0, 9.3, 7.0), 10.0)
|
||||
79800.0
|
||||
"""
|
||||
return sum(c * (x ** i) for i, c in enumerate(poly))
|
||||
|
||||
|
||||
def horner(poly: Sequence[float], x: float) -> float:
|
||||
"""Evaluate a polynomial at specified point using Horner's method.
|
||||
|
||||
In terms of computational complexity, Horner's method is an efficient method
|
||||
of evaluating a polynomial. It avoids the use of expensive exponentiation,
|
||||
and instead uses only multiplication and addition to evaluate the polynomial
|
||||
in O(n), where n is the degree of the polynomial.
|
||||
|
||||
https://en.wikipedia.org/wiki/Horner's_method
|
||||
|
||||
Arguments:
|
||||
poly -- the coeffiecients of a polynomial as an iterable in order of
|
||||
ascending degree
|
||||
x -- the point at which to evaluate the polynomial
|
||||
|
||||
>>> horner((0.0, 0.0, 5.0, 9.3, 7.0), 10.0)
|
||||
79800.0
|
||||
"""
|
||||
result = 0.0
|
||||
for coeff in reversed(poly):
|
||||
result = result * x + coeff
|
||||
return result
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
"""
|
||||
Example: poly = (0.0, 0.0, 5.0, 9.3, 7.0) # f(x) = 7.0x^4 + 9.3x^3 + 5.0x^2
|
||||
x = -13
|
||||
print (evaluate_poly(poly, x)) # f(-13) = 7.0(-13)^4 + 9.3(-13)^3 + 5.0(-13)^2 = 180339.9
|
||||
Example:
|
||||
>>> poly = (0.0, 0.0, 5.0, 9.3, 7.0) # f(x) = 7.0x^4 + 9.3x^3 + 5.0x^2
|
||||
>>> x = -13.0
|
||||
>>> print(evaluate_poly(poly, x)) # f(-13) = 7.0(-13)^4 + 9.3(-13)^3 + 5.0(-13)^2 = 180339.9
|
||||
180339.9
|
||||
"""
|
||||
poly = (0.0, 0.0, 5.0, 9.3, 7.0)
|
||||
x = 10
|
||||
x = 10.0
|
||||
print(evaluate_poly(poly, x))
|
||||
print(horner(poly, x))
|
||||
|
Loading…
x
Reference in New Issue
Block a user