exp_approx: THEORY %----------------------------------------------------------------------------- % Approximation of Exponential Function % ------------------------------------- % % Defines upper and lower bounds on exp: % - exp_lb(a,n) <= exp(a) <= exp_ub(a,n) % - e_lb(n) <= e <= e_ub(n) % % Author: David Lester Manchester University %-----------------------------------------------------------------------------
BEGIN
IMPORTING exp_series IMPORTING reals@quad_minmax % For proof only
n: VAR nat
pn: VAR posnat
x: VAR real
nx: VAR negreal
nnx: VAR nnreal
exp_neg_le1_ub(n,x): real = exp_estimate(x,2*n)
% old exp_neg_le1_lb1(n,x): real = exp_estimate(x,2*n+1)
exp_neg_le1_lb(n,x): real = exp_estimate(x,2*n) - 1.000001/factorial(2*n+1)
exp_neg_le1_bounds: LEMMA -1 <= x AND x < 0 IMPLIES
(exp_neg_le1_lb(n,x) < exp(x) AND exp(x) < exp_neg_le1_ub(n,x))
exp_neg_le1_ub_strict_decreasing_n: LEMMA -1 <= x AND x < 0 IMPLIES
strict_decreasing?(LAMBDA (n:nat): exp_neg_le1_ub(n,x))
% exp_neg_le1_lb_strict_increasing_n: LEMMA -1 <= x AND x < 0 IMPLIES % strict_increasing?(LAMBDA (n:nat): exp_neg_le1_lb(n,x))
exp_neg_le1_lb_pos: LEMMA -1 <= x AND x < 0 IMPLIES exp_neg_le1_lb(pn,x) > 0
exp_neg_ub(n,nx):posreal = LET pn= -floor(nx) IN exp_neg_le1_ub(n+1,nx/pn)^pn
exp_neg_lb(n,nx):posreal = LET pn= -floor(nx) IN exp_neg_le1_lb(n+1,nx/pn)^pn
exp_ub_n(x,n): posreal = IF x < 0 AND x>=-exp_approx_int_cutoff THEN exp_neg_ub(n,x) ELSIF x<0 THEN exp_neg_ub(n,-exp_approx_int_cutoff) ELSIF x = 0 THEN 1 ELSIF x<=exp_approx_int_cutoff THEN 1/exp_neg_lb(n,-x) ELSE max(1/exp_neg_lb(n,-exp_approx_int_cutoff),4^(floor(x)+1)) ENDIF
exp_lb_n(x,n): posreal = IF x < 0 AND x>=-exp_approx_int_cutoff THEN exp_neg_lb(n,x) ELSIF x < 0 THEN min(exp_neg_lb(n,-exp_approx_int_cutoff),4^floor(x)) ELSIF x = 0 THEN 1 ELSIF x<=exp_approx_int_cutoff THEN 1/exp_neg_ub(n,-x) ELSE max(1/exp_neg_ub(n,-exp_approx_int_cutoff),2^floor(x)) ENDIF
exp_ub(x,n): posreal = IF n <= exp_approx_term_cutoff THEN exp_ub_n(x,n) ELSE exp_ub_n(x,exp_approx_term_cutoff) ENDIF
exp_lb(x,n): posreal = IF n <= exp_approx_term_cutoff THEN exp_lb_n(x,n) ELSE exp_lb_n(x,exp_approx_term_cutoff) ENDIF
exp_bounds: LEMMA exp_lb(x,n) <= exp(x) AND exp(x) <= exp_ub(x,n)
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.