Inverting dispersion relation with Mathematica

In summary, the conversation was about solving a dispersion relation for capillary-gravity waves using Mathematica. The suggested approach was to use NDSolve instead of FindRoot, by creating a function that is equal to 0 when the dispersion relation is satisfied and then using it in NDSolve to solve for the relationship between the wavenumber k and depth h. This method is useful for solving differential equations and can provide a numerical solution for the desired relationship.
  • #1
Takeshin
6
0
Hi guys,

I'm currently working on a project related to Faraday instability, and I of course came across the dispersion relation for capillary-gravity waves, i.e.

ω² = tanh(kh)(gk + σk³/ρ) .

Now I would need to numerically solve this relation for the wavenumber k as a function of depth h (in fact, this is the wavelength I'm interested in, but this is given freely if I know the wavenumber). My first reflex was to rewrite this relation in terms of h as a function of k

h = (1/k) arctanh [ω² (gk + σk³/ρ)^(-1) ]

and then try to invert it with Mathematica (which I'm not really familiar with, but it seemed the easiest choice to me). I tried using Findroot, with something like this :

h[x_] := (1/x) ArcTanh[((70 \[Pi])^2)/ (9.81x +
(0.0206 x³/950) )]
hmax = 0.01;
hmin = 0.001;
dh = 0.0001;
Sol = Table[{{b -> i}, FindRoot[i == h[x], {x, 0.001}]} //
Flatten, {i, hmin, hmax, dh}];

but this seems to stumble upon some convergence error (here I replaced ω, ρ and σ with numerical values related to my experimental setup), and I found nothing that seemed really helpful in the doc. Does anyone have an idea on what I should try to make it work ?

Thanks in advance for you replies. :smile:
 
Physics news on Phys.org
  • #2
</code>I think you should try using Mathematica's NDSolve function instead of FindRoot. NDSolve is a numerical solver that can solve differential equations, and since your dispersion relation is an equation relating the wavenumber k to the depth h, it might be useful here. The way you would use it is by making a function f[k, h] that is equal to 0 when the dispersion relation is satisfied. You can then plug this function into NDSolve and it will solve for the relationship between k and h. For example, let's say you have the following dispersion relation: ω² = tanh(kh)(gk + σk³/ρ) You would then make a function f[k, h] that is equal to 0 when this equation holds true: f[k_, h_] := (Tanh[k h] (g k + σ k^3/ρ) - ω^2)Then, you can plug this function into NDSolve to solve for the relationship between k and h: NDSolve[{f[k, h] == 0, hmin <= h <= hmax}, k, {h, hmin, hmax}]This should give you a numerical solution for the relationship between k and h that you can use in your project. Hope this helps!
 

1. Can Mathematica be used to invert dispersion relations?

Yes, Mathematica has built-in functions and packages that allow for the inversion of dispersion relations. These include the InverseFourierTransform and InverseLaplaceTransform functions, as well as the DispersionRelations package.

2. What is the purpose of inverting a dispersion relation?

Inverting a dispersion relation allows for the determination of the underlying physical properties of a system. This can include the identification of material parameters, the prediction of energy spectra, and the analysis of wave propagation behavior.

3. How accurate is the inversion of dispersion relations with Mathematica?

The accuracy of the inversion process depends on the complexity of the dispersion relation and the input data used. In general, Mathematica's numerical algorithms provide highly accurate results, but it is always recommended to carefully validate the results and consider potential sources of error.

4. Can Mathematica handle multidimensional dispersion relations?

Yes, Mathematica has functions and packages that can handle multidimensional dispersion relations. This includes the NDInverseFourierTransform and NDInverseLaplaceTransform functions, which can be used for inversion in multiple dimensions.

5. Are there any limitations to inverting dispersion relations with Mathematica?

While Mathematica has powerful capabilities for inverting dispersion relations, it is important to note that the accuracy and applicability of the results may be limited by the complexity of the dispersion relation, the quality and quantity of input data, and the assumptions made in the inversion process. It is always recommended to carefully consider these factors and validate the results with experimental data.

Similar threads

  • MATLAB, Maple, Mathematica, LaTeX
Replies
1
Views
1K
Replies
3
Views
1K
  • Atomic and Condensed Matter
Replies
2
Views
4K
  • Differential Equations
Replies
5
Views
3K
  • Advanced Physics Homework Help
Replies
1
Views
2K
  • Other Physics Topics
Replies
8
Views
1K
Replies
96
Views
9K
Replies
1
Views
2K
  • Special and General Relativity
3
Replies
75
Views
3K
  • Introductory Physics Homework Help
Replies
2
Views
4K
Back
Top