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.
Eigene Datei ansehen
Die farbliche Syntaxdarstellung ist noch experimentell.