MathGroup Archive 1992

[Date Index] [Thread Index] [Author Index]

Search the Archive

Two cents worth on two queries

Keywords:  Logarithm, Simplification rule, Differential equation,
Legendre polynomial

I.  Hassan Saleh <salehh at> writes:

%Mathematica does not support the solutions of differential equations
%of the form
%        g (x)f'' + g (x)f' + a f  = 0
%         2    n     1    n    n n
%particularly Legendre differential equations even though orthogonal
%polynomials are built into the kernel.  Is there any particular reason
%for this ?

    Not every 2nd-order linear ODE can be solved in closed form.
It's probably a bit much to expect Mathematica to recognize all
those that can be -- especially if the definition of "can be"
changes whenever a new special function is added elsewhere in the
database.  Consider, for instance, that changes of variables can
produce an endless variety of equivalent, solvable equations.

Recent issues of Journal of Symbolic Computation show that
solvability of differential equations within given algebras of
functions is a topic of ongoing research.  Programming even the
classical lore contained in books like G. M. Murphy, _Ordinary
Differential Equations and Their Solutions_, would make for a
substantial Mma add-on product, I think.

II.  Keith Clay <clay at> writes:

%A few of us have noticed tha Mathematica is at a loss for
%simplifying even the simplest functions involving logarithms....
%... it doesn't seem to know that Log[1/a_]:=-Log[a].  You can
%Unprotect Log and tell it this, but why do we have to?

    I once listened in on a conversation with a WRI expert
concerning this problem.  (The principals are free to identify
themselves and speak for themselves if they wish.)  The key point
is that there is no uniquely best "canonical form" for
expressions involving logarithms.  Sometimes one wants to rewrite
Log[a] + Log[b] as Log[a*b], but sometimes one needs to do the
reverse.  An automatic simplification rule would make one
transformation or the other impossible -- by immediately
reversing it.

However, you can define a transformation rule and use it when
you need it:

In[1]:= Log[(x^2+1)/(x+1)]

	       1 + x
Out[1]= Log[------]
	       1 + x

In[2]:= LogProductRule = {Log[x_ y_] -> Log[x] + Log[y]}

Out[2]= {Log[(x_) (y_)] -> Log[x] + Log[y]}

In[3]:= %1 /. LogProductRule

		    1               2
Out[3]= Log[-----] + Log[1 + x ]
	       1 + x

You can also have an InverseLogProductRule to go in the other
direction.  It is not necessary to unprotect Log here -- no
more than you need to unprotect Plus in order to use

    /. a+b -> 2

to simplify an expression when you know that a + b happens to
equal 2 in your problem.

				   S. A. Fulling
				   Math, Texas A&M U.

  • Prev by Date: file io for data analysis
  • Next by Date: Re: NoteBooks to TeX
  • Previous by thread: file io for data analysis
  • Next by thread: Intro and request