Message Boards Message Boards


Unexpected results from Solve[ ]?

Posted 3 months ago
4 Replies
1 Total Likes


I am having some troubles using Solve. Specifically, I want to determine the intercept curve of two surfaces. I have two functions wh[n, B] and wh1[n, B], these functions are equal for n=10^5 and B=0.32. Nevertheless, when I set B=0.32 and I use Solve to calcule the intercept point, Solve doesn’t work properly, It shows an imaginary result when It should give n=10^5. Finally, in others examples the result of Solve is { }. Would you help me with these two problems?
Thank you in advance.

4 Replies

Solve the equation without giving numerical values to the variables:

Reduce[(wh[n, B] == wh1[n, B]) && e0 > 0 && 0 < m && 0 < M && B > 0 &&
   e > 0, Reals]

You will see that the only solution in the reals can be n == 0. Still, the two functions wh and wh1 are very close in numerical value:

values = {B -> 0.32, e -> 1.6*10^(-19),
   e0 -> 8.8*10^(-12),
   m -> 0.91*10^(-30),
   M -> 1.67*10^(-27)};
Plot[(wh[n, B] - wh1[n, B]) /. values,
 {n, 0, 1000000}, PlotRange -> .0001]


Thank you for your quick response but I have other. Regarding wh1, I could express this function as wh1[wce, wci, wpe, wpi] and I would like obtaining an expression as (wce/wh1) = F(wpe^2/wh1^2). I need to make a plot wce/wh1 vs wpe^2/wh1^2. If I have an expression, how can I do to obtain this expression as a function of other variable as I put before? I don’t know how to do it, actually, I am doing it manually but it is very complicated. Would you help me with this? Thank you in advance.

Best, Benny

Here is an attempt. I have called (wce/wh1)==Sqrt[a] and wpe^2/wh1^2==Sqrt[b] and manipulated the equations to express a as a function of b:

DivideSides[wce[B]/wh1[n, B] == Sqrt[a], 
  wpe[n]^2/wh1[n, B]^2 == Sqrt[b], GenerateConditions -> False];
ApplySides[#^2 &, %];
MultiplySides[%, 2 e^2 n^2/(B^2 e0^2), GenerateConditions -> False];
AddSides[%, -((B^2 e^2)/m^2 + (B^2 e^2)/M^2 + (e^2 n)/(e0 m) + (
     e^2 n)/(e0 M))];
ApplySides[#^2 &, %] // FullSimplify;
MultiplySides[%, 1/(1/(B m M) e), GenerateConditions -> False]
Solve[%, a] // FullSimplify

You can check the single steps by removing the semicolons. I don't know if this is what you need.

Thank you so much for your response!

Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
or Discard

Group Abstract Group Abstract