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

#グラフの描写
plot(ans.rhs, (x, 0, 10*(L*C)**0.5)) # rhs は右辺(Right-hand side)の意味

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

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

まとめ

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

参考文献

RLC回路と微分方程式

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

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

 



電材館 第二種電気工事士 技能試験セット 「 電線2回分 」 「 ホーザン 工具 」 「 動画解説・テキスト付き 」 2023年


参加者500人以上
電験三種や電気工事士など
資格合格を目指す人が集まる
無料のオンラインサロン
【みんなのデンキ塾】

参加申請は公式ツイッターから



関連記事

コメント

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

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