Symbolic mathで微分演算子っぽいものを作る

Symbolic mathで微分演算子っぽいものを作ることができる。なんの役に立つか不明だが、面白い機能なので覚書。

 

[問題の定式化]

2回微分可能な関数 u(x)について以下の簡単な常微分方程式を考える。

 \frac{d^2 u }{d x^2} + \rho u + x = 0

微分演算子 Dを以下のように定義する。

 D =  \frac{d^2 }{d x^2} + \rho

微分演算子 Dを使えば、常微分方程式は以下のように簡単に表記できる。

 D u + x = 0 

 

関数の定義:

function [DD] = diffOperator(funcArray, vars, params)

rho = params.rho;

xx = vars.xx;

DD = diff(funcArray, xx, 2) + rho * funcArray;

end

 

使い方:

% 関数を特定した場合の使い方

syms xx;

params.rho = 1.5;

vars.xx = xx;

uu(xx) = xx^2; 

func = symfun(uu(xx), xx);

diffOperator(func, vars, params)

 

% 関数が一般形の場合の使い方

clear uu;

syms uu(xx);

func = symfun(uu(xx), xx);

 

diffOperator(func, vars, params)