Troubleshooting Mathematica: Identifying Strange Behavior & Solutions

  • Context: Mathematica 
  • Thread starter Thread starter Dustinsfl
  • Start date Start date
  • Tags Tags
    Mathematica Strange
Click For Summary

Discussion Overview

The discussion revolves around troubleshooting a Mathematica code issue related to the use of variables in a differential equation setup. Participants explore potential reasons for unexpected behavior in the code execution, focusing on variable definitions and cell evaluation order.

Discussion Character

  • Technical explanation, Debate/contested, Exploratory

Main Points Raised

  • One participant expresses frustration with Mathematica, indicating that a previously functioning code now fails to recognize a variable as an equation.
  • Another participant suggests that the issue may arise from using the same names for both constants and functions (e.g., x and y), which could lead to conflicts in the NDSolve function.
  • It is noted that the order of cell evaluation in Mathematica can affect the execution of code, particularly if commands are spread across multiple cells.
  • A later reply mentions that copying the code to a new notebook resolved the issue, implying that the problem may have been related to the original notebook environment.

Areas of Agreement / Disagreement

Participants generally agree that variable naming and cell evaluation order can lead to issues in Mathematica, but there is no consensus on the exact cause of the original problem. Some participants propose solutions while others share personal experiences without confirming a single resolution.

Contextual Notes

Limitations include the potential for variable name conflicts and the dependence on the order of execution in Mathematica, which may not be fully resolved in the discussion.

Dustinsfl
Messages
2,217
Reaction score
5
Can someone identity what the issue here is before I throw my computer out the window.
By the way, this just worked 10mins ago. I restarted Mathematica and my computer but it now insist z isn't an equation.
Code:
ClearAll["Global`*"];
me = 5.974*10^(24);
mm = 7.348*10^(22);
G = 6.67259*10^(-20);
\[Mu] = G*(me + mm);
re = 6378;
rm = 1737;
\[Pi]1 = me/(me + mm);
\[Pi]2 = mm/(me + mm);
x = -4671;
y = -6578;
r12 = r1 = r2 = 384400;
(*r1=Sqrt[(x+\[Pi]2*r12)^2+y^2];
r2=Sqrt[(x-\[Pi]1*r12)^2+y^2];*)
M = me + mm; vi = 8;
\[Nu] = -\[Pi]/2;
e = 1;
vi = 10.8662;

\[Gamma] = ArcTan[e*Sin[\[Nu]]/(1 + e*Cos[\[Nu]])];
vx = vi*(Sin[\[Gamma]]*Cos[\[Nu]] - Cos[\[Gamma]]*Sin[\[Nu]]);
vy = vi*(Sin[\[Gamma]]*Sin[\[Nu]] + Cos[\[Gamma]]*Cos[\[Nu]]);
rx = -4671;
ry = -6578;
rz = 0;

\[CapitalOmega] = Sqrt[\[Mu]/r12^3];
\[Mu]1 = G*me;
\[Mu]2 = G*mm;

r0 = {rx, ry, rz};
v0 = {vx, vy, rz};

s = NDSolve[{x''[t] - 
      2*\[CapitalOmega]*y'[t] - \[CapitalOmega]^2*
       x[t] == -\[Mu]1/r1^3*(x[t] + \[Pi]2*r12) - \[Mu]2/
        r2^3*(x[t] - \[Pi]1*r12),
    y''[t] - 
      2*\[CapitalOmega]*x'[t] - \[CapitalOmega]^2*
       y[t] == -\[Mu]1/r1^3*y[t] - \[Mu]2/r2^3*y[t], 
    z''[t] == -\[Mu]1/r1^3*z[t] - \[Mu]2/r2^3*z[t],
    x[0] == r0[[1]],
    y[0] == r0[[2]],
    z[0] == r0[[3]],
    x'[0] == v0[[1]],
    y'[0] == v0[[2]],
    z'[0] == v0[[3]]},
   {x, y, z}, {t, 0, 1000000}];

NDSolve::deqn: Equation or list of equations expected instead of False in the first argument {0. -7.10426\[CenterDot]10^-12 (-4671)[t]==-8.63204\[CenterDot]10^-14 (-379729.+(-4671)[t])-7.01794\[CenterDot]10^-12 (4670.66 +(-4671)[t]),0. -7.10426\[CenterDot]10^-12 (-6578)[t]==-7.10426\[CenterDot]10^-12 (-6578)[t],<<5>>,False,(z^\[Prime])[0]==0}. >>
 
Physics news on Phys.org
dwsmith said:
...before I throw my computer out the window...

Sorry, can't help with the Mathematica issue, but just wanted to say I have considered throwing my computer in my pond before.(Tmi)
 
You define

x = -4671;
y = -6578;

and then you use both x = x[t] and y = y[t] in NDSolve. That might be tripping you up. Try renaming variables. What might especially confirm this is that the double equals, which is definitely what you need in NDSolve, will yield TRUE or FALSE if the stuff on either side is already defined.

When something works, and then it doesn't work, in Mathematica, that's typically happening because of the order in which cells are evaluated. If these commands are spread out over a bunch of different cells, then the order really matters.
 
Ackbach said:
You define

x = -4671;
y = -6578;

and then you use both x = x[t] and y = y[t] in NDSolve. That might be tripping you up. Try renaming variables. What might especially confirm this is that the double equals, which is definitely what you need in NDSolve, will yield TRUE or FALSE if the stuff on either side is already defined.

When something works, and then it doesn't work, in Mathematica, that's typically happening because of the order in which cells are evaluated. If these commands are spread out over a bunch of different cells, then the order really matters.

The only problem was mathematica. I copied everything over to a new notebook and it worked.
 
dwsmith said:
The only problem was mathematica. I copied everything over to a new notebook and it worked.

Yep, that's a good trick, too. Glad it's working for you now.
 

Similar threads

  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 2 ·
Replies
2
Views
3K
  • · Replies 6 ·
Replies
6
Views
3K
  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 6 ·
Replies
6
Views
7K
  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 9 ·
Replies
9
Views
4K