Application Center - Maplesoft

App Preview:

Lesson 9: Application: Orthogonal Trajectories

You can switch back to the summary page by clicking here.

Learn about Maple
Download Application


Lesson 9 -- Application: Orthogonal Trajectories

Prof. Douglas B. Meade

Industrial Mathematics Institute

Department of Mathematics

University of South Carolina

Columbia, SC 29208



Copyright  2001  by Douglas B. Meade

All rights reserved



Outline of Lesson 9

9.A Trajectories Orthogonal to a Family of Circles



> restart;

> with( DEtools ):

> with( plots ):

Warning, the name changecoords has been redefined


9.A Trajectories Orthogonal to a Family of Circles

Two curves y = f(x) and y = g(x) that intersect at x = a are orthogonal at x = a if the tangents to each curve are perpendicular at x = a .  Thus, the condition

`f '`(a)*`g'`(a) = -1

is necessary and sufficient for the two curves to be orthogonal at x = a .  This condition says nothing more than that the slopes are negative reciprocals of each other at x = a .

Two families of curves defined implicitly by F(x, y) = alpha and G(x, y) = beta are orthogonal if any member of one family that intersects a curve of the other family, does so at right angles.  To understand what it means for two families of curves to be orthogonal, consider the following example.

The family of circles centered at (c , 0) with radius c can be described as (x-c)^2+y^2 = c^2 , or F(x, y) = 0 with

> F := unapply( simplify( (x-c)^2+y^2-c^2 ), (x,y) ):
'F'(x,y) = F(x,y);

F(x, y) = x^2-2*x*c+y^2


Representative examples of this family of curves are seen in Figure 9.1.

> plotF := C -> implicitplot( eval(F(x,y),c=C), x=-20..20, y=-10..10, scaling=constrained, grid=[60,60] ):
p1 := display( seq( plotF(c), c=-9..9) ):

display(p1, title="Figure 9.1");



To find the family of curves orthogonal to this family of circles, obtain the derivative for any curve of the family, expressed in a form independent of the parameter c .  The derivative of a member of the family can be obtained by implicit differentiation of the equation

F(x, y(x)) = 0

The result of implicit differentiation is

> diff_F := diff( F(x,y(x))=0, x );

diff_F := 2*x-2*c+2*y(x)*(diff(y(x), x)) = 0


and the derivative dy/dx is

> diff_with_c := simplify(isolate(diff_F, diff(y(x),x)));

diff_with_c := diff(y(x), x) = -(x-c)/y(x)


Unfortunately, this expression for the derivative contains the parameter c .  That makes the expression dependent on the particular curve that c selects from the family.  The desired expression for the derivative must be independent of this parameter.  Hence, eliminate c by use of the equation F(x, y) = 0 .  Either solve for c and substitute, or use

> q := eliminate({F(x,y(x)),diff_with_c},c);

q := [{c = y(x)*(diff(y(x), x))+x}, {-x^2-2*x*(diff(y(x), x))*y(x)+y(x)^2}]


The desired expression is implicitly contained in

> q1 := q[2][1]= 0;

q1 := -x^2-2*x*(diff(y(x), x))*y(x)+y(x)^2 = 0


This equation can be solved for dy/dx and the negative reciprocal obtained, or the derivative dy/dx can be replace with -1/`y'`(x) to produce the differential equation of the orthogonal family.  The second approach gives the ODE

> q2 := eval(q1, diff(y(x),x) = -1/diff(y(x),x));

q2 := -x^2+2*x*y(x)/(diff(y(x), x))+y(x)^2 = 0


The solution of this equation is

> q3 := dsolve(q2, y(x), implicit);

q3 := -ln((x^2+y(x)^2)/x^2)+ln(y(x)/x)-ln(x)-_C1 = 0


Combining the logarithms and exponentiating leads to

> q4 := simplify(map(exp,combine(q3,ln,anything,symbolic)));

q4 := y(x)*exp(-_C1)/(x^2+y(x)^2) = 1


Change the constant of integration to a simpler name to obtain

> q5 := eval(q4, exp(-_C1)=2*a);

q5 := 2*y(x)*a/(x^2+y(x)^2) = 1


Either multiply through by the denominator, or bring all terms to the left, add fractions, and select the numerator of the resulting expression on the left.  This would be

> q6 := -numer(normal(lhs(q5)-rhs(q5))) = 0;

q6 := -2*y(x)*a+x^2+y(x)^2 = 0


To obtain a graph of members of this new family, use the same technique that produced Figure 9.1.  Begin by making the left side into the function G(x, y) .

> G := unapply(eval(lhs(q6), y(x)=y),(x,y)):
'G'(x,y) = G(x,y);

G(x, y) = -2*y*a+x^2+y^2


Then, Figure 9.2 contains members of the family orthogonal to the family described by the equation F(x, y) = 0 .

> plotG := C -> implicitplot( eval(G(x,y),a=C), x=-20..20, y=-20..20, scaling=constrained, grid=[60,60], color=blue ):
p2 := display( seq( plotG(a), a=-9..9) ):

display(p2, title="Figure 9.2");



Figure 9.3 superimposes the curves of the two families.

> display([p1,p2], title="Figure 9.3");



[Back to ODE Powertool Table of Contents]