Mathematica Mathematica: Nested User defined function

Click For Summary
The discussion revolves around defining a complex function, beta[M, θ], in Mathematica, with the user encountering scope issues when trying to break down the equation into smaller parts. The user initially attempts to define the functions lambda and X but faces errors related to variable scope. They later modify their approach, successfully defining the functions with different variable names and achieving the desired outcome. The key question raised is about understanding why the second attempt worked while the first did not, highlighting the importance of variable naming and scope management in Mathematica programming.
Saladsamurai
Messages
3,009
Reaction score
7
Hello :smile: I am a total amateur here and can't seem to get this to work: I have a function beta[M, θ] that I am trying to define. beta is a nasty equation that is way too many lines for me to input at once, so I tried to break it up into pieces. However, the part that is showing up in red is giving me trouble. I haven't even gotten to the beta part of the code, but I expect it will give me the same problem.

I think you can see what I am trying to here. How can I get around the "scope" issue that Mathematica is giving me?

thanks!

Code:
lambda[M_, \[Theta]_] := ((M^2 - 1)^2 - 
     3*(1 + 0.2 M^2) (1 + 1.2 M^2)*Tan[\[Theta]]^2)^.5;

X[M_, \[Theta]_] := ((M^2 - 1)^3 - 
     9*(1 + 0.2 M^2)*(1 + 0.2 M^2 + 2.4/4 M^4) Tan[\[Theta]]^2)/
   lambda[B][M_][/B]^3;

beta[M_, \[Theta]_] := 
  ArcTan[ (M^2 - 1 + 2 lambda*Cos[(4 Pi + ArcCos[X])/3])/(
    3*(1 + .2 M^2)*Tan[\[Theta]])]*180/Pi;
 
Physics news on Phys.org
Meh ... This works!

Code:
Clear["Global`*"]

lambda[MM_, \[Theta]\[Theta]_] := ((MM^2 - 1)^2 - 
     3*(1 + 0.2 MM^2) (1 + 1.2 MM^2)*Tan[\[Theta]\[Theta]]^2)^.5;

X[MMM_, \[Theta]\[Theta]\[Theta]_] := ((MMM^2 - 1)^3 - 
     9*(1 + 0.2 MMM^2)*(1 + 0.2 MMM^2 + 
        2.4/4 MMM^4) Tan[\[Theta]\[Theta]\[Theta]]^2)/
   lambda[MMM, \[Theta]\[Theta]\[Theta]]^3;
beta[M_, \[Theta]_] := 
  ArcTan[ (M^2 - 1 + 
     2 lambda[M, \[Theta]]*Cos[(4 Pi + ArcCos[X[M, \[Theta]]])/3])/(
    3*(1 + .2 M^2)*Tan[\[Theta]])]*180/Pi;
 
Do you understand why the second one worked and the first one didn't?
 
Last edited:

Similar threads

  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 19 ·
Replies
19
Views
2K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 4 ·
Replies
4
Views
3K
  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 2 ·
Replies
2
Views
2K
Replies
10
Views
3K
  • · Replies 1 ·
Replies
1
Views
2K