Mathematica Definiing two functions (mathematica)

AI Thread Summary
The discussion centers on defining two functions in Mathematica for a molecule's velocity. The first function, f[s], generates a random horizontal velocity within the range of -s to s. The second function, g[s, u], generates a random vertical velocity based on the formula involving the square root of the difference between s squared and u squared. The user encounters issues when trying to use the output of f[s] as an input for g[s, u], particularly when the values lead to complex numbers. The key problem arises from ensuring that the arguments passed to RandomReal remain real-valued. Suggestions include using g[s, f[s]] directly, but this leads to inconsistencies in the values of f[s] used in the calculations. The discussion highlights the need for ensuring that the inputs to the square root function in g remain valid to avoid complex results.
rbnphlp
Messages
53
Reaction score
0
I need to define two functions for a molecule with speed s.
a)it has a horizontal velocity between -s and s
b) v , the vertical velocity between +Sqrt[s^2-u^2] and -Sqrt[s^2-u^2]

This is what I have done
for a)
Code:
f[s_]:=RandomReal[{-s,s}]
for b)
Code:
g[s_,u_]:=RandomReal[{-Sqrt[s^2-u^2],+Sqrt[s^2-u^2]}]

now , If I enter f[2] I get u, so I have s and u from first code. How do I use these values in the second code (without manually inputting them)?

Thanks a bunch
 
Physics news on Phys.org
You mean just

g[s,f] ?
 
jackmell said:
You mean just

g[s,f] ?


Yes ,thats what I want ..But how do I put into mathematica ?

If just insert what you have written I get

RandomReal::unifr: "The endpoints specified the uniform distribution range are not real valued

I also Tried,

Code:
g[s_] := RandomReal[{-Sqrt[s^2 - f[s]^2], +Sqrt[s^2 - f[s]^2]}]
However , what it does in this case is , finds f for -Sqrt[s^2 - f^2] and +Sqrt[s^2 - f^2] seperately , so I get different f in that case..

Any ideas?
 
I believe that's because the arguments to RandomReal have to be real. But for example if I entered:

g[2,f[3]]

the argument passed to Sqrt results in a complex number. Either need to make sure s^2-u^2 is real or either use RandomComplex.
 

Similar threads

Replies
2
Views
2K
Replies
1
Views
2K
Replies
19
Views
2K
Replies
1
Views
2K
Replies
2
Views
1K
Replies
13
Views
2K
Replies
1
Views
1K
Replies
1
Views
2K
Back
Top