text:
Causal Holography in Application to the Inverse Scattering Problems

# Causal Holography in Application to the Inverse Scattering Problems

Gabriel Katz MIT, Department of Mathematics, 77 Massachusetts Ave., Cambridge, MA 02139, U.S.A.
###### Abstract.

For a given smooth compact manifold , we introduce an open class of Riemannian metrics, which we call metrics of the gradient type. For such metrics , the geodesic flow on the spherical tangent bundle admits a Lyapunov function (so the -flow is traversing). It turns out, that metrics of the gradient type are exactly the non-trapping metrics.

For every , the geodesic scattering along the boundary can be expressed in terms of the scattering map . It acts from a domain in the boundary to the complementary domain , both domains being diffeomorphic. We prove that, for a boundary generic metric the map allows for a reconstruction of and of the geodesic foliation on it, up to a homeomorphism (often a diffeomorphism).

Also, for such , the knowledge of the scattering map makes it possible to recover the homology of , the Gromov simplicial semi-norm on it, and the fundamental group of . Additionally, allows to reconstruct the naturally stratified topological type of the space of geodesics on .

We aim to understand the constraints on , under which the scattering data allow for a reconstruction of and the metric on it, up to a natural action of the diffeomorphism group . In particular, we consider a closed Riemannian -manifold which is locally symmetric and of negative sectional curvature. Let is obtained from by removing an -domain , such that the metric is boundary generic, of the gradient type, and the homomorphism of the fundamental groups is trivial. Then we prove that the scattering map makes it possible to recover and the metric on it.

## 1. Introduction

Let be a compact connected and smooth Riemannian -manifold with boundary. In this paper, we apply the Holographic Causality Principle ([K4], Theorem 3.1) to the geodesic flow on the space of unit tangent vectors on .

Our main observation is that the holographic causality is intimately linked to the classical inverse scattering problems. So the geodesic scattering is the focus of our present investigation.

Let us briefly explain what we mean by the scattering data on a given compact connected Riemannian manifold with boundary . For each geodesic curve which “enters” through a point in the direction of an unitary tangent vector , we register the first along “exit point” and the exit direction, given by a unitary tangent vector at . Of course, not for any geodesic on , this construction makes sense: may belong to the interior of . In such case, the geodesic through never reaches the boundary again.

In any case, when available, we call the correspondence “the metric-induced scattering data”.

We strive to restore the metric on , up to the action of -diffeomorphisms that are the identity maps on , from the scattering data111This resembles the problem of reconstructing the mass distribution from the gravitational lensing.. This restoration seems harder when has closed geodesics or geodesics that originate at a boundary point, but never reach the boundary again.

In special cases, the restoration of is possible. This conclusion is very much inline with the results from [Cr], [Cr1], [We], as well as with [SU] - [SU4] and [SUV] - [SUV3]. The recent paper [SUV3], which reflects the modern state of the art, contains the strongest results.

Recall that there are examples of two analytic Riemannian manifolds with isometric boundaries and identical scattering (even lens) data, but with different -jets of the metric tensors at the boundaries (see [Zh], Theorem 4.3)! However, these examples have trapped geodesics; the metrics there are fundamentally different from the ones we study here.

Moving towards the goal of -reconstruction from the scattering data, we introduce a class of metrics which we call metrics of the gradient type (see Definition 2.1). By Lemma lem9.2, the the gradient type metrics are exactly the nontrapping metrics. In Theorem 2.1, we prove that, given any compact connected Riemannian -manifold with boundary that admits a -flat triangulation, where is a universal constant that depends only on (see Definition 2.3), it is possible to delete several smooth -balls from , so that is diffeomorphic to , and the restriction is of the gradient type. In particular, any connected with boundary admits a gradient type Riemannian metric , provided that admits a -flat triangulation for a sufficiently small and a different metric . The gradient type metrics form an open nonempty set in the space of all Riemannian metrics on (Corollary 2.2).

Then we introduce another class of Riemannian metrics on such that the boundary is “generically curved” in (see Definition 2.4). We call such geodesically boundary generic, or boundary generic for short. We denote by the space of geodesically boundary generic metrics of the gradient type. We speculate (see Conjecture 2.2) that, for any , the space is open and dense in and prove that it is indeed open (see Theorem 2.2).

We also consider a subspace , formed by metrics for which the geodesic vector field on is traversally generic in the sense of Definition 3.2 from [K2]. Again, is open in .

In Theorem 3.3, the main result of this paper, we prove that, for a metric , the geodesic flow on is topologically rigid for given scattering data. This means that when two scattering maps, and , are conjugated with the help of a smooth diffeomorphism , then the un-parametrized geodesic flows on and are conjugated with the help of an appropriate homeomorphism (often a diffeomorphism) which extends .

Let denote the space of geodesics in . In Theorem 3.4, we prove that, for any metric , the scattering data are sufficient for a reconstruction of the stratified topological type of . In general, is not a smooth manifold, but for , it is a compact -complex [K4]. For , the space carries some “surrogate smooth structure” [K4]. This structure is also captured by the scattering data.

In Theorem 3.5, we prove that, for any , the geodesic scattering map allows for a reconstruction of the homology spaces and , equipped with the Gromov simplicial semi-norms (see [G] for the definition). In particular, the simplicial volume of the relative fundamental cycle can be recovered from the scattering map.

If , the geodesic scattering map also allows for a reconstruction of the fundamental group , together with all the homotopy groups . Moreover, if the tangent bundle of is trivial, allows for a reconstruction of the stable topological type of the manifold .

Let be a closed smooth locally symmetric Riemannian -manifold, , of negative sectional curvature. In Theorem 3.7, we prove that, if and is obtained from by removing the interior of a smooth -ball so that is of the gradient type and boundary generic, then the knowledge of the scattering map

 Cv~g:Sn−1×Dn−1→Sn−1×Dn−1

makes it possible to reconstruct and the metric , up to a positive scalar factor. However, this result does not imply the possibility of reconstructing from .

In Section 4, we study the inverse scattering problem in the presence of additional information about the lengths of geodesic curves that connect each point to the “scattered” point . This information is commonly called the “lens data”. Our main result here, Theorem 4.1, claims the strong topological rigidity (see Definition 3.1) of the geodesic flow for given lens data. The proof of the theorem requires additional hypotheses about the metric , which we call “ballanced” (see Definition 4.1). We apply Theorem 4.1 to the case of manifolds , obtained from closed Riemannian manifolds by removing special domains . Then the scattering problem on is intimately linked to the geodesic flow on (see the “Cut and Scatter” Theorem 4.2). By combining Theorem 4.2 with some classical results from [CK], [BCG], we are able to reconstruct from the scattering and lens data on , provided that either is locally symmetric and of negative curvature, or admits a non-vanishing parallel vector field (see Corollary 4.2 and Corollary 4.3).

In general, our approach to the inverse scattering problem relies more on the methods of Differential Topology and Singularity Theory, and less on the more analytical methods of Differential Geometry and Operator Theory. Of course, this topological approach has its limitations: by itself it allows only for a reconstruction of the geodesic flow from the scattering and lens data.

The assumption that the Riemannian manifolds in this study are smooth seems to be crucial for the effectiveness of our methods. Perhaps, similar results are valid under the weaker assumption that the -manifolds we investigate have a -differentiable structure.

## 2. Boundary Generic Metrics of the Gradient Type

Let be a compact -dimensional smooth Riemannian manifold with boundary, and a smooth Riemannian metric on . Let denote the tangent spherical bundle. With the help of , we may interpret the bundle is a subbundle of the tangent bundle .

The metric on induces a partially-defined one-parameter family of diffeomorphisms , the geodesic flow. Each unit tangent vector at a point determines a unique geodesic curve trough in the direction of . When , the geodesic curve is uniquely-defined for unit vectors that point inside of .

By definition, is the point such that the distance along from to is , and is the tangent vector to at . We stress that may not be well-defined for all and all : some geodesic curves may reach the boundary in finite time, and some tangent vectors may point outside of . However, such constraints are common to our enterprise ([K], [K1] - [K5]), which deals with such boundary-induced complications.

In the local coordinates on the tangent space , the equations of the geodesic flow are:

 ˙xα = ∑βgαβpβ (2.1) ˙pα = −12∑β,γ∂gβγ(x)∂xαpβpγ,

where is the metric tensor.

This system can be rewritten in terms of the Hamiltonian function

 Hg(x,p)=def12∑α,βgαβ(x)pαpβ

—the kinetic energy—in the familiar Hamiltonian form:

 ˙xα = ∂Hg∂pα (2.2) ˙pα = −∂Hg∂xα

The projections of the trajectories of (2) (or of (2)) on are the geodesic curves.

Let be the field on the manifold , tangent to the trajectories of the geodesic flow on . Note that -flow is tangent to , so .

In fact, the integral trajectories of are geodesic curves in the Sasaki metric on ([Be], Prop. 1.106).

Let be a compact smooth -manifold with boundary. Any smooth vector field on , which does not vanish along the boundary , gives rise to a partition of the boundary into two sets: the locus , where the field is directed inward of or is tangent to , and , where it is directed outwards or is tangent to . We assume that , viewed as a section of the quotient line bundle over , is transversal to its zero section. This assumption implies that both sets are compact manifolds which share a common boundary . Evidently, is the locus where is tangent to the boundary .

Morse has noticed (see [Mo]) that, for a generic vector field , the tangent locus inherits a similar structure in connection to , as has in connection to . That is, gives rise to a partition of into two sets: the locus , where the field is directed inward of or is tangent to , and , where it is directed outward of or is tangent to . Again, we assume that , viewed as a section of the quotient line bundle over , is transversal to its zero section.

For, so called, boundary generic vector fields (see [K1] for a formal definition), this structure replicates itself: the cuspidal locus is defined as the locus where is tangent to ; is divided into two manifolds, and . In , the field is directed inward of or is tangent to its boundary, in , outward of or is tangent to its boundary. We can repeat this construction until we reach the zero-dimensional stratum .

To achieve some uniformity in the notations, put and .

Thus a boundary generic vector field on gives rise to two stratifications:

 ∂X=def∂1X⊃∂2X(v)⊃⋯⊃∂m+1X(v), X=def∂+0X⊃∂+1X(v)⊃∂+2X(v)⊃⋯⊃∂+m+1X(v),

the first one by closed smooth submanifolds, the second one—by compact ones. Here , and .

We will use often the notation “” instead of “” when the vector field is fixed or its choice is obvious.

As any non-vanishing vector field, the geodesic field divides the boundary into two portions: , where points inside of or is tangent to its boundary, and , where it points outside of or is tangent to its boundary. In fact, and do not depend on : the first locus is formed by the pairs , where and points inside of or is tangent to . Therefore, both and are homeomorphic to the tangent -disk bundle of the manifold . The locus is also -independent; it is the space of the sphere bundle, associated with the tangent -bundle .

###### Definition 2.1.

Let be a compact connected smooth Riemannian manifold with boundary.

We say that a metric on is of the gradient type if the vector field that governs the geodesic flow is of the gradient type: that is, there exists a smooth function such that .

