How to Implement Kramers-Kronig in Mathematica for CSV Data?

  • Thread starter Thread starter snickersnee
  • Start date Start date
  • Tags Tags
    Code Mathematica
Join the discussion
Registration is free. Ask a follow-up in this thread, or start your own.
1 reply · 6K views
snickersnee
Messages
30
Reaction score
0

Homework Statement



I'm trying to write Mathematica code to use Kramers-Kronig on a csv file with 2 columns. Column 1 is h(eV). It goes from 0 to 6, in increments of 0.1. Column 2 is alpha (cm^-1).
In the equation below, I'm guessing column 1 is Ω. But what should I put in for ω?

Homework Equations



kk_n.gif


(Source: http://www.rp-photonics.com/kramers_kronig_relations.html)

The Attempt at a Solution



Code:
c = 300000000;
data = Import[
   "kk.csv", "CSV"];
column1 = data[[All, 1]];
column2 = data[[All, 2]];output := 
 1 + (c )/(pi) NIntegrate[
    column2/(column1^2 - omega^2), {column1, 0.1, 0, infinity}, 
    Method -> "PrincipalValue", Exclusions -> Automatic]

Plot[output, {column1, 0, 6}, AxesOrigin -> {0, 0}]
 
Physics news on Phys.org
It's been a while so I've forgotten most about this stuff, but I noticed that [itex]\Omega[/itex] is your integration variable. Also column1 is a defined list and your integration variable is supposed to be a dummy, I think, so I'm not sure what you have written will actually work.

Since [itex]\omega[/itex] (lower-case omega) is the variable on the left hand side, I would expect that you get a function, i.e.
Code:
output := Function[\[omega], (* NIntegrate expression *)]
Plot[output, {\[omega], ..., ...}]