Troubleshooting Mathematica: Identifying Strange Behavior & Solutions

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

The discussion centers on troubleshooting an issue in Mathematica where the user encounters an error indicating that a variable 'z' is not recognized as an equation. The problem arises from variable naming conflicts, specifically using 'x' and 'y' for both constants and functions within the NDSolve function. The solution involves renaming the variables to avoid conflicts and ensuring that the order of cell evaluations is correct. Ultimately, copying the code to a new notebook resolved the issue.

PREREQUISITES
  • Familiarity with Mathematica syntax and functions
  • Understanding of NDSolve and its requirements
  • Knowledge of variable scoping and naming conventions in programming
  • Basic concepts of numerical methods in computational mathematics
NEXT STEPS
  • Learn about variable scoping in Mathematica to prevent naming conflicts
  • Explore the use of NDSolve in Mathematica for solving differential equations
  • Investigate best practices for organizing code in Mathematica notebooks
  • Study debugging techniques in Mathematica to efficiently identify and resolve errors
USEFUL FOR

Mathematica users, computational mathematicians, and anyone involved in numerical simulations or solving differential equations using Mathematica.

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 6 ·
Replies
6
Views
3K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 6 ·
Replies
6
Views
7K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 9 ·
Replies
9
Views
4K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 2 ·
Replies
2
Views
4K