Prev: Lists: Row Vectors vs. Column Vectors. (feels like such a silly
Next: FullSimplify and negative radicands
From: Vicent on 7 Jun 2010 08:04 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 10 Jun 2010 08:06
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 |