Calcoli scientifici con Julia/Circuiti elettrici

Da testwiki.
Vai alla navigazione Vai alla ricerca

Template:Calcoli scientifici con Julia

Esempio 1

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


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

I1=I3+I2
E1=I3R3+I1(R2+R1)
E2=I2(R5+R4)I3R3

Se i dati sono i seguenti :

R1=2𝛺
R2=11𝛺
R3=20𝛺
R4=2𝛺
E1=40V
E2=20V

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 :

I1=1,47A,I2=0,42A,I3=1,04A

Esempio 2

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

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

i1=iC+iL
vC=vL+RiL
E=Ri1vC

Se i dati sono i seguenti :

R=1𝛺
E=20V
L=5μH
C=5μF

si ottiene il sistema di equazioni differenziali:

dvCdt=4vC5iL5
diLdt=vC5iL5

con condizioni iniziali :

iC(0)=10A,vL(0)=10V

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")


Template:Avanzamento