Mathematica How Can I Fix My DSolve Output to Work as a Function?

  • Thread starter Thread starter member 428835
  • Start date Start date
  • Tags Tags
    Function Output
AI Thread Summary
The discussion revolves around solving a simple ordinary differential equation (ODE) using DSolve in a computational environment. The user is facing an issue where the solution, referred to as uEven, does not behave like a typical function, which restricts their ability to differentiate and integrate the output without manual adjustments. The user seeks a solution that allows for adaptability to different input constants. The key point of resolution is the realization that uEven was incorrectly defined as a single symbol rather than a function. The correct syntax for defining uEven as a function is highlighted, enabling proper functionality for further mathematical operations.
member 428835
Hi PF!

The following is a simple ODE I'm solving via DSolve. However, the solution, which I call uEven, does not work as a typical function. Note the last two lines are different. Does anyone know how to fix this, so that I can differentiate and integrate the output of this ODE without copy-pasting?

Ideally I'd like the solution to adapt to different input constants shown at the top. Any help much appreciated!

Code:
L = 0.005;  (* HALF CHANNEL LENGTH  (m)       *)
\[Sigma] = 0.07;    (* \
SURFACE TENSION      (N / m)   *)
\[Rho] = 1000; (* LIQUID \
DENSITY       (kg / m^3) *)
g = 9.8;     (* GRAVITY ACCELERATION (m / \
s^2)  *)
\[Alpha] = 
 70 \[Pi]/180; (* STATIC CONTACT ANGLE (rad)     *)
l = \
Sqrt[\[Sigma]/(\[Rho] g)]; (* CAPILLARY LENGTH SCALE (m) *)
b = (\
\[Rho] g l^2)/\[Sigma]; (* BOND NUMBER *)
\[CapitalGamma][x_, 
  l_, \[Alpha]_, L_] := 
 l Cot[\[Alpha]] Exp[L ( x - 1)/l](* EQUILIBRIUM HEIGHT (m) *)

uEven[x, b, l, \[Alpha], L] = 
  y[x] /. First@
    DSolve[{-y''[
          x] + (b Cos[\[Alpha]] - \[CapitalGamma][x, l, \[Alpha], 
            L]^2) y[x] == 0, y'[0] == 0}, y, x];
uEven[x, b, l, \[Alpha], L]
uEven[y, b, l, \[Alpha], L]
 
Physics news on Phys.org
You are not defining uEven as a function, you are just defining it as a single symbol. You want to use the following syntax instead:

uEven[x_, b_, l_, \[Alpha]_, L_] := ...
 
  • Like
Likes member 428835
Dale said:
You are not defining uEven as a function, you are just defining it as a single symbol. You want to use the following syntax instead:

uEven[x_, b_, l_, \[Alpha]_, L_] := ...
Must've been real late, can't believe I missed this. Thanks!
 
  • Like
Likes Dale

Similar threads

Replies
7
Views
2K
Replies
1
Views
1K
Replies
6
Views
2K
Replies
4
Views
1K
Back
Top