Verifying PDE solutions using Mathematica

  • Context: Mathematica 
  • Thread starter Thread starter blintaro
  • Start date Start date
  • Tags Tags
    Mathematica Pde
Click For Summary

Discussion Overview

The discussion revolves around verifying a proposed solution to a partial differential equation (PDE) using Mathematica. Participants explore methods for substituting the solution into the PDE and simplifying the resulting expressions. The focus is on the technical aspects of using Mathematica for this verification process.

Discussion Character

  • Technical explanation
  • Mathematical reasoning
  • Debate/contested

Main Points Raised

  • One participant presents a proposed solution to a PDE and seeks assistance in verifying it using Mathematica.
  • Another participant suggests a more straightforward approach to substituting the solution into the PDE, emphasizing the use of direct definitions rather than intermediate variables.
  • A participant describes their method of substituting the solution into the equation and simplifying the difference between the two sides, expressing uncertainty about the simplification process.
  • There is mention of using the underscore in function arguments to allow for variable substitution, indicating a potential misunderstanding of its usage.
  • One participant shares their experience with the complexity of the resulting expressions and considers using identities related to the modified Bessel function to aid in simplification.
  • Another participant notes the importance of defining variables correctly before using them in code snippets.
  • A later reply discusses graphing the solution for specific ranges of the variable t, suggesting that the solution may be approximately correct within certain limits.
  • There is a correction regarding the setting of constants in the graphing process, indicating ongoing adjustments in the approach.

Areas of Agreement / Disagreement

Participants express various methods and approaches to verifying the PDE solution, with no clear consensus on the best method or the correctness of the proposed solution. The discussion remains unresolved regarding the simplification and verification of the solution.

Contextual Notes

Participants mention the complexity of the expressions generated during the verification process, indicating potential limitations in their current approaches. There are also references to specific mathematical identities that may assist in simplification, but their applicability remains uncertain.

blintaro
Messages
37
Reaction score
1
Hello physicists,

Pretty new to Mathematica here. I'm looking to verify that $$P(s,\tilde{t}|_{s_0}) = 2\tilde{b}_{\rho} \frac{s^{\alpha+1}}{\check{s_0}^{\alpha}}I_{\alpha}(2\tilde{b}_{\rho}s\check{s}_0)exp[-\tilde{b}_{\rho}(s^2+\check{s_0}^2)]$$
Is a solution to
$$\frac{\partial}{\partial{\tilde{t}}}P(s, \tilde{t}) = \frac{\partial}{\partial s}[(2b_{\rho}s - \frac{\rho}{s})P(s,\tilde{t})] + \frac{\partial^2}{\partial s^2}[P(s,\tilde{t})]$$

Where $$\alpha = \frac{\rho - 1}{2}$$ $$\tilde{b}_{\rho} = \frac{b_{\rho}}{1-e^{-\tilde{t}}}$$ $$\check{s}_0 = s_0 exp(\frac{-\tilde{t}}{2})$$ and $$I_{\alpha}$$ is a modified Bessel function of the first kind.

Following with this link, I wrote the following into Mathematica:

First I defined the variables in the solution as given above:

a = (r - 1)/2

b = b1/(1 - Exp[-t])

s0 = s01*Exp[-t/2]

i = BesselI[a, 2*b*s*s0]

I entered the solution like such:

q[s, t] = 2 b s^(a + 1)/(s0)*i*Exp[-b (s^2 + s0^2)]

I entered the general form of the equation:

E3 = D[p[s, t], t] == D[(2 b1 s - r/s) p[s, t], s] + D[p[s, t], {s, 2}]

Now I'm looking to "replace" the proposed solution q into E3 as p[s,t] and hope to get {True} as the output:

Simplify[E3 /. q[s, t]]

But the output is says: "___[contents of q]__ is neither a list of replacement rules nor a valid dispatch table and so cannot be used for replacing."

So I must be assigning something incorrectly... Does you see something wrong with this or know of an easier way to verify PDE solutions using Mathematica?

Thanks!
 
Physics news on Phys.org
A replacement needs so-called rules. https://reference.wolfram.com/language/ref/Rule.html

There is a more straightforward way though.
Instead of defining a variable E3 containing
Code:
D[p[s, t], t] == D[(2 b1 s - r/s) p[s, t], s] + D[p[s, t], {s, 2}]

You simply write
Code:
Simplify[ D[q[s, t], t] == D[(2 b1 s - r/s) q[s, t], s] + D[q[s, t], {s, 2}] ]

That is you directly use your definition of the full solution.
I'm not sure if it's useful to write ##q[s,t]## if you're not using it further on.
Also ensure that you know the difference between
Code:
q[s,t] = ...
q[s,t] := ...
q[s_ , t_] := ...

Finally you can also use Reduce instead of Simplify which might be faster in more complicated cases.
 
Hello JorisL, thanks for your reply!

