Calcoli scientifici con Julia/Circuiti elettrici

Esempio 1

modifica

Dato il seguente circuito lineare, si vuole determinare il valore delle correnti  :


Applicando le leggi di Kirchoff si ottiene un sistema lineare di 3 equazioni in 3 incognite :

 
 
 

Se i dati sono i seguenti :

 
 
 
 
 
 

si può risolvere il sistema con Julia :

A=[-1 1 1;13 0 20;0 2 -20]
3×3 Matrix{Int64}:
-1  1    1
13  0   20
 0  2  -20
b=[0, 40, -20]
3-element Vector{Int64}:
  0
 40
-20
A\b

3-element Vector{Float64}:

1.4723926380368098
0.4294478527607364
1.0429447852760736

Quindi si ottiene :

 

Esempio 2

modifica

Dato il seguente circuito lineare del secondo ordine, si vuole determinare il valore delle tensioni e correnti  :

 

Applicando le leggi di Kirchoff si ottiene un sistema lineare di 3 equazioni in 3 incognite :

 
 
 

Se i dati sono i seguenti :

 
 
 
 

si ottiene il sistema di equazioni differenziali:

 
 

con condizioni iniziali :

 

Risolvendo tale sistema con Julia si ha:

function ode_fn(du,u,p,t)
    x, y = u
    du[1] = -4 - x/5- y/5
    du[2] = x/5 - y/5
end
using DifferentialEquations
using Plots


t_begin=0.0
t_end=30
tspan = (t_begin,t_end)
x_init=10.0
y_init=10.0

prob = ODEProblem(ode_fn, [x_init, y_init], tspan)
num_sol = solve(prob, Tsit5(), reltol=1e-8, abstol=1e-8)
x_num_sol = [u[1] for u in num_sol.u]
y_num_sol = [u[2] for u in num_sol.u]

plot(num_sol.t, x_num_sol,
    title="Tensione su C e corrente su L",
    xaxis="t",
    linewidth=2,
    label="Tensione su C")
plot!(num_sol.t, y_num_sol,
    linewidth=2,
    label="Corrente su L")