MATLABで微積分:微分方程式、積分、極限を解く
MATLABには、微分積分学の問題、任意の次数の微分方程式の解法、極限の計算のためのさまざまな方法が用意されています。何よりも、複雑な関数のグラフを簡単にプロットし、元の関数とその導関数を解くことで、グラフ上の極大値、極小値、その他の定常点を確認できます。
この章では微積分の問題を扱います。この章では、関数の極限計算と極限の性質の検証など、微積分準備の概念について説明します。
次の章微分では、式の導関数を計算し、グラフ上の局所的な極大値と極小値を見つけます。また、微分方程式の解法についても説明します。
最後に、積分の章では積分学について説明します。
極限の計算
MATLABには、極限を計算するlimit関数があります。最も基本的な形式では、limit関数は式を引数として受け取り、独立変数が0に近づくときの式の極限を求めます。
例えば、xが0に近づくときの関数f(x) = (x3 + 5)/(x4 + 7)の極限を計算してみましょう。
syms x limit((x^3 + 5)/(x^4 + 7))
MATLABは上記のステートメントを実行し、以下の結果を返します。
ans = 5/7
limit関数はシンボリック計算の領域に属します。syms関数を使用して、どのシンボリック変数を使用するかをMATLABに伝える必要があります。変数が0以外の数に近づくときの関数の極限も計算できます。lim x→a(f(x))を計算するには、引数付きでlimitコマンドを使用します。最初の引数が式、2番目がxが近づく数(ここではa)です。
例えば、xが1に近づくときの関数f(x) = (x-3)/(x-1)の極限を計算します。
limit((x - 3)/(x-1),1)
MATLABは上記のステートメントを実行し、以下の結果を返します。
ans = NaN
もう一つ例を示します。
limit(x^2 + 5, 3)
MATLABは上記のステートメントを実行し、以下の結果を返します。
ans = 14
Octaveでの極限計算
以下は、上記の例のOctave版で、symbolicパッケージを使用しています。実行して結果を比較してください。
pkg load symbolic symbols x = sym("x"); subs((x^3+5)/(x^4+7),x,0)
Octaveは上記のステートメントを実行し、以下の結果を返します。
ans = 0.7142857142857142857
極限の基本性質の検証
代数的極限定理は、極限の基本的な性質を提供します。これらは以下の通りです。
以下の2つの関数を考えます。
- f(x) = (3x + 5)/(x - 3)
- g(x) = x2 + 1
xが5に近づくときの両関数の極限を計算し、これら2つの関数とMATLABを使用して極限の基本性質を検証します。
例
スクリプトファイルを作成し、以下のコードを入力します。
syms x f = (3*x + 5)/(x-3); g = x^2 + 1; l1 = limit(f, 4) l2 = limit (g, 4) lAdd = limit(f + g, 4) lSub = limit(f - g, 4) lMult = limit(f*g, 4) lDiv = limit (f/g, 4)
ファイルを実行すると、以下が表示されます。
l1 = 17 l2 = 17 lAdd = 34 lSub = 0 lMult = 289 lDiv = 1
Octaveでの極限の基本性質の検証
以下は、上記の例のOctave版で、symbolicパッケージを使用しています。実行して結果を比較してください。
pkg load symbolic symbols x = sym("x"); f = (3*x + 5)/(x-3); g = x^2 + 1; l1 = subs(f, x, 4) l2 = subs (g, x, 4) lAdd = subs (f+g, x, 4) lSub = subs (f-g, x, 4) lMult = subs (f*g, x, 4) lDiv = subs (f/g, x, 4)
Octaveは上記のステートメントを実行し、以下の結果を返します。
l1 = 17.0 l2 = 17.0 lAdd = 34.0 lSub = 0.0 lMult = 289.0 lDiv = 1.0
左側極限と右側極限
関数が変数の特定の値で不連続性を持つ場合、その点では極限は存在しません。つまり、関数f(x)の極限がx = aで不連続になるのは、xが左側からaに近づくときの極限値が、xが右側からaに近づくときの極限値と等しくない場合です。
これにより、左側極限と右側極限の概念が導かれます。左側極限は、x → a(左から)、つまりx < aの値でxがaに近づくときの極限として定義されます。右側極限は、x → a(右から)、つまりx > aの値でxがaに近づくときの極限として定義されます。左側極限と右側極限が等しくない場合、極限は存在しません。
以下の関数を考えます。
f(x) = (x - 3)/|x - 3|
limx→3 f(x)が存在しないことを示します。MATLABは以下の2つの方法でこの事実を確認できます。
- 関数のグラフをプロットして不連続性を示す
- 極限を計算して両者が異なることを示す
左側極限と右側極限は、limitコマンドの最後の引数として文字列'left'と'right'を渡すことで計算します。
例
スクリプトファイルを作成し、以下のコードを入力します。
f = (x - 3)/abs(x-3); ezplot(f,[-1,5]) l = limit(f,x,3,'left') r = limit(f,x,3,'right')
ファイルを実行すると、MATLABは以下のプロットを描画します。
その後、以下の出力が表示されます。
l = -1 r = 1
MATLAB
- MATLAB徹底解説:数値計算環境の決定版
- MATLAB基礎マスター:必須構文とコマンド完全ガイド
- MATLAB変数の理解:基礎から実例まで徹底解説
- MATLAB必須コマンドリファレンス:効率的な計算のための完全ガイド
- MATLABデータ型完全ガイド:15種類の基本型と変換・判定関数
- MATLAB演算子完全ガイド:算術・論理・ビット演算・集合操作
- MATLABベクトル完全マスター:行/列ベクトルの基礎と操作
- MATLAB行列完全マスター:作成・参照・操作・削除の基礎
- MATLAB:多次元配列と特殊配列をマスターする
- MATLABコロン演算子をマスター:ベクトル作成と効率的な反復処理
- MATLABの数値型:型、格納、変換