Jacobian

概要

ヤコビ行列を計算する。

  • ヘッダ
#include <tlnc/jacobian.hpp>

関数

関数はいずれもtlnc名前空間に属する。 引数のvector<Exprs...>ベクトルを返す関数を表していて、 いずれも行列を返す関数を返す。 偏微分にはDerivativeを使っている。

jacobian<N>(vector<Exprs...>)
jacobian<N>(Exprs&&...)

x<0>からx<N - 1>のN個の変数を使ってヤコビ行列を生成する。

jacobian<I, N>(vector<Exprs...>)
jacobian<I, N>(Exprs&&...)

x<I>からx<I + N - 1>のN個の変数を使ってヤコビ行列を生成する。

jacobian(vector<Exprs...>, vector<Xs...>)
jacobian(vector<Exprs...>, X&&)

2つ目の引数には変数(x<0>など)をコンマで並べたものを渡す。 2つ目の引数に並べられている変数を使ってヤコビ行列を生成する。

使い方

using tlnc::x;

auto f = x<0>;
auto g = x<1>;
auto h = x<2>;

// ベクトルを返す関数
auto a = (f, g, h);

// x<0>, x<1>, x<2>を使ってヤコビ行列を作る
tlnc::jacobian<3>(a);
tlnc::jacobian<3>(f, g, h);

// x<1>, x<2>を使ってヤコビ行列を作る
tlnc::jacobian<1, 2>(a);
tlnc::jacobian<1, 2>(f, g, h);

// x<0>, x<2>を使ってヤコビ行列を作る
tlnc::jacobian(a, (x<0>, x<2>));
tlnc::jacobian((f, g, h), (x<0>, x<2>));