RLC回路と微分方程式

RLC回路と微分方程式

はじめに

本記事では、RLC回路の微分方程式をpythonプログラムを用いて解くことを目的とする。

プログラミングの紹介

RLC直列回路の微分方程式は以下の様に表すことが出来る。

この式は、ラプラス変換や二階級微分の解き方によって解くことが出来る。

今回は、二回微分の解き方を用いて微分方程式を解く事にする。

まず、積分領域を微分方程式から削除するために、両辺を時間で微分する。

これを整理すると以下の様になる。

ここで、解をと仮定して代入すると以下の様な二次方程式が出来上がる。

これを解くと以下の様になる。

 

ゆえに、の場合は、

振動しないで減衰する。

一方で、の時は、減衰振動をする。

 

以上を念頭にして、ここでは微分方程式をコンピューターに解かせるプログラムを作ったので紹介する。

PythonのSympyというライブラリが微分方程式を解くのに便利なので用いた。(Scipyではないので注意して欲しい)

import sympy as sym
from sympy.plotting import plot
sym.init_printing(use_unicode=True)
#%matplotlib inline


#回路定数
R = int(input("整数値を入力してください 抵抗値[Ω] "))     # 抵抗値
L = int(input("整数値を入力してください インダクタ[mL]"))*1e-3    # インダクタンス
C = int(input("整数値を入力してください 静電容量[uF]"))*10e-6   # 静電容量


if((R/(2*L))**2>1/(L*C)):
    print("振動せずに収束する")
else:
    print("振動しながら収束する")


a, b, c, x, y = sym.symbols("a b c x y")

f = sym.Function('f')
g = sym.Function('g')


# 常微分方程式
eq = sym.Eq(f(x).diff(x,2)*L*C + f(x).diff(x,1)*R*C + f(x))
eq

# 一般解
ans = sym.dsolve(eq)
print(ans)
ans



# 特殊解
ans = sym.dsolve(eq, ics={f(0):1, f(x).diff(x,1).subs(x, 0):1})
print(ans)
ans

振動減衰の曲線は以下の様になる。

一方で、振動せずに減衰する曲線は以下の様になる。

まとめ

今回のプログラムでは、解が振動解になる場合とそうでない場合を判別する機能も添付した。ただし、Sympyは、係数が整数でなければ解くことが出来ないようなので、そこに注意してプログラミングをした。

参考文献

RLC回路と微分方程式

ラプラス変換を用いた解法

Pythonを用いた微分方程式の解法

 



関連記事

コメント

  1. この記事へのコメントはありません。

コメントするためには、 ログイン してください。