Julia(SymPy)で1次不等式、2次不等式を解く方法

どうも、木村(@kimu3_slime)です。

今回は、Julia(SymPy)で1次不等式、2次不等式を解く方法を紹介します。

 

準備

SymPyを使うので、持っていなければインストールしておきましょう。

準備として、以下のコードを実行しておきます。

 

不等式を解く方法

\(x\)を変数、記号として用意しましょう。

オプション「real=true」で変数が実数であると仮定しておくと、結果の表示がシンプルになります。

 

1次不等式

「LessThan(左辺,右辺)」で不等式を定めて、「solve(不等式)」で解くことができます。LessThanは\(\leq\)、「左辺は右辺と同じか小さい(小なりイコール)」を表すものです。

\[ \begin{aligned}2 x \leq 1\end{aligned} \]

\[ \begin{aligned}x \leq \frac{1}{2}\end{aligned} \]

 

等号を含まない、狭義の不等号\(<\)による不等式は、「StrictLessThan」を使います。

\[ \begin{aligned}2 x < -1\end{aligned} \]

\[ \begin{aligned}x < – \frac{1}{2}\end{aligned} \]

 

2次不等式

2次不等式も同様にして解けます。「GreaterThan」はLessThanの逆向きで、\(\geq\)(大なりイコール、左辺は右辺と同じか大きい)の意味です。

\[ \begin{aligned}2 x^{2} – 3 \geq 4\end{aligned} \]

\[ \begin{aligned}\frac{\sqrt{14}}{2} \leq x \vee x \leq – \frac{\sqrt{14}}{2}\end{aligned} \]

\(\vee\)は「または(or)」の意味です。\(x\leq – \frac{\sqrt{14}}{2}\)または\(\frac{\sqrt{14}}{2} \leq x\)を満たす\(x\)が不等式を成立させます。

 

\[ \begin{aligned}x^{2} – 2 x + 1 \leq 3\end{aligned} \]

\[ \begin{aligned}x \leq 1 + \sqrt{3} \wedge 1 – \sqrt{3} \leq x\end{aligned} \]

\(\wedge\)は「かつ(and)」の意味です。\(1 – \sqrt{3} \leq x\)と\(x \leq 1 + \sqrt{3} \)の両方を満たす\(x\)が、不等式の解です。

 

\[ \begin{aligned}x^{2} \leq 0\end{aligned} \]

\[ \begin{aligned}x = 0\end{aligned} \]

不等式の解がただ一点となるケースも解けます。

 

\[ \begin{aligned}x^{2} < 0\end{aligned} \]

Any[]

「Any[]」は結果が存在しないこと、つまり不等式に解がないことを意味します。2乗して負になる実数は存在しません。

 

一般の不等式

多項式が定める不等式だけでなく、より一般の関数が定める不等式も解けます。

\[ \begin{aligned}3 \leq x \vee x \leq -1\end{aligned} \]

\[ \begin{aligned}1 \leq x\end{aligned} \]

\[ \begin{aligned}0 \leq x \wedge x \leq \pi\end{aligned} \]

\(|x-1| \geq 2\)の解が\(3 \leq x \vee x \leq -1\)であること、\(\log x \geq 0\)の解が\(1 \leq x\)であることは正しいです。

しかし、\(\sin x \geq 0\)の解が\(0 \leq x \wedge x \leq \pi\)であるという結果は微妙です。確かにこれを満たす\(x\)は不等式を満たしますが、解のすべてではありません。例えば、\(\sin(2\pi)=0\)です。一般には、\(2k \pi \leq x \leq (2k+1)\pi\)を満たすような整数\(k\)が存在する\(x\)が解と言えます。

 

以上、Julia(SymPy)で1次不等式、2次不等式を解く方法を紹介してきました。

等式(方程式)も代数的に解くことができますが、不等式も特殊な値を求めるだけでなく、範囲を求めてきちんと解けるのは嬉しいです。

木村すらいむ(@kimu3_slime)でした。ではでは。

 

1から始める Juliaプログラミング
進藤 裕之(著), 佐藤 建太(著)
コロナ社 (2020-03-26T00:00:01Z)
5つ星のうち4.5
¥7,353 (コレクター商品)

 

こちらもおすすめ

Julia(SymPy)による三角関数の特殊な値の計算方法

Julia(SymPy)によるテイラー級数展開の求め方(指数対数、三角、双曲線)

Julia(SymPy)で1変数関数の極限を求める方法

Julia(SymPy)で1変数関数を積分する方法(多項式、指数対数、三角関数)

Julia(SymPy)で1変数関数を微分する方法(多項式、指数対数、三角関数)

.Julia(SymPy)で有理関数を部分分数分解、通分する方法

Julia(SymPy)で多項式の展開・因数分解、方程式を解く方法

Juliaで1変数関数のグラフを描く方法(多項式、指数対数、三角関数)