カーブフィティング

連立方程式を解くような記述で,最小自乗法をつかえる。すごい。

% 非多項式項をもつ線形モデル
% y=Xa -> X\y = X\Xa = a
clc; close all;
t = [0 .3 .8 1.1 1.6 2.3]';
y = [0.5 0.82 1.14 1.25 1.35 1.40]'

X = [ones(size(t)) exp(-t) t.*exp(-t)];
a= X\y

T = [0:0.1:2.5]';
Y = [ones(size(T)) exp(-T) T.*exp(-T)]*a;
plot(T,Y,'-',t,y,'o'), grid on

微分方程式Simulink ブロックに変換する方法
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
オプション製品である「BlockBuilder for Simulink」を使うと、自分で
定義した数式モデルを S-function ブロックに変換できます。
まず、微分方程式をシステムオブジェクトと呼ばれる中間形式に変換しま
す。
> with(BlockBuilder):
> sys := DiffEquation(m*diff(x(t),t$2)+x(t)=u(t),[u(t)],[x(t)]):

中間形式のシステムオブジェクトから S-function のソースコードを生成
し、ファイルに保存します。
> src := GenerateSFunction(sys,"mysys",optimization=true,parameters=[m=0.1]):
> SaveCode("mysys",src,extension="c"):

Simulinkブロック化のための m-script コードを生成します。
> mcode := GenerateSimulink(sys,"mysys","mysys_block",parameters=[m=0.1],target=C):

Simulinkブロックをビルドするためのコードを MATLAB 上で実行します。
> ExecuteMCode(mcode);

この操作が完了すると、自動的に Simulink が起動し変換されたブロックが
表示されます。後はブロックを Simulink で自由にお使い頂けます。

◆ 係数パラメータが時刻遷移する S-function ブロックの作成
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
BlockBuilder for Simulink では、係数が時刻遷移するような数式モデルで
も S-function ブロックに変換することができます。
> de := m*diff(x(t),t$2)+c*diff(x(t),t)=u(t);

de := m*(diff(x(t), `$`(t, 2)))+(PIECEWISE([.5, 1.5 < u(t)], [.1, otherwise]))*(diff(x(t), t)) = u(t)

この微分方程式の係数 c が時刻で変化するようなモデルは Maple 上で区分
関数を用いて定義します。
> c := piecewise(u(t)>1.5, 0.5, 0.1):
> de;

m*(diff(x(t), `$`(t, 2)))+(PIECEWISE([.5, 1.5 < u(t)], [.1, otherwise]))*(diff(x(t), t)) = u(t)

後は前の tips 同様の手順で Simulink ブロックを作っていきます。
> # システムオブジェクトを定義
> sys := DiffEquation(de, [u(t)], [x(t)]):
> # S-function ソースを生成・出力
> src := GenerateSFunction(sys,"mysys2",optimization=true,parameters=[m=0.1]):
> SaveCode("mysys2",src,extension="c"):
> # Simulink ブロック化コードを生成・実行
> mcode := GenerateSimulink(sys,"mysys2",mysys2_block",parameters=[m=0.1],target=C):
> ExecuteMCode(mcode):

このソフトは,自分で数式を入力できる。汎用FEM解析ソフトです。Student版なら登録するだけで利用できます。数式処理+完全自動メッシュ(計算状態をモニタリングしながら自動的に分割)+偏微分ソルバー+ポスト処理をすべて実施できます。

http://www.hulinks.co.jp/software/flexpde/
http://www.pdesolutions.com/
http://www.pdesolutions.com/student5.html