## Fredholm.jl

Regularized inversion of first kind Fredholm integrals.
Author MatFi
Popularity
0 Stars
Updated Last
1 Year Ago
Started In
March 2021

# Fredholm

## Usage

As an example, consider input data of the following form

```using Fredholm, QuadGK, Random
Random.seed!(1234);

F(t) = exp(-(t - 2)^2 / (2 * 0.3^2)) + exp(-(t - 3)^2 / (2 * 0.3^2))
y(s) =  quadgk(t -> F(t) * exp(-t * s), 0, Inf, rtol=1e-6)

s = 10.0.^(-2:0.05:1)  # generate discrete example data
ys = map(y, s)         # from this we want to approximate F(t)
noise = (randn(length(ys))) * 0.001

ti = 0:0.01:5|> collect #define the t-domain for the solution
α = 1.2e-4
t, yt, ss, yss= invert(s, ys .+ noise, ti, (t, s) -> exp(-t * s), Tikhonov(α))```

The solution `yt` at discrete `t` will very much depend on the choice of the regularization parameter `α`. If more noise is present in the data a higher `α` should be picked and vice versa. The variables `ss` and `yss` contain the regularized from of `s` and `ys`, where `ss[end]` contians the `y-offset`. If `invert` is called with the keyword `yoffset=false` `ss` and `s` will be equal. To allow the solution to take also negative amplitudes use the `tdomain = :real` keyword

`t, yt = invert(s, ys .+ noise, ti, (t, s) -> exp(-t * s), Tikhonov(α), tdomain=:real)`

In cases that the regularization parameter `α` is not known beforehand one can estimate it via the L-Curve method by calling

`t, yt = invert(s, ys .+ noise, ti, (t, s) -> exp(-t * s), LCurve(Tikhonov(α)), tdomain=:real)`

### Used By Packages

No packages found.