Approximating function derivatives
|
01-24-2024, 02:31 PM
(This post was last modified: 01-24-2024 02:36 PM by Pekis.)
Post: #1
|
|||
|
|||
Approximating function derivatives
Here is a subject slightly extended from the book "La calculatrice scientifique" Vangeluwe/Glorieux, 1979:
The point is to approximate function derivatives (targets are f(x0) or f'(x0) or f"(x0) or f"'(x0)) with the help of neighboring points (at distance h and h/2 from both sides of x0) So, knowing h, find a,b,c,d such as a * f(x0 + h) + b * f(x0 - h) + c * f(x0 + h/2) + d * f(x0 - h/2) ~= (f(x0) or f'(x0) or f"(x0) f"'(x0)), ie each target needs its (a,b,c,d) set In any case, with Taylor: f(x0 + h) = f(x0) + h * f'(x0) + h^2/2! * f"(x0) + h^3/3! * f"'(x0) + ... f(x0 - h) = f(x0) - h * f'(x0) + h^2/2! * f"(x0) - h^3/3! * f"'(x0) + ... f(x0 + h/2) = f(x0) + h/2 * f'(x0) + h^2/(2^2*2!) * f"(x0) + h^3/(2^3*3!) * f"'(x0) + ... f(x0 - h/2) = f(x0) - h/2 * f'(x0) + h^2/(2^2*2!) * f"(x0) - h^3/(2^3*3!) * f"'(x0) + ... => Solve system: a + b + c + d = 1 if target f(x0), else 0 a - b + c/2 - d/2 = 1/h if target f'(x0), else 0 a + b + c/4 + d/4 = 2!/(h^2) if target f"(x0), else 0 a - b + c/8 - d/8 = 3!/(h^3) if target f"'(x0), else 0 Results: If target f(x0): a = -1/6, b = -1/6, c = 2/3, d = 2/3 If target f'(x0): a = -1/(6*h), b = 1/(6*h), c = 4/(3*h), d = -4/(3*h) If target f"(x0): a = 4/(3*h^2), b = 4/(3*h^2), c = -4/(3*h^2), d = -4/(3*h^2) If target f"'(x0): a = 4/(h^3), b = -4/(h^3), c = -8/(h^3), d = 8/(h^3) Here a the results for f(x)=ln(x), h=0.001, at x0=3, from Excel: It seems nice for f(x0) and f'(x0), acceptable for f"(x0), but looses precision for f"'(x0) Did you already know that method ? |
|||
« Next Oldest | Next Newest »
|
User(s) browsing this thread: 1 Guest(s)