This condition is equivalent to the property , where is a smooth extension of , the Hamiltonian is defined by equations (2) and (2), and stands for the Poisson bracket of functions on .

We denote by the space of the gradient-type Riemannian metrics on .

Example 2.1. Consider a flat metric on the torus and form a punctured torus by removing an open disk from . If is convex in the fundamental square domain , then there exist closed geodesics (with a rational slope with respect to the lattice ) that miss . For such , the flat metric is not of the gradient type.

However, it is possible to position so that its lift to will have intersections with any line that passes through (see Figure 1). We restrict the flat metric to . For such a choice of , thanks to Lemma 2.2 below, the metric is of the gradient type. Moreover, by Theorem 2.2, any metric on , sufficiently close to this flat metric , is also of the gradient type.

###### Lemma 2.1.

The set of Riemannian metrics of the gradient type is open in the space of all Riemannian metrics on , considered in the -topology.

###### Proof.

Let denote the zero section. If on , then extends in a compact neighborhood of in to a smooth function so that in . In this neighborhood, for all metrics , sufficiently close to . For such metrics , the space of unit spheres is fiberwise close to ; in particular, we may assume that . Recall that the geodesic field is tangent to , thus on . ∎

###### Definition 2.2.

A Riemannian metric on a connected compact manifold with boundary is called non-trapping if has no closed geodesics and no geodesics of an infinite length (the later are homeomorphic to an open or a semi-open interval).

###### Lemma 2.2.

Let be a compact connected smooth manifold with boundary. A metric on is of the gradient type, if and only if, any trajectory of the geodesic flow is homeomorphic to a closed interval or to a singleton.

In other words, the non-trapping metrics and the metrics of the gradient type are the same.

###### Proof.

If, for a smooth function , , then each -trajectory is singleton residing in or a closed segment with its both ends residing in (we call such vector fields traversing). Evidently, prevents from having a closed trajectory. Let be a trajectory that starts at a point and is homeomorphic to a semi-open interval. So extends beyond any point on that can be reached from ( cannot “exit” in a finite time). Consider the closure of . It is a compact and -invariant set. So attends its maximum at a point . However, at and a germ of a -trajectory through belongs to , a contradiction to the assumption that attends its maximum at .

A similar argument rules out the -trajectories that are homeomorphic to a semi-open interval.

Conversely, by Lemma 5.6 from [K1], any traversing field is of the gradient type. So admits a Lyapunov function .

Thus is of the gradient type if and only if the image of any -trajectory under the map is either a singleton in or a compact geodesic curve whose ends reside in (by our convention, does not extends beyond its two ends). In particular, any has no closed geodesics in and no geodesics that originate at the boundary and are trapped in for all positive times. ∎

###### Corollary 2.1.

Let be an open Riemannian manifold such that no geodesic curve in is closed or has an end that is contained in a compact set. Let be a smooth compact codimension zero submanifold. Then the restriction is a metric of the gradient type, and so are all the metrics on that are sufficiently close to .

In particular, for any compact domain with a smooth boundary in the Euclidean space or in the hyperbolic space , the Euclidean metric or the hyperbolic metric on are of the gradient type, and so are all the metrics that are sufficiently close to or , respectively.

###### Proof.

Using the hypotheses, no positive time geodesic in the metric is an image of a semi-open interval or a closed loop. By Lemma 2.2, the pair is of the gradient type.

By Lemma 2.1, any metric on , which is sufficiently close to , is of the gradient type as well. ∎

In order to prove Theorem 2.1 below, we will need few lemmas, dealing with smooth triangulations of compact smooth Riemannian manifolds, triangulations that are specially adjusted to the given metric.

Let be a smooth compact -manifold. A smooth triangulation is a homeomorphism from a finite simplicial complex to . The triangulation is assembled out of several homeomorphisms , where denotes of the standard -simplex , the restriction of to the interior of each subsimplex being a smooth diffeomorphism. The homeomorphisms commute with affine maps of subsimplicies , the maps that assemble out of several copies of .

###### Definition 2.3.

Consider a smooth triangulation of a smooth compact -manifold with a Riemannian metric .

Let be a geodesic arc, and its preimage in the standard -simplex . We denote by its length in the Euclidean metric on . Let be a line segment that shares its ends with . We denote by its length.

Pick a number . We say that a smooth triangulation is -flat with respect to if, for each index and any geodesic arc , the inequality is valid:

 lE(~γj)<(1+ϵ)⋅lE(λ(~γj)).

Note that the inequality in this definition remains valid under the conformal scaling of the simplex .

###### Lemma 2.3.

Let be a compact smooth -manifold, equipped with a Riemannian metric , and a convex domain in , equipped with the Euclidean metric . Consider a diffeomorphism . Let be a geodesic arc and its -preimage. We denote by the segment in that shares its ends with the arc .

Assume that, for some and any geodesic arc , the Euclidean lengths of and satisfy the inequality

 lE(~γ)<(1+ϵ)⋅lE(λ(~γ)).

Then the arc is contained in the -neighborhood of the segment .

###### Proof.

Put . Consider the hyperplane , perpendicular to the segment at a typical point . That hyperplane must hit the curve at least at one point . Consider the maximum

Let be the point where this maximum is achieved. Put . We form two right triangles, and , with the verticies and , respectively. Consider the Euclidean distances:

 l1=def\textupdist(~a,c⋆),l2=def\textupdist(c⋆,~b),L1=def\textupdist(~a,e⋆),L2=def\textupdist(e⋆,~b)

and put , . Then and .

Since is the distance between and , and is the distance between and , we get

 L=L1+L2=√(h2+l21)+√(h2+l22)≤lgE(~γ).

By the hypotheses, the LHS of this inequality does not exceed . Hence

 √(h2+l21)l+√(h2+l22)l≤1+ϵ.

Let . Then . This substitution transforms the previous inequalities into the following one:

So we get the desired inequality

Let be the standard -simplex, residing in and equipped with the Euclidean metric. We denote by and the first and the second barycentric subdivisions of . For any vertex , we form its star in . For any , we denote by the -homothetic image of , the center of homothety being at . Consider the set

 St(θ)=def∐a∈βΔSt(a,θ).

By a line in we mean an intersection of an affine line in with .

###### Lemma 2.4.

There exists a number such that every line has a point that belongs to the interior of .222It is desirable to find an elementary argument that explicitly computes as a function of .

###### Proof.

Let be a typical simplex of . It will suffice to show that there exists an universal , such that any line has a point that belongs to the interior of some set , for a vertex .

For each , consider the polyhedron . For each simplex of , put .

The space of lines in is compact; in fact, it is a continuous image of a compact subset of the Grassmanian . consists of the -planes through the point that have a nonempty intersections with . Here the hyperplane is defined by equating the first coordinate with zero. This construction gives rise to a continuous map . Any line whose intersection with is not a singleton (equivalently whose intersection with is not a vertex of ), defines a unique point in .

Consider an increasing sequence that converges to 1. Contrarily to the claim of the lemma, assume that for each , there exists a line that is contained in the polyhedron .

Using compactness of , there exists a subsequence that converges to a limiting line . Then . Note that is missing the verticies of . On the other hand, by the construction of , if a line has a pair of distinct points such that the segment , then .

This contradiction proves that exists for which no line in is contained in . The definition of the polyhedron is given by an affine (metric-indepentent) construction. So the polyhedra for different match automatically.

Thus there is a number such that, for each , every line hits the set

###### Conjecture 2.1.

Let be a compact smooth Riemannian manifold. For any sufficiently small , admits a smooth -flat triangulation .

###### Theorem 2.1.

Let be as in Lemma 2.4. Put , and let denote the Euclidean distance between the sets and in the standard simplex .

• Let be a closed connected smooth Riemannian -manifold that admits a -flat smooth triangulation333By Conjecture 2.2, any will do.. Then there exists a smooth -ball such that the restriction of the metric to is of the gradient type.

• If is a compact connected Riemannian -manifold with boundary that admits a -flat smooth triangulation. Then, for each connected component of the boundary , there exists a relative -ball , where is the -ball, so that all the balls are disjointed and the restriction of the metric to the manifold is of the gradient type. The manifolds and are diffeomorphic.

###### Proof.

The idea is first to construct a number of disjointed balls in so that each geodesic curve will hit some ball. Thus deleting such balls from will produce a “geodesically traversing swiss cheese”. When is closed, we will incorporate all the balls into a single smooth one. When has a boundary, then the balls will be incorporated in a domain, whose removal from does not change the smooth topology of .

Let and denote the first and second barycentric subdivisions of a given smooth triangulation . As before, is assembled from a collection of singular simplicies .

Put , . By the hypotheses, there exists a smooth -flat smooth triangulation .

Then, for any geodesic curve , its -preimage in the simplex is contained in the -neighborhood of a line . By Lemma 2.4, that line contains a point whose -neighborhood is contained in the set . So, by Definition 2.3, the curve must intersect the neighborhood . As a result, has a non-empty intersection with the set , a finite disjoint union of -dimensional -balls , centered on the vertices of in .

We can smoothen their boundaries by encapsulating each ball into a smooth ball so that for all distinct .

When is closed, we place the disjoint union inside of a single smooth ball . This may be accomplished by attaching -handles to so that the cores of the handles form a tree. Any geodesic in hits since it hits .

In the case of a non-empty boundary , by attaching first some relative -handles , whose cores reside in , transforms into a disjoint union of several -balls, each ball residing in its connected component of . Again, in each component of , the attaching the handles is guided by a tree.

In the process, we incapsulate into a disjoint union of several smooth balls that reside in the interior of and several relative balls, each of which is touching the corresponding boundary component . These relative balls are in 1-to-1 correspondence with the boundary components. Then connecting the balls in the interior on to the balls that touch the boundary by -handles (which reside in ) produces the desired relative pairs , one pair per component of . Again, any geodesic in hits the disjoint union of these pairs. The removal of the union from results in a smooth manifold , which is diffeomorphic to . ∎

###### Corollary 2.2.

If a compact connected smooth Riemannian -manifold with boundary admits a -flat triangulation, then admits a Riemannian metric of the gradient type.

In fact, the subspace of such metrics is nonempty and open in the space of all Riemannian metrics on .

###### Proof.

Use Theorem 2.1 to conclude that is a nonempty set. By Lemma 2.1, is open in the space . ∎

Note that the smooth balls, whose removal from (the “geodesic Swiss cheese”) delivers, by Theorem 2.1, a metric of the gradient type on , are not necessarily convex in the original metric .

###### Conjecture 2.2.

For any compact smooth Riemannian manifold , there exists a finite disjoint union of smooth convex balls whose removal from delivers the metric of the gradient type on their complement .

###### Definition 2.4.

Let be a compact connected Riemannian manifold with boundary.

• We say that a metric on is geodesically boundary generic if the geodesic vector field is boundary generic444See Definition 2.1 from [K1] and the discussion that precedes Definition 2.1. with respect to the boundary .

• We say that a metric on is geodesically traversally generic if the vector field is of the gradient type and is traversally generic555See Definition 3.2 from [K2]. with respect to .

We denote the space of all gradient type metrics on by the symbol , the space of all geodesically boundary generic metrics of the gradient type on by the symbol , and the space of all geodesically traversally generic metrics on by the symbol . So we get .

