As languages go, installing Julia is a piece of cake. You also need IJulia to run this notebook. You will also need to instal the PyPlot package:
Pkg.add("PyPlot")
I'm using Julia v0.4.5.
In [1]:
A = [[2,5,4] [1,5,2] [7,9,3]]
b = [1, 0.6, 4]
x = A \ b
Out[1]:
In [2]:
# You can also write this like:
\(A, b)
Out[2]:
In [3]:
A * x
Out[3]:
In [4]:
# Define model m
M = 50
m = zeros(M, 1)
m[10:15,:] = 1.0
m[15:27,:] = -0.3
m[27:35,:] = 2.1
Out[4]:
In [5]:
using PyPlot
In [6]:
figure(figsize=(4,4))
plot(m)
Out[6]:
In [7]:
# Discrete kernel G
N = 20
L = 100
α = 0.8
x = linspace(0, M-1, 50) * L/(M-1)
dx = L/(M-1)
r = linspace(0, N-1, 20) * L/(N-1)
Out[7]:
This double loop thing is not idiomatic, I am sure, but we don't care about performance here.
In [8]:
G = zeros(N, M)
for j = 1:M
for k = 1:N
G[k,j] = dx * exp(-α * abs(r[k] - x[j])^2)
end
end
In [10]:
# Compute data
d = G * m
Out[10]:
In [25]:
figure(figsize=(4,4))
plot(d)
Out[25]:
In [11]:
# Minimum norm solution
m_est = G' * inv(G * G') * d
# Data prediction
d_pred = G * m_est
Out[11]:
In [13]:
# Minimum norm solution
m_est = G' * inv(G * G') * d
Out[13]:
In [15]:
figure(figsize=(4,4))
plot(m_est)
Out[15]:
In [11]:
# Data prediction
d_pred = G * m_est
Out[11]:
In [12]:
figure(figsize=(4,4))
plot(d_pred)
Out[12]:
In [ ]:
In [ ]: