src/convex.rs

branch
dev
changeset 152
dab30b331f49
parent 151
402d717bb5c0
equal deleted inserted replaced
151:402d717bb5c0 152:dab30b331f49
2 Some convex analysis basics 2 Some convex analysis basics
3 */ 3 */
4 4
5 use crate::error::DynResult; 5 use crate::error::DynResult;
6 use crate::euclidean::Euclidean; 6 use crate::euclidean::Euclidean;
7 use crate::instance::{ClosedSpace, DecompositionMut, Instance}; 7 use crate::instance::{DecompositionMut, Instance};
8 use crate::linops::{IdOp, Scaled, SimpleZeroOp, AXPY}; 8 use crate::linops::{IdOp, Scaled, SimpleZeroOp, AXPY};
9 use crate::mapping::{DifferentiableImpl, LipschitzDifferentiableImpl, Mapping, Space}; 9 use crate::mapping::{DifferentiableImpl, LipschitzDifferentiableImpl, Mapping, Space};
10 use crate::norms::*; 10 use crate::norms::*;
11 use crate::operator_arithmetic::{Constant, Weighted}; 11 use crate::operator_arithmetic::{Constant, Weighted};
12 use crate::types::*; 12 use crate::types::*;
200 */ 200 */
201 201
202 impl<F, E, Domain> Mapping<Domain> for NormProjection<F, E> 202 impl<F, E, Domain> Mapping<Domain> for NormProjection<F, E>
203 where 203 where
204 Domain: Normed<F> + Projection<F, E>, 204 Domain: Normed<F> + Projection<F, E>,
205 Domain::OwnedSpace: ClosedSpace,
206 F: Float, 205 F: Float,
207 E: NormExponent, 206 E: NormExponent,
208 { 207 {
209 type Codomain = Domain::OwnedSpace; 208 type Codomain = Domain::OwnedSpace;
210 209
410 impl<X, F> DifferentiableImpl<X> for Norm222<F> 409 impl<X, F> DifferentiableImpl<X> for Norm222<F>
411 where 410 where
412 F: Float, 411 F: Float,
413 X: Euclidean<F>, 412 X: Euclidean<F>,
414 { 413 {
415 type Derivative = X::Owned; 414 type Derivative = X::OwnedEuclidean;
416 415
417 fn differential_impl<I: Instance<X>>(&self, x: I) -> Self::Derivative { 416 fn differential_impl<I: Instance<X>>(&self, x: I) -> Self::Derivative {
418 x.own().into_owned() 417 x.into_owned()
419 } 418 }
420 } 419 }
421 420
422 impl<X, F> LipschitzDifferentiableImpl<X, L2> for Norm222<F> 421 impl<X, F> LipschitzDifferentiableImpl<X, L2> for Norm222<F>
423 where 422 where

mercurial