Remark 2.2. If is such that there exists a geodesic curve whose arc is contained in , then the metric is not geodesically boundary generic in the sense of Definition 2.4. For example, the Euclidean metric on is not geodesicly boundary generic with respect to the ruled surface : indeed, is comprised of lines (geodesics).

Example 2.2. Let be a domain in the Euclidean plane , bounded by simple smooth closed curves. Then the flat metric is boundary generic on if and only if is comprised of strictly concave and convex loops or arcs that are separated by the cubic inflection points. In particular, no line, tangent to the boundary, has order of tangency that exceed 3 (see Example 3.1 for the details).

###### Question 2.1.

How to formulate the property of the geodesic vector field being boundary generic/traversally generic with respect to in terms of the geodesic curves and Jacobi fields in and their interactions with ?

Remark 2.3. Of course, not any metric on is of the gradient type. At the same time, thanks to Theorem 2.1, the gradient-type metrics form a massive set.

Examples of geodesically boundary generic metrics are also not so hard to exhibit. They require only a localized control of the geometry of in terms of (see Lemmas 3.2 and 3.3). For instance, if all the components of are either strictly convex or strictly concave in , then is geodesically boundary generic.

In contrast, to manufacture a geodesicly traversally generic metric is a more delicate task. In fact, we know only few examples, where gradient type metrics are proven to be of the traversally generic type: these examples have gradient-type metrics in which the boundary is strictly convex (see Corollary 3.7). However, we suspect that traversally generic metrics are abundant (see Conjecture 2.3). In any case, by Theorem 2.2 below, the property of a metric to be traversally generic is stable under small smooth perturbations of .

So we have only a weak evidence for the validity of following conjecture; however, the world in which it is valid seems to be a pleasing place…

###### Conjecture 2.3.

The sets and are open and dense in the space .

The openness of and in follows from the theorem below.

###### Theorem 2.2.

Let be a compact smooth connected manifold with boundary.

In the space of all Riemannian metrics on , equipped with the -topology, the spaces and are open. Each of these spaces is invariant under the natural action of the smooth diffeomorphism group on .

If a metric on is of the gradient type, then the geodesic field on can be approximated arbitrary well in the -topology by a traversally generic field .

###### Proof.

The construction of the geodesic flow defines a continuous map

 F:R(M)→V(SM),

where denotes the space of all vector fields on . By Theorem 6.7 and Corollary 6.4 from [K2], the subspace , formed by traversally generic (and thus gradient-like) vector fields, is open in . Similarly, the boundary generic and traversing fields form an open set in .

Since the germ of the geodesic through a point in the direction of a given unit tangent vector depends smoothly on metric , we conclude that is a continuous map. Therefore,

 G‡(M)=defF−1(V‡(SM))

and

 G†(M)=defF−1(V†(SM)∩Vtrav(SM))

are open sets in .

By definition, for any , the geodesic field on is of the gradient type (and thus traversing). Again, by Theorem 6.7 from [K2], can be approximated by a traversally generic field . Note however that the projections of -trajectories under the map may not stay -close to the geodesic lines in the original metric due to the concave boundary effects.

By Theorem 2.1, . Nevertheless, the question whether for a given remains open!

Evidently, by the “naturality” of the geodesic flow, the spaces , are invariant under the natural action of the smooth diffeomorphism group on . ∎

Remark 2.4. Let be a codimension compact submanifold of a compact Riemannian manifold such that . If a metric on the ambient is of the gradient type, then, by Corollary 2.2, its restriction is of the gradient type on .

Of course, if is geodesicly traversally generic on a compact manifold , it may not be geodesically traversally generic on .

Example 2.3. Consider the hyperbolic space with its virtual spherical boundary and hyperbolic metric . is modeled by the open unit ball in the Euclidean space .

Each geodesic line hits at a pair of points, where it is orthogonal (in the Eucledian metric) to . For each oriented geodesic line trough a given point in the direction of a given vector , consider the distance between and the unique point that can be reached from by moving along in the direction of , that is, is the length of the circular arc in . Evidently, is strictly increasing, as one moves along the oriented .

Let be a compact codimension smooth submanifold, equipped with the induced hyperbolic metric. Then the geodesic field on the space is of the gradient type, since is strictly increasing along the oriented trajectories of .

Again, by Theorem 2.2, any metric on , sufficiently close to the hyperbolic metric , is also of the gradient type.

## 3. The Geodesic Scattering and Holography

In this section, we will apply the Holographic Causality Principle [K4], to geodesic flows on the spaces of unit tangent vectors on compact smooth Riemannian manifolds with boundary.

We will be guided by a single important observation: if a metric on is of the gradient type, then the causality map

 Cvg:∂+1(SM)→∂−1(SM),

introduced in [K4] (for generic smooth traversing vector fields on compact manifolds with boundary), is available! To get a feel for the nature of the causality map from [K4], the reader may glance at Figure 3. It depicts the causality map for a traversing field on a surface with boundary.

The map represents the -induced geodesic scattering: indeed, with the help of , each unit tangent vector


text:
Originally, it was a group project (group of four) in CSE Advance Algorithms course. Even though I was exempetd, I accomplished and submitted this project individually, and won one of the performance competitions. In this project, I developed multiple different algorithms, including

• (1) Brute-Force,
• (2) Branch-And-Bound (BnB),
• (3) Approximation,
• (4) Multiple Local Search Approaches,
in Python. At the end, a comprehensive report is presented including algorithms details, empirical evaluations, accuracy tables and evaluation plots (QRTDs, SQDs, etc.).

format: plain


text:
# How to differentiate functions with x in their exponents

1. Jul 14, 2011

### canger

I'm not sure how to differentiate y with respect to x for:

y = (7x^2)^[x^2]

Any ideas?

2. Jul 14, 2011

### Isak BM

$y = {(7x^2)}^{x^2}$

Mission: To find $\frac{dy}{dx}$

We want to eliminate the problem of the exponent $x^2$.
There are several ways, but here's one neat way. Take the natural logarithm of both sides. In each step i will write in red what mathematical identity I have used to get to the expression.

$\ln(y) = \ln({(7x^2)}^{x^2})$

$\ln(y) = x^2\ln(7x^2)$ $\ln{(a^b)} = b\ln(a)$

$\ln(y) = x^2\ln{({(\sqrt{7}x)}^2)}$ $ab^2 = {(\sqrt{a}b)}^2$

$\ln(y) = 2x^2\ln{(\sqrt{7}x)}$ $\ln{(a^b)} = b\ln{a}$

Now raise $e$ to the power of each side to get.

$y = e^{2x^2\ln(\sqrt{7}x)}$

What remains is just deriving this expression, and to do so you only need to know the chain rule and product rule, and how to derive $e^x$.

Ok, so lets do the remaining.

$\frac{dy}{dx} = \frac{d}{dx}e^{2x^2\ln(\sqrt{7}x)} = e^{2x^2\ln(\sqrt{7}x)}\cdot \frac{d}{dx}2x^2\ln(\sqrt{7}x)$ Chain rule

Now

$\frac{d}{dx}2x^2\ln(\sqrt{7}x) = 4x\ln(\sqrt{7}x) + 2x^2 \frac{1}{x} = 2x(\ln(7x^2) +1)$ Product rule

Thus

$\frac{dy}{dx} = 2x(\ln(7x^2) +1)e^{2x^2\ln(\sqrt{7}x)} = 2x(\ln(7x^2) +1){(7x^2)}^{x^2}$

Last edited: Jul 14, 2011
3. Jul 14, 2011

### DivisionByZro

Use the chain rule with u=x^2, and v=x^2. Factor out the constant, and your answer should appear quickly.


text:
# ga

Find minimum of function using genetic algorithm

## Description

example

x = ga(fun,nvars) finds a local unconstrained minimum, x, to the objective function, fun. nvars is the dimension (number of design variables) of fun.

Note

Passing Extra Parameters explains how to pass extra parameters to the objective function and nonlinear constraint functions, if necessary.

example