I've ended up substituting the solution into the equation and subtracting one side from the other, hopefully to get zero.
Code:
p[s_, t_] = 2 b s^(a + 1)/(s0)*i*Exp[-b (s^2 + s0^2)]
E3 = D[p[s, t], t] 
E4 = D[(2 b1 s - r/s) p[s, t], s] + D[p[s, t], {s, 2}]
expr = Simplify[E3 - E4]
E6 = Simplify /@ Collect[expr, HoldPattern[BesselI[__]]]

My understanding is the underscore after the variable in the argument of the function allows anything to be substituted into the function?

A professor gave me the last line there, he said it was to factor out the Bessel functions (the resulting expression was really ugly and still is after he did that...)

Now this monster (called E6) should simplify into 0:
$$-\frac{2 \text{b1}^3 \text{s01} s^{\frac{r+1}{2}} e^{\frac{5 t}{2}-\frac{\text{b1} \left(s^2
e^t+\text{s01}^2\right)}{e^t-1}} I_{\frac{r-5}{2}}\left(\frac{2 \text{b1} e^{t/2} s
\text{s01}}{-1+e^t}\right)}{\left(e^t-1\right)^3}-\frac{2 \text{b1}^3 \text{s01} s^{\frac{r+1}{2}} e^{\frac{5
t}{2}-\frac{\text{b1} \left(s^2 e^t+\text{s01}^2\right)}{e^t-1}} I_{\frac{r+3}{2}}\left(\frac{2 \text{b1} e^{t/2} s
\text{s01}}{-1+e^t}\right)}{\left(e^t-1\right)^3}-\frac{\text{b1} s^{\frac{r-3}{2}} e^{\frac{3 t}{2}-\frac{\text{b1}
\left(s^2 e^t+\text{s01}^2\right)}{e^t-1}} \left(2 e^t \left(s^2 \left(4 \text{b1}^2 \text{s01}^2-2 \text{b1}
\left(\text{s01}^2+2\right)+4\right)-2 r \left(2 \text{b1} s^2+1\right)+2 \text{b1} (4 \text{b1}-1)
s^4+r^2+1\right)-e^{2 t} \left(-2 r \left(2 \text{b1} s^2+1\right)+(4 \text{b1}+2) s^2+r^2+1\right)+r \left(4
\text{b1} s^2+2\right)+12 \text{b1} s^2-r^2-6 s^2-1\right) I_{\frac{r-1}{2}}\left(\frac{2 \text{b1} e^{t/2} s
\text{s01}}{-1+e^t}\right)}{2 \text{s01} \left(e^t-1\right)^3}+\frac{\text{b1}^2 s^{\frac{r-1}{2}} \left(e^t \left((4
\text{b1}-1) s^2-2\right)+(4 \text{b1}-1) s^2+2\right) e^{2 t-\frac{\text{b1} \left(s^2
e^t+\text{s01}^2\right)}{e^t-1}} I_{\frac{r-3}{2}}\left(\frac{2 \text{b1} e^{t/2} s
\text{s01}}{-1+e^t}\right)}{\left(e^t-1\right)^3}+\frac{\text{b1}^2 s^{\frac{r-1}{2}} \left(e^t \left((4 \text{b1}-1)
s^2-2\right)+(4 \text{b1}-1) s^2+2\right) e^{2 t-\frac{\text{b1} \left(s^2 e^t+\text{s01}^2\right)}{e^t-1}}
I_{\frac{r+1}{2}}\left(\frac{2 \text{b1} e^{t/2} s \text{s01}}{-1+e^t}\right)}{\left(e^t-1\right)^3}$$

I'm not sure exactly how this goes now but I think the following identities should help:
$$I_{\nu}(z) == \frac{2(\nu+1)}{z}I_{\nu + 1}(z)+I_{\nu + 2}(z)$$
$$I_{\nu}(z) == I_{\nu - 2}(z)-\frac{2(\nu-1)}{z}I_{\nu-1}(z)$$
 
I'll try and check this sometime this week.
Did you define what s0 is before the code snippet above?

All together it remains an ugly beast as you remarked.
 
Hey, sorry for this late reply, but I thought I would go ahead and post in case someone needs this thread in the future! s0 is a function of s01 ( a constant) and t.

Substituting into that equation is getting very messy, so I decided to set all of the constants to zero and graph the solution for something like this...
86b8f4efae2cea63b3e20c32cbdea311.png

For values of t greater than 0 (where there is an asymptote) and less than 10 ish (where that bump there starts to grow)
For values of t close to zero the graph looks like this:
a4d1802d5959961f69c69e5dfb4615f1.png

I suppose this is implying that the solution is approximately correct during a certain time range...
 
Oops, that's set the constant to 1, not zero.
 

Similar threads

  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 2 ·
Replies
2
Views
3K
  • · Replies 6 ·
Replies
6
Views
7K
  • · Replies 6 ·
Replies
6
Views
5K
Replies
10
Views
3K
  • · Replies 2 ·
Replies
2
Views
2K
Replies
5
Views
2K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 1 ·
Replies
1
Views
3K
Replies
5
Views
8K