From: Vicent on
Hello.

I've been using the "Solve" function in order to find out which values of a
certain variable satisfy some given conditions.

Those conditions are expressed as functions of other parameters of
variables. To be more precise:

Solve[3 fiX[d + 3 Cp] + 3 fiX[d - 3 Cp] - (6/lambda) fiX[d + 6 Cp/lambda] -
(6/lambda) fiX[d - 6 Cp/lambda] == 0, Cp]

where fiX is the density function for the tipified Normal Distribution , I
mean:

fiX[z_] := Exp[-((z^2)/2)]/Sqrt[2*Pi]

When I try to solve the first expression, I get this message:

Solve::tdep: The equations appear to involve the variables to be solved for
in an essentially non-algebraic way. >>

Solve[-((3 E^(-(1/2) (d - (6 Cp)/lambda)^2) Sqrt[2/\[Pi]])/lambda) - (
3 E^(-(1/2) (d + (6 Cp)/lambda)^2) Sqrt[2/\[Pi]])/lambda + (
3 E^(-(1/2) (-3 Cp + d)^2))/Sqrt[2 \[Pi]] + (
3 E^(-(1/2) (3 Cp + d)^2))/Sqrt[2 \[Pi]] == 0, Cp]


I try the same with "Reduce", which allows me to insert some assumptions on
the parameters that are involved:

Reduce[3 fiX[d + 3 Cp] + 3 fiX[d - 3 Cp] - (6/lambda) fiX[d + 6 Cp/lambda] -
(6/lambda) fiX[d - 6 Cp/lambda] == 0 &&
d >= 0 && lambda >= 2 && Cp >= 0, Cp, Reals]

And I get this message:

Reduce::nsmet: This system cannot be solved with the methods available to
Reduce. >>

Reduce[-((3 E^(-(1/2) (d - (6 Cp)/lambda)^2) Sqrt[2/\[Pi]])/
lambda) - (3 E^(-(1/2) (d + (6 Cp)/lambda)^2) Sqrt[2/\[Pi]])/
lambda + (3 E^(-(1/2) (-3 Cp + d)^2))/Sqrt[2 \[Pi]] + (
3 E^(-(1/2) (3 Cp + d)^2))/Sqrt[2 \[Pi]] == 0 && d >= 0 &&
lambda >= 2 && Cp >= 0, Cp, Reals]


I tried also a similar approach using Resolve + Exists, and I had to abort
it because it was running for more than half an hour without giving any
solution.

So, my question is not only about this particular problem, but a general
one:

Which are the available/best strategies to work out the value of a variable
from a set of equations, when you want it in an analytical/algebraic way?

If "Solve" tells me that there is no analytical or algebraic expression,
should I give up?

By the way, for my concrete problem, I've got a general solution for the
case in which the parameter "d" equals to ZERO, and Mathematica gave me it
via "Reduce". Maybe for the general case with "d" and "lambda" there is no
exact way of compute the desired "Cp", but i posted this here in order to
get more advice from more expert users.

Thank you in advance, and sorry for my English...

--
Vicent


From: Sjoerd C. de Vries on
Hi Vicent,

Indeed some equations cannot be solved algebraically, Sin[x]==x is an
example. But if Mathematica says this may be the case not all is lost.
For instance, it says the same in this case:

Solve[x + Sin[x]^2 + Cos[x]^2 == 1, x]

Solve::tdep: The equations appear to involve the variables to be
solved for in an essentially non-algebraic way. >>

which clearly can be solved. Sometimes you may have to simplify the
equations yourself or let Mathematica try it

Solve[x + Sin[x]^2 + Cos[x]^2 == 1 // Simplify, x]

{{x -> 0}}

Cheers -- Sjoerd

On Jun 7, 2:04 pm, Vicent <vgi...(a)gmail.com> wrote:
> Hello.
>
> I've been using the "Solve" function in order to find out which values of a
> certain variable satisfy some given conditions.
>
> Those conditions are expressed as functions of other parameters of
> variables. To be more precise:
>
> Solve[3 fiX[d + 3 Cp] + 3 fiX[d - 3 Cp] - (6/lambda) fiX[d + 6 Cp/lambda] -
> (6/lambda) fiX[d - 6 Cp/lambda] == 0, Cp]
>
> where fiX is the density function for the tipified Normal Distribution , I
> mean:
>
> fiX[z_] := Exp[-((z^2)/2)]/Sqrt[2*Pi]
>
> When I try to solve the first expression, I get this message:
>
> Solve::tdep: The equations appear to involve the variables to be solved for
> in an essentially non-algebraic way. >>
>
> Solve[-((3 E^(-(1/2) (d - (6 Cp)/lambda)^2) Sqrt[2/\[Pi]])/lambda) - (
> 3 E^(-(1/2) (d + (6 Cp)/lambda)^2) Sqrt[2/\[Pi]])/lambda + (
> 3 E^(-(1/2) (-3 Cp + d)^2))/Sqrt[2 \[Pi]] + (
> 3 E^(-(1/2) (3 Cp + d)^2))/Sqrt[2 \[Pi]] == 0, Cp]
>
> I try the same with "Reduce", which allows me to insert some assumptions on
> the parameters that are involved:
>
> Reduce[3 fiX[d + 3 Cp] + 3 fiX[d - 3 Cp] - (6/lambda) fiX[d + 6 Cp/lambda] -
> (6/lambda) fiX[d - 6 Cp/lambda] == 0 &&
> d >= 0 && lambda >= 2 && Cp >= 0, Cp, Reals]
>
> And I get this message:
>
> Reduce::nsmet: This system cannot be solved with the methods available to
> Reduce. >>
>
> Reduce[-((3 E^(-(1/2) (d - (6 Cp)/lambda)^2) Sqrt[2/\[Pi]])/
> lambda) - (3 E^(-(1/2) (d + (6 Cp)/lambda)^2) Sqrt[2/\[Pi]])/
> lambda + (3 E^(-(1/2) (-3 Cp + d)^2))/Sqrt[2 \[Pi]] + (
> 3 E^(-(1/2) (3 Cp + d)^2))/Sqrt[2 \[Pi]] == 0 && d >= 0 &&
> lambda >= 2 && Cp >= 0, Cp, Reals]
>
> I tried also a similar approach using Resolve + Exists, and I had to abort
> it because it was running for more than half an hour without giving any
> solution.
>
> So, my question is not only about this particular problem, but a general
> one:
>
> Which are the available/best strategies to work out the value of a variable
> from a set of equations, when you want it in an analytical/algebraic way?
>
> If "Solve" tells me that there is no analytical or algebraic expression,
> should I give up?
>
> By the way, for my concrete problem, I've got a general solution for the
> case in which the parameter "d" equals to ZERO, and Mathematica gave me it
> via "Reduce". Maybe for the general case with "d" and "lambda" there is no
> exact way of compute the desired "Cp", but i posted this here in order to
> get more advice from more expert users.
>
> Thank you in advance, and sorry for my English...
>
> --
> Vicent