x = ga(fun,nvars,A,b) finds a local minimum x to fun, subject to the linear inequalities A*x ≤ b. ga evaluates the matrix product A*x as if x is transposed (A*x').

example

x = ga(fun,nvars,A,b,Aeq,beq) finds a local minimum x to fun, subject to the linear equalities Aeq*x = beq and A*x ≤ b. (Set A=[] and b=[] if no linear inequalities exist.) ga evaluates the matrix product Aeq*x as if x is transposed (Aeq*x').

example

x = ga(fun,nvars,A,b,Aeq,beq,lb,ub) defines a set of lower and upper bounds on the design variables, x, so that a solution is found in the range lb  x  ub. (Set Aeq=[] and beq=[] if no linear equalities exist.)

example

x = ga(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon) subjects the minimization to the constraints defined in nonlcon. The function nonlcon accepts x and returns vectors C and Ceq, representing the nonlinear inequalities and equalities respectively. ga minimizes the fun such that C(x)  0 and Ceq(x) = 0. (Set lb=[] and ub=[] if no bounds exist.)

example

x = ga(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon,options) minimizes with the default optimization parameters replaced by values in options. (Set nonlcon=[] if no nonlinear constraints exist.) Create options using optimoptions.

example

x = ga(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon,intcon) or x = ga(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon,intcon,options) requires that the variables listed in intcon take integer values.

Note

When there are integer constraints, ga does not accept nonlinear equality constraints, only nonlinear inequality constraints.

x = ga(problem) finds the minimum for problem, a structure described in problem.

example

[x,fval] = ga(___), for any previous input arguments, also returns fval, the value of the fitness function at x.

example

[x,fval,exitflag,output] = ga(___) also returns exitflag, an integer identifying the reason the algorithm terminated, and output, a structure that contains output from each generation and other information about the performance of the algorithm.

example

[x,fval,exitflag,output,population,scores] = ga(___) also returns a matrix population, whose rows are the final population, and a vector scores, the scores of the final population.

## Examples

collapse all

The ps_example.m file is included when you run this example. Plot the function.

xi = linspace(-6,2,300);
yi = linspace(-4,4,300);
[X,Y] = meshgrid(xi,yi);
Z = ps_example([X(:),Y(:)]);
Z = reshape(Z,size(X));
surf(X,Y,Z,'MeshStyle','none')
colormap 'jet'
view(-26,43)
xlabel('x(1)')
ylabel('x(2)')
title('ps\_example(x)')

Find the minimum of this function using ga.

rng default % For reproducibility
x = ga(@ps_example,2)
Optimization terminated: average change in the fitness value less than options.FunctionTolerance.
x = 1×2

-4.6793   -0.0860

Use the genetic algorithm to minimize the ps_example function on the region x(1) + x(2) >= 1 and x(2) <= 5 + x(1). This function is included when you run this example.

First, convert the two inequality constraints to the matrix form A*x <= b. In other words, get the x variables on the left-hand side of the inequality, and make both inequalities less than or equal:

-x(1) -x(2) <= -1

-x(1) + x(2) <= 5

A = [-1,-1;
-1,1];
b = [-1;5];

Solve the constrained problem using ga.

rng default % For reproducibility
fun = @ps_example;
x = ga(fun,2,A,b)
Optimization terminated: average change in the fitness value less than options.FunctionTolerance.
x = 1×2

0.9992    0.0000

The constraints are satisfied to within the default value of the constraint tolerance, 1e-3. To see this, compute A*x' - b, which should have negative components.

disp(A*x' - b)
0.0008
-5.9992

Use the genetic algorithm to minimize the ps_example function on the region x(1) + x(2) >= 1 and x(2) == 5 + x(1). This function is included when you run this example.

First, convert the two constraints to the matrix form A*x <= b and Aeq*x = beq. In other words, get the x variables on the left-hand side of the expressions, and make the inequality into less than or equal form:

-x(1) -x(2) <= -1

-x(1) + x(2) == 5

A = [-1 -1];
b = -1;
Aeq = [-1 1];
beq = 5;

Solve the constrained problem using ga.

rng default % For reproducibility
fun = @ps_example;
x = ga(fun,2,A,b,Aeq,beq)
Optimization terminated: average change in the fitness value less than options.FunctionTolerance.
x = 1×2

-2.0005    2.9995

Check that the constraints are satisfied to within the default value of ConstraintTolerance, 1e-3.

disp(A*x' - b)
1.0000e-03
disp(Aeq*x' - beq)
-1.5494e-05

Use the genetic algorithm to minimize the ps_example function on the region x(1) + x(2) >= 1 and x(2) == 5 + x(1). The ps_example function is included when you run this example. In addition, set bounds 1 <= x(1) <= 6 and -3 <= x(2) <= 8.

First, convert the two linear constraints to the matrix form A*x <= b and Aeq*x = beq. In other words, get the x variables on the left-hand side of the expressions, and make the inequality into less than or equal form:

-x(1) -x(2) <= -1

-x(1) + x(2) == 5

A = [-1 -1];
b = -1;
Aeq = [-1 1];
beq = 5;

Set bounds lb and ub.

lb = [1 -3];
ub = [6 8];

Solve the constrained problem using ga.

rng default % For reproducibility
fun = @ps_example;
x = ga(fun,2,A,b,Aeq,beq,lb,ub)
Optimization terminated: average change in the fitness value less than options.FunctionTolerance.
x = 1×2

1.0000    6.0000

Check that the linear constraints are satisfied to within the default value of ConstraintTolerance, 1e-3.

disp(A*x' - b)
-6.0000
disp(Aeq*x' - beq)
-7.9765e-08

Use the genetic algorithm to minimize the ps_example function on the region $2{\mathit{x}}_{1}^{2}+{\mathit{x}}_{2}^{2}\le 3$ and $\left({x}_{1}+1{\right)}^{2}=\left({x}_{2}/2{\right)}^{4}$. The ps_example function is included when you run this example.

To do so, use the function ellipsecons.m that returns the inequality constraint in the first output, c, and the equality constraint in the second output, ceq. The ellipsecons function is included when you run this example. Examine the ellipsecons code.

type ellipsecons
function [c,ceq] = ellipsecons(x)

c = 2*x(1)^2 + x(2)^2 - 3;
ceq = (x(1)+1)^2 - (x(2)/2)^4;

Include a function handle to ellipsecons as the nonlcon argument.

nonlcon = @ellipsecons;
fun = @ps_example;
rng default % For reproducibility
x = ga(fun,2,[],[],[],[],[],[],nonlcon)
Optimization terminated: average change in the fitness value less than options.FunctionTolerance
and constraint violation is less than options.ConstraintTolerance.
x = 1×2

-0.9766    0.0362

Check that the nonlinear constraints are satisfied at x. The constraints are satisfied when c ≤ 0 and ceq = 0 to within the default value of ConstraintTolerance, 1e-3.

[c,ceq] = nonlcon(x)
c = -1.0911
ceq = 5.4645e-04

Use the genetic algorithm to minimize the ps_example function on the region x(1) + x(2) >= 1 and x(2) == 5 + x(1) using a constraint tolerance that is smaller than the default. The ps_example function is included when you run this example.

First, convert the two constraints to the matrix form A*x <= b and Aeq*x = beq. In other words, get the x variables on the left-hand side of the expressions, and make the inequality into less than or equal form:

-x(1) -x(2) <= -1

-x(1) + x(2) == 5

A = [-1 -1];
b = -1;
Aeq = [-1 1];
beq = 5;

To obtain a more accurate solution, set a constraint tolerance of 1e-6. And to monitor the solver progress, set a plot function.

options = optimoptions('ga','ConstraintTolerance',1e-6,'PlotFcn', @gaplotbestf);

Solve the minimization problem.

rng default % For reproducibility
fun = @ps_example;
x = ga(fun,2,A,b,Aeq,beq,[],[],[],options)
Optimization terminated: average change in the fitness value less than options.FunctionTolerance.

x = 1×2

-2.0000    3.0000

Check that the linear constraints are satisfied to within 1e-6.

disp(A*x' - b)
9.9967e-07
disp(Aeq*x' - beq)
-2.9701e-08

Use the genetic algorithm to minimize the ps_example function subject to the constraint that x(1) is an integer. This function is included when you run this example.

intcon = 1;
rng default % For reproducibility
fun = @ps_example;
A = [];
b = [];
Aeq = [];
beq = [];
lb = [];
ub = [];
nonlcon = [];
x = ga(fun,2,A,b,Aeq,beq,lb,ub,nonlcon,intcon)
Optimization terminated: average change in the penalty fitness value less than options.FunctionTolerance
and constraint violation is less than options.ConstraintTolerance.
x = 1×2

-5.0000   -0.0834

Use the genetic algorithm to minimize an integer-constrained nonlinear problem. Obtain both the location of the minimum and the minimum function value. The objective function, ps_example, is included when you run this example.

intcon = 1;
rng default % For reproducibility
fun = @ps_example;
A = [];
b = [];
Aeq = [];
beq = [];
lb = [];
ub = [];
nonlcon = [];
[x,fval] = ga(fun,2,A,b,Aeq,beq,lb,ub,nonlcon,intcon)
Optimization terminated: average change in the penalty fitness value less than options.FunctionTolerance
and constraint violation is less than options.ConstraintTolerance.
x = 1×2

-5.0000   -0.0834

fval = -1.8344

Compare this result to the solution of the problem with no constraints.

[x,fval] = ga(fun,2)
Optimization terminated: average change in the fitness value less than options.FunctionTolerance.
x = 1×2

-4.6906   -0.0078

fval = -1.9918

Use the genetic algorithm to minimize the ps_example function constrained to have x(1) integer-valued. The ps_example function is included when you run this example. To understand the reason the solver stopped and how ga searched for a minimum, obtain the exitflag and output results. Also, plot the minimum observed objective function value as the solver progresses.

intcon = 1;
rng default % For reproducibility
fun = @ps_example;
A = [];
b = [];
Aeq = [];
beq = [];
lb = [];
ub = [];
nonlcon = [];
options = optimoptions('ga','PlotFcn', @gaplotbestf);
[x,fval,exitflag,output] = ga(fun,2,A,b,Aeq,beq,lb,ub,nonlcon,intcon,options)

Optimization terminated: average change in the penalty fitness value less than options.FunctionTolerance
and constraint violation is less than options.ConstraintTolerance.
x = 1×2

-5.0000   -0.0834

fval = -1.8344
exitflag = 1
output = struct with fields:
problemtype: 'integerconstraints'
rngstate: [1x1 struct]
generations: 86
funccount: 3311
message: 'Optimization terminated: average change in the penalty fitness value less than options.FunctionTolerance...'
maxconstraint: 0
hybridflag: []

Use the genetic algorithm to minimize the ps_example function constrained to have x(1) integer-valued. The ps_example function is included when you run this example. Obtain all outputs, including the final population and vector of scores.

intcon = 1;
rng default % For reproducibility
fun = @ps_example;
A = [];
b = [];
Aeq = [];
beq = [];
lb = [];
ub = [];
nonlcon = [];
[x,fval,exitflag,output,population,scores] = ga(fun,2,A,b,Aeq,beq,lb,ub,nonlcon,intcon);
Optimization terminated: average change in the penalty fitness value less than options.FunctionTolerance
and constraint violation is less than options.ConstraintTolerance.

Examine the first 10 members of the final population and their corresponding scores. Notice that x(1) is integer-valued for all these population members. The integer ga algorithm generates only integer-feasible populations.

disp(population(1:10,:))
1.0e+03 *

-0.0050   -0.0001
-0.0050   -0.0001
-1.6420    0.0027
-1.5070    0.0010
-0.4540    0.0104
-0.2530   -0.0011
-0.1210   -0.0003
-0.1040    0.1314
-0.0140   -0.0010
0.0160   -0.0002
disp(scores(1:10))
1.0e+06 *

-0.0000
-0.0000
2.6798
2.2560
0.2016
0.0615
0.0135
0.0099
0.0001
0.0000

## Input Arguments

collapse all

Objective function, specified as a function handle or function name. Write the objective function to accept a row vector of length nvars and return a scalar value.

When the 'UseVectorized' option is true, write fun to accept a pop-by-nvars matrix, where pop is the current population size. In this case, fun returns a vector the same length as pop containing the fitness function values. Ensure that fun does not assume any particular size for pop, since ga can pass a single member of a population even in a vectorized calculation.

Example: fun = @(x)(x-[4,2]).^2

Data Types: char | function_handle | string

Number of variables, specified as a positive integer. The solver passes row vectors of length nvars to fun.

Example: 4

Data Types: double

Linear inequality constraints, specified as a real matrix. A is an M-by-nvars matrix, where M is the number of inequalities.

A encodes the M linear inequalities

A*x <= b,

where x is the column vector of nvars variables x(:), and b is a column vector with M elements.

For example, to specify

x1 + 2x2 ≤ 10
3x1 + 4x2 ≤ 20
5x1 + 6x2 ≤ 30,

give these constraints:

A = [1,2;3,4;5,6];
b = [10;20;30];

Example: To specify that the control variables sum to 1 or less, give the constraints A = ones(1,N) and b = 1.

Data Types: double

Linear inequality constraints, specified as a real vector. b is an M-element vector related to the A matrix. If you pass b as a row vector, solvers internally convert b to the column vector b(:).

b encodes the M linear inequalities

A*x <= b,

where x is the column vector of N variables x(:), and A is a matrix of size M-by-N.

For example, to specify

x1 + 2x2 ≤ 10
3x1 + 4x2 ≤ 20
5x1 + 6x2 ≤ 30,

give these constraints:

A = [1,2;3,4;5,6];
b = [10;20;30];

Example: To specify that the control variables sum to 1 or less, give the constraints A = ones(1,N) and b = 1.

Data Types: double

Linear equality constraints, specified as a real matrix. Aeq is an Me-by-nvars matrix, where Me is the number of equalities.

Aeq encodes the Me linear equalities

Aeq*x = beq,

where x is the column vector of N variables x(:), and beq is a column vector with Me elements.

For example, to specify

x1 + 2x2 + 3x3 = 10
2x1 + 4x2 + x3 = 20,

give these constraints:

Aeq = [1,2,3;2,4,1];
beq = [10;20];

Example: To specify that the control variables sum to 1, give the constraints Aeq = ones(1,N) and beq = 1.

Data Types: double

Linear equality constraints, specified as a real vector. beq is an Me-element vector related to the Aeq matrix. If you pass beq as a row vector, solvers internally convert beq to the column vector beq(:).

beq encodes the Me linear equalities

Aeq*x = beq,

where x is the column vector of N variables x(:), and Aeq is a matrix of size Meq-by-N.

For example, to specify

x1 + 2x2 + 3x3 = 10
2x1 + 4x2 + x3 = 20,

give these constraints:

Aeq = [1,2,3;2,4,1];
beq = [10;20];

Example: To specify that the control variables sum to 1, give the constraints Aeq = ones(1,N) and beq = 1.

Data Types: double

Lower bounds, specified as a real vector or array of doubles. lb represents the lower bounds element-wise in lb  x  ub.

Internally, ga converts an array lb to the vector lb(:).

Example: lb = [0;-Inf;4] means x(1) ≥ 0, x(3) ≥ 4.

Data Types: double

Upper bounds, specified as a real vector or array of doubles. ub represents the upper bounds element-wise in lb  x  ub.

Internally, ga converts an array ub to the vector ub(:).

Example: ub = [Inf;4;10] means x(2) ≤ 4, x(3) ≤ 10.

Data Types: double

Nonlinear constraints, specified as a function handle or function name. nonlcon is a function that accepts a vector or array x and returns two arrays, c(x) and ceq(x).

• c(x) is the array of nonlinear inequality constraints at x. ga attempts to satisfy

c(x) <= 0

for all entries of c.

• ceq(x) is the array of nonlinear equality constraints at x. ga attempts to satisfy

ceq(x) = 0

for all entries of ceq.

For example,

x = ga(@myfun,4,A,b,Aeq,beq,lb,ub,@mycon)

where mycon is a MATLAB® function such as

function [c,ceq] = mycon(x)
c = ...     % Compute nonlinear inequalities at x.
ceq = ...   % Compute nonlinear equalities at x.

To learn how to use vectorized constraints, see Vectorized Constraints.

Note

ga does not enforce nonlinear constraints to be satisfied when the PopulationType option is set to 'bitString' or 'custom'.

If intcon is not empty, the second output of nonlcon (ceq) must be an empty entry ([]).

For information on how ga uses nonlcon, see Nonlinear Constraint Solver Algorithms.

Data Types: char | function_handle | string

Optimization options, specified as the output of optimoptions or a structure.

optimoptions hides the options listed in italics. See Options that optimoptions Hides.

• Values in {} denote the default value.

• {}* represents the default when there are linear constraints, and for MutationFcn also when there are bounds.

• I* indicates default for integer constraints, or indicates special considerations for integer constraints.

• NM indicates that the option does not apply to gamultiobj.

Options for ga and gamultiobj

OptionDescriptionValues
ConstraintTolerance

Determines the feasibility with respect to nonlinear constraints. Also, max(sqrt(eps),ConstraintTolerance) determines feasibility with respect to linear constraints.

For an options structure, use TolCon.

Positive scalar | {1e-3}

CreationFcn

Function that creates the initial population. Specify as a name of a built-in creation function or a function handle. See Population Options.

{'gacreationuniform'} | {'gacreationlinearfeasible'}* | 'gacreationnonlinearfeasible' | {'gacreationuniformint'}I* for ga | {'gacreationsobol'}I* for gamultiobj | Custom creation function

CrossoverFcn

Function that the algorithm uses to create crossover children. Specify as a name of a built-in crossover function or a function handle. See Crossover Options.

{'crossoverscattered'} for ga, {'crossoverintermediate'}* for gamultiobj | {'crossoverlaplace'}I* | 'crossoverheuristic' | 'crossoversinglepoint' | 'crossovertwopoint' | 'crossoverarithmetic' | Custom crossover function

CrossoverFraction

The fraction of the population at the next generation, not including elite children, that the crossover function creates.

Positive scalar | {0.8}

Display

Level of display.

'off' | 'iter' | 'diagnose' | {'final'}

DistanceMeasureFcn

Function that computes the distance measure of individuals. Specify as a name of a built-in distance measure function or a function handle. The value applies to the decision variable or design space (genotype) or to function space (phenotype). The default 'distancecrowding' is in function space (phenotype). For gamultiobj only. See Multiobjective Options.

For an options structure, use a function handle, not a name.

{'distancecrowding'} means the same as {@distancecrowding,'phenotype'} | {@distancecrowding,'genotype'} | Custom distance function

EliteCount

NM Positive integer specifying how many individuals in the current generation are guaranteed to survive to the next generation. Not used in gamultiobj.

Positive integer | {ceil(0.05*PopulationSize)} | {0.05*(default PopulationSize)} for mixed-integer problems

FitnessLimit

NM If the fitness function attains the value of FitnessLimit, the algorithm halts.

Scalar | {-Inf}

FitnessScalingFcn

Function that scales the values of the fitness function. Specify as a name of a built-in scaling function or a function handle. Option unavailable for gamultiobj.

{'fitscalingrank'} | 'fitscalingshiftlinear' | 'fitscalingprop' | 'fitscalingtop' | Custom fitness scaling function

FunctionTolerance

The algorithm stops if the average relative change in the best fitness function value over MaxStallGenerations generations is less than or equal to FunctionTolerance. If StallTest is 'geometricWeighted', then the algorithm stops if the weighted average relative change is less than or equal to FunctionTolerance.

For gamultiobj, the algorithm stops when the geometric average of the relative change in value of the spread over options.MaxStallGenerations generations is less than options.FunctionTolerance, and the final spread is less than the mean spread over the past options.MaxStallGenerations generations. See gamultiobj Algorithm.

For an options structure, use TolFun.

Positive scalar | {1e-6} for ga, {1e-4} for gamultiobj

HybridFcn

I* Function that continues the optimization after ga terminates. Specify as a name or a function handle.

Alternatively, a cell array specifying the hybrid function and its options. See ga Hybrid Function.

For gamultiobj, the only hybrid function is @fgoalattain. See gamultiobj Hybrid Function.

When the problem has integer constraints, you cannot use a hybrid function.

Function name or handle | 'fminsearch' | 'patternsearch' | 'fminunc' | 'fmincon' | {[]}

or

1-by-2 cell array | {@solver, hybridoptions}, where solver = fminsearch, patternsearch, fminunc, or fmincon {[]}

InitialPenalty

NM I* Initial value of the penalty parameter

Positive scalar | {10}

InitialPopulationMatrix

Initial population used to seed the genetic algorithm. Has up to PopulationSize rows and N columns, where N is the number of variables. You can pass a partial population, meaning one with fewer than PopulationSize rows. In that case, the genetic algorithm uses CreationFcn to generate the remaining population members. See Population Options.

For an options structure, use InitialPopulation.

Matrix | {[]}

InitialPopulationRange

Matrix or vector specifying the range of the individuals in the initial population. Applies to gacreationuniform creation function. ga shifts and scales the default initial range to match any finite bounds.

For an options structure, use PopInitRange.

Matrix or vector | {[-10;10]} for unbounded components, {[-1e4+1;1e4+1]} for unbounded components of integer-constrained problems, {[lb;ub]} for bounded components, with the default range modified to match one-sided bounds

InitialScoresMatrix

Initial scores used to determine fitness. Has up to PopulationSize rows and Nf columns, where Nf is the number of fitness functions (1 for ga, greater than 1 for gamultiobj). You can pass a partial scores matrix, meaning one with fewer than PopulationSize rows. In that case, the solver fills in the scores when it evaluates the fitness functions.

For an options structure, use InitialScores.

Column vector for single objective | matrix for multiobjective | {[]}

MaxGenerations

Maximum number of iterations before the algorithm halts.

For an options structure, use Generations.

Positive integer |{100*numberOfVariables} for ga, {200*numberOfVariables} for gamultiobj

MaxStallGenerations

The algorithm stops if the average relative change in the best fitness function value over MaxStallGenerations generations is less than or equal to FunctionTolerance. If StallTest is 'geometricWeighted', then the algorithm stops if the weighted average relative change is less than or equal to FunctionTolerance.

For gamultiobj, the algorithm stops when the geometric average of the relative change in value of the spread over options.MaxStallGenerations generations is less than options.FunctionTolerance, and the final spread is less than the mean spread over the past options.MaxStallGenerations generations. See gamultiobj Algorithm.

For an options structure, use StallGenLimit.

Positive integer | {50} for ga, {100} for gamultiobj

MaxStallTime

NM The algorithm stops if there is no improvement in the objective function for MaxStallTime seconds, as measured by tic and toc.

For an options structure, use StallTimeLimit.

Positive scalar | {Inf}

MaxTime

The algorithm stops after running for MaxTime seconds, as measured by tic and toc. This limit is enforced after each iteration, so ga can exceed the limit when an iteration takes substantial time.

For an options structure, use TimeLimit.

Positive scalar | {Inf}

MigrationDirection

Direction of migration. See Migration Options.

'both' | {'forward'}

MigrationFraction

Scalar from 0 through 1 specifying the fraction of individuals in each subpopulation that migrates to a different subpopulation. See Migration Options.

Scalar | {0.2}

MigrationInterval

Positive integer specifying the number of generations that take place between migrations of individuals between subpopulations. See Migration Options.

Positive integer | {20}

MutationFcn

Function that produces mutation children. Specify as a name of a built-in mutation function or a function handle. See Mutation Options.

{'mutationgaussian'} for ga without constraints | {'mutationadaptfeasible'}* for gamultiobj and for ga with constraints | {'mutationpower'}I* | 'mutationpositivebasis' | 'mutationuniform' | Custom mutation function

NonlinearConstraintAlgorithm

Nonlinear constraint algorithm. See Nonlinear Constraint Solver Algorithms. Option unchangeable for gamultiobj.

For an options structure, use NonlinConAlgorithm.

{'auglag'} for ga, {'penalty'} for gamultiobj

OutputFcn

Functions that ga calls at each iteration. Specify as a function handle or a cell array of function handles. See Output Function Options.

For an options structure, use OutputFcns.

Function handle or cell array of function handles | {[]}

ParetoFraction

Scalar from 0 through 1 specifying the fraction of individuals to keep on the first Pareto front while the solver selects individuals from higher fronts, for gamultiobj only. See Multiobjective Options.

Scalar | {0.35}

PenaltyFactor

NM I* Penalty update parameter.

Positive scalar | {100}

PlotFcn

Function that plots data computed by the algorithm. Specify as a name of a built-in plot function, a function handle, or a cell array of built-in names or function handles. See Plot Options.

For an options structure, use PlotFcns.

ga or gamultiobj: {[]} | 'gaplotdistance' | 'gaplotgenealogy' | 'gaplotselection' | 'gaplotscorediversity' |'gaplotscores' | 'gaplotstopping' | 'gaplotmaxconstr' | Custom plot function

ga only: 'gaplotbestf' | 'gaplotbestindiv' | 'gaplotexpectation' | 'gaplotrange'

gamultiobj only: 'gaplotpareto' | 'gaplotparetodistance' | 'gaplotrankhist' | 'gaplotspread'

PlotInterval

Positive integer specifying the number of generations between consecutive calls to the plot functions.

Positive integer | {1}

PopulationSize

Size of the population.

Positive integer | {50} when numberOfVariables <= 5, {200} otherwise | {min(max(10*nvars,40),100)} for mixed-integer problems

PopulationType

Data type of the population. Must be 'doubleVector' for mixed-integer problems.

'bitstring' | 'custom' | {'doubleVector'}

ga ignores all constraints when PopulationType is set to 'bitString' or 'custom'. See Population Options.

SelectionFcn

Function that selects parents of crossover and mutation children. Specify as a name of a built-in selection function or a function handle.

gamultiobj uses only 'selectiontournament'.

{'selectionstochunif'} for ga, {'selectiontournament'} for gamultiobj | 'selectionremainder' | 'selectionuniform' | 'selectionroulette' | Custom selection function

StallTest

NM Stopping test type.

'geometricWeighted' | {'averageChange'}

UseParallel

Compute fitness and nonlinear constraint functions in parallel. See Vectorize and Parallel Options (User Function Evaluation) and How to Use Parallel Processing in Global Optimization Toolbox.

true | {false}

UseVectorized

Specifies whether functions are vectorized. See Vectorize and Parallel Options (User Function Evaluation) and Vectorize the Fitness Function.

For an options structure, use Vectorized with the values 'on' or 'off'.

true | {false}

Example: optimoptions('ga','PlotFcn',@gaplotbestf)

Integer variables, specified as a vector of positive integers taking values from 1 to nvars. Each value in intcon represents an x component that is integer-valued.

Note

When intcon is nonempty, nonlcon must return empty for ceq. For more information on integer programming, see Mixed Integer ga Optimization.

Example: To specify that the even entries in x are integer-valued, set intcon to 2:2:nvars

Data Types: double

Problem description, specified as a structure containing these fields.

 fitnessfcn Fitness functions nvars Number of design variables Aineq A matrix for linear inequality constraints Bineq b vector for linear inequality constraints Aeq Aeq matrix for linear equality constraints Beq beq vector for linear equality constraints lb Lower bound on x ub Upper bound on x nonlcon Nonlinear constraint functions intcon Indices of integer variables rngstate Field to reset the state of the random number generator solver 'ga' options Options created using optimoptions or an options structure

You must specify the fields fitnessfcn, nvars, and options. The remainder are optional for ga.

Data Types: struct

## Output Arguments

collapse all

Solution, returned as a real vector. x is the best point that ga located during its iterations.

Objective function value at the solution, returned as a real number. Generally, fval = fun(x).

Reason that ga stopped, returned as an integer.

Exit FlagMeaning
1

Without nonlinear constraints — Average cumulative change in value of the fitness function over MaxStallGenerations generations is less than FunctionTolerance, and the constraint violation is less than ConstraintTolerance.

With nonlinear constraints — Magnitude of the complementarity measure (see Complementarity Measure) is less than sqrt(ConstraintTolerance), the subproblem is solved using a tolerance less than FunctionTolerance, and the constraint violation is less than ConstraintTolerance.

3

Value of the fitness function did not change in MaxStallGenerations generations and the constraint violation is less than ConstraintTolerance.

4

Magnitude of step smaller than machine precision and the constraint violation is less than ConstraintTolerance.

5

Minimum fitness limit FitnessLimit reached and the constraint violation is less than ConstraintTolerance.

0

Maximum number of generations MaxGenerations exceeded.

-1

Optimization terminated by an output function or plot function.

-2

No feasible point found.

-4

Stall time limit MaxStallTime exceeded.

-5

Time limit MaxTime exceeded.

When there are integer constraints, ga uses the penalty fitness value instead of the fitness value for stopping criteria.

Information about the optimization process, returned as a structure with these fields:

• problemtype — Problem type, one of:

• 'unconstrained'

• 'boundconstraints'

• 'linearconstraints'

• 'nonlinearconstr'

• 'integerconstraints'

• rngstate — State of the MATLAB random number generator, just before the algorithm started. You can use the values in rngstate to reproduce the output of ga. See Reproduce Results.

• generations — Number of generations computed.

• funccount — Number of evaluations of the fitness function.

• message — Reason the algorithm terminated.

• maxconstraint — Maximum constraint violation, if any.

• hybridflag — Exit flag from the hybrid function. Relates to the HybridFcn options. Not applicable to gamultiobj.

Final population, returned as a PopulationSize-by-nvars matrix. The rows of population are the individuals.

Final scores, returned as a column vector.

• For non-integer problems, the final scores are the fitness function values of the rows of population.

• For integer problems, the final scores are the penalty fitness values of the population members. See Integer ga Algorithm.

collapse all

### Complementarity Measure

In the Augmented Lagrangian nonlinear constraint solver, the complementarity measure is the norm of the vector whose elements are ciλi, where ci is the nonlinear inequality constraint violation, and λi is the corresponding Lagrange multiplier. See Augmented Lagrangian Genetic Algorithm.

## Tips

• To write a function with additional parameters to the independent variables that can be called by ga, see Passing Extra Parameters.

• For problems that use the population type Double Vector (the default), ga does not accept functions whose inputs are of type complex. To solve problems involving complex data, write your functions so that they accept real vectors, by separating the real and imaginary parts.

## Algorithms

For a description of the genetic algorithm, see How the Genetic Algorithm Works.

For a description of the mixed integer programming algorithm, see Integer ga Algorithm.

For a description of the nonlinear constraint algorithms, see Nonlinear Constraint Solver Algorithms.

## Alternative Functionality

### App

The Optimize Live Editor task provides a visual interface for ga.

## References

[1] Goldberg, David E., Genetic Algorithms in Search, Optimization & Machine Learning, Addison-Wesley, 1989.

[2] A. R. Conn, N. I. M. Gould, and Ph. L. Toint. “A Globally Convergent Augmented Lagrangian Algorithm for Optimization with General Constraints and Simple Bounds”, SIAM Journal on Numerical Analysis, Volume 28, Number 2, pages 545–572, 1991.

[3] A. R. Conn, N. I. M. Gould, and Ph. L. Toint. “A Globally Convergent Augmented Lagrangian Barrier Algorithm for Optimization with General Inequality Constraints and Simple Bounds”, Mathematics of Computation, Volume 66, Number 217, pages 261–288, 1997.

## Version History

Introduced before R2006a

expand all


text:
# How do you avoid Null in matrix? [closed]

The following matrix equation is a Lyapunov equation,

$$mA.x+ x.mA^T=-mC,$$

the matrix $$mA$$ is given by

$$ mA= $$\begin{pmatrix} -\frac {\gamma}{2} & \omega_{m} & 0 & 0\\\\ -\omega_{m} &-\frac {\gamma}{2} & -2G & 0\\\\ 0 & 0 & -\frac {\kappa}{2} & -\Delta\\\\ -2G & 0 & \Delta & -\frac {\kappa}{2} \end{pmatrix}$$ $$

and the matrix $$mC$$ is given by

$$mC= \begin{pmatrix} 0 & 0 & 0 & 0\\\\ 0 & \gamma (2n+1) & 0 & 0\\\\ 0 & 0 & \kappa & 0\\\\ 0 & 0 & 0 & \kappa \end{pmatrix}$$

With[{x = Array[x, Dimensions[mA]]},  x /. Solve[mA .x + x. mA^T + mC == 0,Flatten@x]]

I got an output like this How can linear matrix equations like these be solved in terms of the given parameters?

• Note that LyapunovSolve is the first hit when searching for "Lyapunov equation" in the documentation center. – Michael E2 Jun 22 '19 at 23:52
• People here generally like users to post code as Mathematica code instead of (i.e. in addition to) just images or TeX, so they can copy-paste it. It makes it convenient for them and more likely you will get someone to help you. You may find this meta Q&A helpful – Michael E2 Jun 22 '19 at 23:53

There's LyapunovSolve[]:
LyapunovSolve[mA, -mC]


text:
# Relay Core Tensor Operators¶

This page contains the list of core tensor operator primitives pre-defined in tvm.relay. The core tensor operator primitives cover typical workloads in deep learning. They can represent workloads in front-end frameworks and provide basic building blocks for optimization. Since deep learning is a fast evolving field, it is possible to have operators that are not in here.

Note

This document will directly list the function signature of these operators in the python frontend.

## Overview of Operators¶

Level 1: Basic Operators

This level enables fully connected multi-layer perceptron.

 tvm.relay.log Compute elementwise log of data. tvm.relay.sqrt Compute elementwise sqrt of data. tvm.relay.rsqrt Compute elementwise rsqrt of data. tvm.relay.exp Compute elementwise exp of data. tvm.relay.sigmoid Compute elementwise sigmoid of data. tvm.relay.add Addition with numpy-style broadcasting. tvm.relay.subtract Subtraction with numpy-style broadcasting. tvm.relay.multiply Multiplication with numpy-style broadcasting. tvm.relay.divide Division with numpy-style broadcasting. tvm.relay.mod Mod with numpy-style broadcasting. tvm.relay.tanh Compute element-wise tanh of data. tvm.relay.concatenate Concatenate the input tensors along the given axis. tvm.relay.expand_dims Insert num_newaxis axises at the position given by axis. tvm.relay.nn.softmax Computes softmax. tvm.relay.nn.log_softmax Computes log softmax. tvm.relay.nn.relu Rectified linear unit. tvm.relay.nn.dropout Applies the dropout operation to the input array. tvm.relay.nn.batch_norm Batch normalization layer (Ioffe and Szegedy, 2014). tvm.relay.nn.bias_add add_bias operator.

Level 2: Convolutions

This level enables typical convnet models.

 tvm.relay.nn.conv2d 2D convolution. tvm.relay.nn.conv2d_transpose Two dimensional transposed convolution operator. tvm.relay.nn.conv3d 3D convolution. tvm.relay.nn.conv3d_transpose 3D transpose convolution. tvm.relay.nn.dense Dense operator. tvm.relay.nn.max_pool2d 2D maximum pooling operator. tvm.relay.nn.max_pool3d 3D maximum pooling operator. tvm.relay.nn.avg_pool2d 2D average pooling operator. tvm.relay.nn.avg_pool3d 3D average pooling operator. tvm.relay.nn.global_max_pool2d 2D global maximum pooling operator. tvm.relay.nn.global_avg_pool2d 2D global average pooling operator. tvm.relay.nn.upsampling Upsampling. tvm.relay.nn.upsampling3d 3D Upsampling. tvm.relay.nn.batch_flatten BatchFlatten. tvm.relay.nn.pad Padding tvm.relay.nn.lrn This operator takes data as input and does local response normalization. tvm.relay.nn.l2_normalize Perform L2 normalization on the input data tvm.relay.nn.bitpack Tensor packing for bitserial operations. tvm.relay.nn.bitserial_dense Bitserial Dense operator. tvm.relay.nn.bitserial_conv2d 2D convolution using bitserial computation. tvm.relay.nn.contrib_conv2d_winograd_without_weight_transform 2D convolution with winograd algorithm. tvm.relay.nn.contrib_conv2d_winograd_weight_transform Weight Transformation part for 2D convolution with winograd algorithm. tvm.relay.nn.contrib_conv3d_winograd_without_weight_transform 3D convolution with winograd algorithm. tvm.relay.nn.contrib_conv3d_winograd_weight_transform Weight Transformation part for 3D convolution with winograd algorithm.

Level 3: Additional Math And Transform Operators

This level enables additional math and transform operators.

 tvm.relay.nn.leaky_relu This operator takes data as input and does Leaky version of a Rectified Linear Unit. tvm.relay.nn.prelu This operator takes data as input and does Leaky version of a Rectified Linear Unit. tvm.relay.reshape Reshape the input array. tvm.relay.reshape_like Reshapes the input array by the size of another array. tvm.relay.copy Copy a tensor. tvm.relay.transpose Permutes the dimensions of an array. tvm.relay.squeeze Squeeze axes in the array. tvm.relay.floor Compute element-wise floor of data. tvm.relay.ceil Compute element-wise ceil of data. tvm.relay.sign Compute element-wise absolute of data. tvm.relay.trunc Compute element-wise trunc of data. tvm.relay.clip Clip the elements in a between a_min and a_max. tvm.relay.round Compute element-wise round of data. tvm.relay.abs Compute element-wise absolute of data. tvm.relay.negative Compute element-wise negative of data. tvm.relay.take Take elements from an array along an axis. tvm.relay.zeros Fill array with zeros. tvm.relay.zeros_like Returns an array of zeros, with same type and shape as the input. tvm.relay.ones Fill array with ones. tvm.relay.ones_like Returns an array of ones, with same type and shape as the input. tvm.relay.gather Gather values along given axis from given indices. tvm.relay.gather_nd Gather elements or slices from data and store to a tensor whose shape is defined by indices. tvm.relay.full Fill array with scalar value. tvm.relay.full_like Return a scalar value array with the same shape and type as the input array. tvm.relay.cast Cast input tensor to data type. tvm.relay.reinterpret Reinterpret input tensor to data type. tvm.relay.split Split input tensor along axis by sections or indices. tvm.relay.arange Return evenly spaced values within a given interval. tvm.relay.meshgrid Create coordinate matrices from coordinate vectors. tvm.relay.stack Join a sequence of arrays along a new axis. tvm.relay.repeat Repeats elements of an array. tvm.relay.tile Repeats the whole array multiple times. tvm.relay.reverse Reverses the order of elements along given axis while preserving array shape. tvm.relay.reverse_sequence Reverse the tensor for variable length slices. tvm.relay.unravel_index Convert a flat index or array of flat indices into a tuple of coordinate arrays. tvm.relay.sparse_to_dense Converts a sparse representation into a dense tensor.

 tvm.relay.right_shift Right shift with numpy-style broadcasting. tvm.relay.left_shift Left shift with numpy-style broadcasting. tvm.relay.equal Broadcasted elementwise test for (lhs == rhs). tvm.relay.not_equal Broadcasted elementwise test for (lhs != rhs). tvm.relay.greater Broadcasted elementwise test for (lhs > rhs). tvm.relay.greater_equal Broadcasted elementwise test for (lhs >= rhs). tvm.relay.less Broadcasted elementwise test for (lhs < rhs). tvm.relay.less_equal Broadcasted elementwise test for (lhs <= rhs). tvm.relay.all Computes the logical AND of boolean array elements over given axes. tvm.relay.any Computes the logical OR of boolean array elements over given axes. tvm.relay.logical_and logical AND with numpy-style broadcasting. tvm.relay.logical_or logical OR with numpy-style broadcasting. tvm.relay.logical_not Compute element-wise logical not of data. tvm.relay.logical_xor logical XOR with numpy-style broadcasting. tvm.relay.maximum Maximum with numpy-style broadcasting. tvm.relay.minimum Minimum with numpy-style broadcasting. tvm.relay.power Power with numpy-style broadcasting. tvm.relay.where Selecting elements from either x or y depending on the value of the condition. tvm.relay.argmax Returns the indices of the maximum values along an axis. tvm.relay.argmin Returns the indices of the minimum values along an axis. tvm.relay.sum Computes the sum of array elements over given axes. tvm.relay.max Computes the max of array elements over given axes. tvm.relay.min Computes the min of array elements over given axes. tvm.relay.mean Computes the mean of array elements over given axes. tvm.relay.variance Computes the variance of data over given axes. tvm.relay.std Computes the standard deviation of data over given axes. tvm.relay.mean_variance Computes the mean and variance of data over given axes. tvm.relay.mean_std Computes the mean and standard deviation of data over given axes. tvm.relay.prod Computes the products of array elements over given axes. tvm.relay.strided_slice Strided slice of an array. tvm.relay.broadcast_to Return a scalar value array with the same type, broadcast to the provided shape.

Level 5: Vision/Image Operators

 tvm.relay.image.resize Image resize operator. tvm.relay.image.crop_and_resize Crop input images and resize them. tvm.relay.image.dilation2d Morphological Dilation 2D. tvm.relay.vision.multibox_prior Generate prior(anchor) boxes from data, sizes and ratios. tvm.relay.vision.multibox_transform_loc Location transformation for multibox detection tvm.relay.vision.nms Non-maximum suppression operations. tvm.relay.vision.yolo_reorg Yolo reorg operation used in darknet models.

Level 6: Algorithm Operators

 tvm.relay.argsort Performs sorting along the given axis and returns an array of indicies having same shape as an input array that index data in sorted order. tvm.relay.topk Get the top k elements in an input tensor along the given axis.

Level 10: Temporary Operators

This level support backpropagation of broadcast operators. It is temporary.

 tvm.relay.broadcast_to_like Return a scalar value array with the same shape and type as the input array. tvm.relay.collapse_sum_like Return a scalar value array with the same shape and type as the input array. tvm.relay.slice_like Slice the first input with respect to the second input. tvm.relay.shape_of Get shape of a tensor. tvm.relay.ndarray_size Get number of elements of input tensor. tvm.relay.layout_transform Transform the layout of a tensor tvm.relay.device_copy Copy data from the source device to the destination device. tvm.relay.annotation.on_device Annotate an expression with a certain device type. tvm.relay.reverse_reshape Reshapes the input array where the special values are inferred from right to left. tvm.relay.sequence_mask Sets all elements outside the expected length of the sequence to a constant value. tvm.relay.nn.batch_matmul Computes batch matrix multiplication of x and y when x and y are data in batch. tvm.relay.nn.adaptive_max_pool2d 2D adaptive max pooling operator. tvm.relay.nn.adaptive_avg_pool2d 2D adaptive average pooling operator. tvm.relay.one_hot Returns a one-hot tensor where the locations repsented by indices take value on_value, other locations take value off_value.

Level 11: Dialect Operators

This level supports dialect operators.

 tvm.relay.qnn.op.requantize Requantized operator. tvm.relay.qnn.op.conv2d Quantized 2D convolution.


text:
# Using side captions with multiple subfloats (floatrow and memoir)

In a large document (memoir class), I'd like to have side captions in the outer margin to save space for figures consisting of multiple subfigures belonging together.

After trying sidecap with subfig (not really working together due to strange layout results), I read that the floatrow package is the recommended package for doing such things.

Now I fear that floatrow is not nicely working together with memoir - or I misunderstood the manual. I tried to mix the subfloatrow environment with the beside-caption example (page 36 in the manual) but was not successful. I was not able to put the main caption into the outer margin, at all and on even page numbers, the figures stick into the outer margin.

Any help or hint is appreciated!

Here comes my minimal working example, I'm struggling with (result below):

\documentclass[11pt,a4paper,book,oldfontscommands,twoside,openright,final]{memoir}

\usepackage{blindtext}
\usepackage{graphicx}
\usepackage{subcaption}
%\usepackage[wide]{sidecap}

\let\newfloat\undefined
\usepackage{floatrow}
\floatsetup[figure]{%
margins=hangoutside, % makes the second figure stick into the outer margin
capposition=beside,
capbesideposition={bottom,outside},
floatwidth=\textwidth
}
\floatsetup[subfigure]{style=plain}

\begin{document}

\blindtext

%\begin{SCfigure} % Using SCfigure environment results in strange subfigure numbering in the main caption
\begin{figure}[h]
\RawFloats % without \RawFloats, main caption disappears
\ffigbox[\textwidth]{%
\begin{subfloatrow}
\ffigbox{
\includegraphics[width=.5\textwidth, height=3cm, draft]{foo1.png}
}{\subcaption{Foo bar 1 \dots}}
\ffigbox{
\includegraphics[width=.5\textwidth, height=3cm, draft]{foo2.png}
}{\subcaption{Foo bar 2 \dots}}
\end{subfloatrow}

\begin{subfloatrow}
\ffigbox{
\includegraphics[width=.5\textwidth, height=3cm, draft]{foo3.png}
}{\subcaption{Foo bar 3 \dots}}
\ffigbox{
\includegraphics[width=.5\textwidth, height=3cm, draft]{foo4.png}
}{\subcaption{Foo bar 4 \dots}}
\end{subfloatrow}
}

\caption{Main caption foo bar \dots}
\end{figure}
%\end{SCfigure}

\blindtext[2]

\begin{figure}[h]
\RawFloats % without \RawFloats, main caption disappears
\ffigbox[\textwidth]{%
\begin{subfloatrow}
\ffigbox{
\includegraphics[width=.5\textwidth, height=3cm, draft]{foo1.png}
}{\subcaption{Foo bar 1 \dots}}
\ffigbox{
\includegraphics[width=.5\textwidth, height=3cm, draft]{foo2.png}
}{\subcaption{Foo bar 2 \dots}}
\end{subfloatrow}

\begin{subfloatrow}
\ffigbox{
\includegraphics[width=.5\textwidth, height=3cm, draft]{foo3.png}
}{\subcaption{Foo bar 3 \dots}}
\ffigbox{
\includegraphics[width=.5\textwidth, height=3cm, draft]{foo4.png}
}{\subcaption{Foo bar 4 \dots}}
\end{subfloatrow}
}

\caption{Main caption foo bar \dots}
\end{figure}

\blindtext

\end{document}

## 1 Answer

Do you looking something like this?

For above figure I use package subfig and from memoir sidecaption:

documentclass[11pt,a4paper,twoside]{memoir}

\usepackage{blindtext}
\usepackage{graphicx}
\usepackage{subfig}

\sidecapmargin{outer}

\begin{document}
\blindtext

\begin{figure}[h]
\begin{sidecaption}{Main caption on outer side of figure}[fig:mayfig-1]\centering
\subfloat[sub figure A]{\includegraphics[width=0.48\hsize]{example-image-a}}
\hfill
\subfloat[sub figure B]{\includegraphics[width=0.48\hsize]{example-image-b}}
\end{sidecaption}
\end{figure}

\blindtext
\end{document}

I shorten your code to MWE ...

• Thank you, @Zarko for your help! I was not aware of the sidecaption environment. With that tip, I was able to solve the problem (without using floatrow at all). Thank you very much! – HenkBear Sep 16 '15 at 13:21


text:
## College Physics (4th Edition)

(a) Electrons were added to the balloon. (b) $3.75\times 10^{9}$ electrons were transferred to the balloon.
(a) Since the balloon acquired a negative charge, electrons were added to the balloon. (b) We can find the number of electrons that were transferred: $\frac{-0.60\times 10^{-9}~C}{-1.6\times 10^{-19}~C} = 3.75\times 10^{9}$ $3.75\times 10^{9}$ electrons were transferred to the balloon.


text:
# Why is Lebesgue integral first defined for step function and then for larger classes of functions?

Most books on Lebesgue integration define the concept first for step functions (and simple functions) and later on extend the definition to Lebesgue measurable functions. Why is this approach preferred over the original definition of Lebesgue which develops measure theory first and then defines the integral as a limit of sum (somewhat like the usual definition of Riemann integral)? Is there any pedagogic advantage? To me this approach looks quite artificial compared to the limit of a sum definition.

EDIT: In response to the comments from "Did" I am trying to elaborate further. I find two approaches available to study Lebesgue Integration:

1) Integral is defined for step functions using a simple sum. Then we consider increasing sequences of such step functions whose integrals converge to some value $I$. In this case the sequence of step functions converges a.e to some function $f$ and we say that $I$ is integral of $f$. Such functions as $f$ are called upper functions and difference of two such upper functions is called a Lebesgue Integrable function. This is the approach in Apostol's Mathematical Analysis. Concept of measure is defined later as integral of the indicator function. Royden's Real Analysis also follows the same approach.

2) Lebesgue's original definition where he defines the concept of measure first and then partitions the range of functions into multiple subintervals and forms a sum analogous to a Riemann sum and the limit of this sum as we make finer and finer partitions of the range is defined as the integral of the function.

I find almost all books to be using the first approach and not second. And Lebesgue's definition seems to be used only for historical context. To me the second approach looks intuitive. I wonder if there is any pedagogic advantage of the first approach. I am a beginner in these topics and still trying to come to terms with the step functions approach which is so desperately based on the convergence of sequence of functions.

-
To "define the concept first for step functions" IS to "define(s) the integral as a limit of sum". Please explain the difference you see in the two approaches. –  Did Jul 23 at 8:19
When you define the integral of step function it is just a sum and no limits are involved. Then the next step to consider an increasing sequence of step functions and then use the limit of corresponding integrals. Why can't we directly take a function $f$ and defined its Lebesgue integral in terms of values of $f$ and some kind of limit operation (like the way Lebesgue did himself)? I am not able to understand why do we need to first construct a sequence of step functions converging to $f$ to define its integral. –  Paramanand Singh Jul 23 at 11:42
and some kind of limit operation... Precisely. (Sorry but I fail to understand your question.) –  Did Jul 23 at 13:21
Hello Did, I have edited my question and tried to elaborate further. –  Paramanand Singh Jul 23 at 14:13

The problem ist how to define the sum without step functions. The only way I could think of would use the density Function $$d_f(t) := \mu(\{s\in D| f(s) > t\})$$ and the decreasing rearrangement. When you define the integral for step funcitons first however, you can prove lebesgue's convergence theorem and define the integral without such constructs. What limit would you use to define the integral of an arbitrary function without using an approximation with step functions?

-


text:
# Illuminating tiny structures: An introduction to small-angle scattering

We are surrounded by phenomena caused by the scattering of light. When enjoying a sunny day at the seaside, like in the photo at the top, why is the sky blue? Blue light scatters more than red light. Why is milk opaque? Protein and fat particles scatter light. If you are reading this with blue eyes, your eye color is due to light scattering. Scientists use the same general scattering principle to study the structure of soft materials using the scattering of well-defined radiation. Scattering measurements reveal structures between an ångström and hundreds of nanometers, an important region for studying soft matter. Just as the color of the sky results from light scattered by air molecules, the scattering of X-rays and neutrons tells us about the size and shape of compounds in soft materials along with their interactions, and I will focus on these two types of radiation.

In a small-angle scattering experiment (SAXS when using X-rays and SANS when using neutrons), a sample (whether solution, dispersion, or solid) is placed between an incoming beam of radiation and a detector (see Figure 1) [1]. The detector measures the scattering intensity as a function of angle, which in turn can be related to the size and shape of the sample’s components.

Scattering intensity is quantified as a function of the momentum transfer vector (or scattering vector) $\mathbf{Q}$, which is simply the difference between the momentum of the incoming  beam ($\mathbf{k_i}$) and the scattered beam ($\mathbf{k_s}$). The magnitude of $\mathbf{Q}$ (equal to $(4 \pi \sin{\theta}) / \lambda$) depends on the scattering angle ($2 \theta$) and the wavelength of the radiation ($\lambda$) [2].

The relationship between the magnitude of $\mathbf{Q}$ and the length scale being investigated ($d$) is given by the equation $Q = 2 \pi / d$, and this inverse relationship to distance is why measurements as a function of $Q$ are said to be in reciprocal space. (This relationship comes from Bragg’s law for crystals [3].) In real space, the arrangement of objects is described by the distances between them. In reciprocal space, the same arrangement would be given by $Q$. The scattering process is essentially a Fourier transform [4], a mathematical procedure to convert waves to frequencies, making it possible to go between real and reciprocal spaces.

Now, having established some of the fundamentals of waves and scattering, we need to think about how radiation interacts with materials. This interaction determines the way that scattering data look and also what information you can obtain. Specifically, X-rays interact with electrons, and neutrons interact with nuclei. The magnitude of the interaction is quantified by the amount per volume (the “scattering length density”), and a difference in scattering length density between solutes and solvents results in detectable scattering. The scattering length density can be thought of as the “refractive index” for neutrons or X-rays. Figure 2 shows the general idea of contrast for any scattering experiment, with a comparison between homogeneous and heterogeneous solutes. When the color of the solvent and particle are the same shade of blue (meaning they have the same scattering length density), there is no scattering from that component. When the colors are different (meaning that they have different scattering length densities), there is now scattering.

Interactions between X-rays and materials are fixed by their composition. However, neutrons interact differently with different isotopes of the same element. One particularly useful difference, especially for soft organic materials, is for structures with protons (1H) and those where protons are exchanged for deuterons (2H or D) [5]. It is possible to detect scattering from specific parts of complex systems by tuning the contrast of different components using solvents with different contrasts, as shown in Figure 2. Figure 3 shows calculated SANS (left) and SAXS (right) curves from chemically identical but isotopically distinct microemulsions, which are nanometer-sized droplets of water that are surrounded by surfactants in oil [6]. For the SANS curves, the dark grey areas represent deuterated oil or water (called D2O or heavy water), and the light grey areas represent standard hydrogenous oil or water. Multiple contrasts are required for a heterogenous particle, because no single solvent can match the whole particle (Figure 2, right). The curves are all different, but the actual structure of the microemulsion is always the same. It is only the contrast that differs. A precise determination of the structural dimensions of the microemulsion can be determined by analyzing all the data together, which gives more certainty than considering any one alone.

Scattering data is analyzed by comparing experimental data to known equations for how different shapes should scatter radiation as a function of $Q$. Luckily, many models are already known [7] for various shapes. However, as structures are determined somewhat indirectly from the scattering data, complementary information from other techniques, such as microscopy, is frequently obtained as well. The equation relating the shape and scattering as a function of $Q$ is called the “form factor”, an intraparticle property. For example, the curves in Figure 3 were all calculated using a form factor for a particle consisting of a spherical core surrounded by a shell of another material. At the extremes of $Q$, approximations can be used to calculate the size (at low-$Q$) and the interfacial roughness (at high-$Q$). In addition, the size distribution usually must be considered. In the example in Figure 3, the radii of the cores do not have a single value. There is a size distribution of about 20%.

For more concentrated dispersions or for more strongly interacting systems, the interactions between the particles must be considered. In these cases, an interparticle property called the “structure factor” contributes to the shape of the scattering curves. It can be calculated for particles that are considered to interact as hard spheres, charged spheres, or attractive spheres. Often samples are studied dilute to avoid the structure factor contribution. However, for systems that are necessarily concentrated or charged, it must be accounted for.

In this post, I focussed on the fundamentals of scattering with examples from nanoparticle dispersions in dilute conditions. However, these are not the only kind of soft materials that can be studied. Polymer solutions and blends, complex fluids, liquid crystals, gels, and a variety of biological materials (such as proteins and nucleic acids in solution or lipid bilayers) can be studied using small-angle scattering. The properties of soft materials often emerge out of their structures. By characterizing them in a quantitative way, scientists can determine the relationships between structures and their functions. Using small-angle scattering, we can not only better understand materials but also better predict ways of improving them. Small-angle scattering should be one of the tools employed by everyone interested in soft materials.

The featured image at the top is a photo of Bellevue Beach in Klampenborg in Copenhagen, Denmark. (Image taken by the author.)

[1] A detailed discussion of detection and instrumentation is beyond the scope of this post, but the book chapter “Small-Angle Neutron Scattering and Applications in Soft Condensed Matter” is a great introduction if you are interested in learning more. ^

[2] The angles being scattered are truly small, typically on order of 1° or less. By using $Q$, it is both the wavelength and angle that are important, and conveniently measurements performed using different wavelengths can be directly compared. ^

[3] Bragg’s law gives the conditions that a wave is diffracted by a series of planes. In a crystal diffraction measurement, peaks are observed in the data when Bragg’s law conditions are met. In a scattering measurement, where Bragg peaks are seldom observed, the relationship between $Q$ and $d$ is useful as a ruler for the length scale that is being examined. ^

[4] A Fourier transform is a mathematical operation that turns a periodic function, like a wave, into a probability of different frequencies. If, for example, you had a wave with a single wavelength, its Fourier transform would give a 100% probability at that wavelength. ^

[5] Deuterium is the heavy isotope of hydrogen with one neutron and one proton. ^

[6] A microemulsion is not just a small emulsion. Although, both are dispersions of two immiscible liquids, typically stabilized by a surfactant. A microemulsion is thermodynamically-stable and, in the case of a water-in-oil rather than oil-in-water, can be thought of as water-swollen surfactant micelle. Data for Aerosol OT-stabilized water-in-oil microemulsions can be found in the PhD thesis “Phase behaviour and interfacial properties of double-chain anionic surfactants” by Sandine Nave (University of Bristol). ^

[7] The equation for the scattering of a sphere was first given in the early 20th century by Lord Rayleigh who published this in the paper “The incidence of light upon a transparent sphere of dimensions comparable with the wave-length” in Proceedings of the Royal Society of London A in 1910. ^


text:
MathSciNet bibliographic data MR1881892 (2002k:93034) 93B36 (34K35 93C23) Fridman, E.; Shaked, Uri A descriptor system approach to $H\sb \infty$$H\sb \infty$ control of linear time-delay systems. IEEE Trans. Automat. Control 47 (2002), no. 2, 253–270. Article

For users without a MathSciNet license , Relay Station allows linking from MR numbers in online mathematical literature directly to electronic journals and original articles. Subscribers receive the added value of full MathSciNet reviews.

 American Mathematical Society 201 Charles Street Providence, RI 02904-6248 USA