Library Differential
Differentiability, Taylor expansions
Require Export BigO.
Open Local Scope nat_scope.
Open Local Scope R_scope.
Section Diff.
Variable xmin xmax:R.
Hypothesis xminLtxmax: xmin < xmax.
Definition my_proj (X:({x| Betw xmin xmax x}*R)): R*R := (projT1 (fst X), snd X).
Differentiability
Variable partial_derive_firstvar: (R * R -> R) -> (R * R -> R).
Variable partial_derive_secondvar: (R * R -> R) -> (R * R -> R).
Fixpoint partial_derive_firstvar_n (m : nat) (f : R * R -> R) : R * R -> R :=
match m with
| 0 => f
| S m' => partial_derive_firstvar (partial_derive_firstvar_n m' f)
end.
Fixpoint partial_derive_secondvar_n (k : nat) (f : R * R -> R) : R * R -> R :=
match k with
| 0 => f
| S k' => partial_derive_secondvar (partial_derive_secondvar_n k' f)
end.
Definition partial_derive (m k : nat) (f : R * R -> R) : R * R -> R :=
partial_derive_firstvar_n m (partial_derive_secondvar_n k f).
Taylor expansions
Definition differential (p : nat) (f : R * R -> R) (X dX : R * R) : R :=
sum_f_R0
(fun m =>
C p m *
partial_derive m (p - m)%nat f X *
fst dX ^ m * snd dX ^ (p - m)%nat)
p.
Definition DL_pol (n : nat) (f : R * R -> R) (X dX : R * R) : R :=
sum_f_R0
(fun p =>
differential p f X dX / INR (fact p))
n.
Definition of being sufficiently regular by the Taylor expansions
Definition is_sufficiently_regular_n m f :=
Ou (fun X:({x| Betw xmin xmax x}*R) =>
subtract2_fun
(fun dX => f (add2 (my_proj X) dX))
(fun dX => DL_pol (m - 1)%nat f (my_proj X) dX))
(fun dX => norm_l2 dX ^ m).
A few lemmas needed by the consistancy (many computations inside)
Lemma OuP_dX_to_eps_Betw: forall P:R*R -> Prop, forall f g eps,
{ C:R | 0 < C /\ (forall (X:({x| Betw xmin xmax x}*R)) dX, norm_l2 (eps (my_proj X) dX) <= C * norm_l2 dX)} ->
{ C:R | 0 < C /\ (forall (X:({x| Betw xmin xmax x}*R)) dX, Rabs (g (eps (my_proj X) dX)) <= C * Rabs (g dX))} ->
(forall X dX, P dX -> P (eps X dX)) ->
OuP P (fun (X:({x| Betw xmin xmax x}*R)) dX => f (my_proj X) dX) g ->
OuP P (fun (X:({x| Betw xmin xmax x}*R)) dX => f (my_proj X) (eps (my_proj X) dX)) g.
Lemma DL_discretization_eps_aux: forall f : R * R -> R, forall eps: R * R -> R * R -> R * R,
(is_sufficiently_regular_n 4 f) ->
{ C : R |
0 < C /\ (forall (X:({x| Betw xmin xmax x}*R)) (dX : R * R), norm_l2 (eps (my_proj X) dX) <= C * norm_l2 dX)} ->
Ou ((fun (X:({x| Betw xmin xmax x}*R)) dX => f (add2 (my_proj X) (eps (my_proj X) dX)) - 2*f (my_proj X) + f (subtract2 (my_proj X) (eps (my_proj X) dX))
- (fst (eps (my_proj X) dX))^2 * (partial_derive_firstvar_n 2 f (my_proj X))
- (snd (eps (my_proj X) dX))^2 * (partial_derive_secondvar_n 2 f (my_proj X))
- 2*(fst (eps (my_proj X) dX))*(snd (eps (my_proj X) dX)) * partial_derive_firstvar (partial_derive_secondvar f) (my_proj X)
))
(fun dX => (norm_l2 dX)^4).
Lemma DL_discretization_eps_dx: forall f : R * R -> R,
(is_sufficiently_regular_n 4 f) ->
Ou ((fun (X:({x| Betw xmin xmax x}*R)) dX => f (add2 (my_proj X) (fst dX, 0)) - 2*f (my_proj X) + f (subtract2 (my_proj X) (fst dX,0))
- (fst dX)^2 * (partial_derive_firstvar_n 2 f (my_proj X))))
(fun dX => (fst dX)^4).
Lemma DL_discretization_eps_dt: forall f : R * R -> R,
(is_sufficiently_regular_n 4 f) ->
Ou ((fun (X:({x| Betw xmin xmax x}*R)) dX => f (add2 (my_proj X) (0, snd dX)) - 2*f (my_proj X) + f (subtract2 (my_proj X) (0, snd dX))
- (snd dX)^2 * (partial_derive_secondvar_n 2 f (my_proj X))))
(fun dX => (snd dX)^4).
End Diff.