スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Scilabで非線形方程式ソルバ その3

Scilabで非線形方程式ソルバ その1その2では関数の解を非線形方程式ソルバで計算しました。
今回は、離散データに対しても似たような解を求めるために、関数の補完と組み合わせるという事を行いました。

001_201502150526487fb.png
Fig.1: 離散データに対する補完と非線形方程式ソルバ



離散データのfsolve


Scilabで非線形方程式ソルバ その1その2では関数 f(x) がゼロとなる x を探す方法を書きました。今回は f(x) が具体的な関数の形ではなく、離散データとして与えられている場合について書きます。

と言ってもやっていることは簡単で、離散データを内挿(補間)してから解を求めるだけです。

今回はScilabで非線形方程式ソルバ その1との比較のために対数関数を例にしますが、実際の離散データは実験データであったり、複雑な数値計算(例えば第一原理計算や回路シミュレーション)の結果得られる数値列を想定します。

離散データの補完にはScilabでデータの補間で紹介したinterp1を利用します。
interp1の補間方法のデフォルトは線形補完(linear)のようです。今回のエントリでは最近接(nearest)は使えません。

スクリプト


スクリプトはlogsolve2_sce.txtとなりました。

今回は、離散データ自体もスクリプト内部で用意しましたが、実験データや、ほかの数値データを読み込む場合にはExcelデータを Scilabで読みこむScilabで大容量のCSV(テキスト)ファイルを読み込む,Scilabで大容量のCSV(テキスト)ファイルを読み込む2などを参照してください。

clear;

// *** データの作成 ***
X = linspace(0.1,10,15);
Y = log(X);

// *** 解くべき関数の定義 ***
function y = func(x)
// y = log(x) - yp;
// y = interp1(X, Y, x, "spline") - yp; // スプライン補完
y = interp1(X, Y, x, "linear") - yp; // 線形補完
endfunction

// *** 非線形方程式ソルバ ***
yp = 1; // yp = f(x)
x0 = 1; // ソルバ―の初期値
// 非線形方程式を解く
xp = fsolve(x0, func)
// 誤差
err = abs(xp - exp(yp))

// *** グラフのプロット ***
plot(X, Y, '.-b');
plot(X, yp * ones(Y), '--k');
plot(xp, yp, 'or');


結果


所詮、離散的な数値データから間の値を予測するだけなので、Scilabで非線形方程式ソルバ その1と比較すると結果に誤差が出ます。

線形補完を行った時の近似解と、真の値からの誤差は以下のようになりました。
 xp  =    2.737908
err = 0.0196261


スプライン補完を行った場合は、以下の通りです。
 xp  =    2.7130249
err = 0.0052569


今回の例ではスプライン補完の方が良い結果が得られているようです。

関連エントリ




参考URL




付録


このエントリで使用したScilabのシミュレーション用ファイルを添付します。ファイル名末尾の".txt"を削除して、"_"を"."に変更すれば使えるはずです。(参考:ねがてぃぶろぐの付録)


参考文献/使用機器




フィードバック



にほんブログ村 その他趣味ブログ 電子工作へ

 ↑ 電子工作ブログランキング参加中です。1クリックお願いします。


コメント・トラックバックも歓迎です。 ↓      


 ↓ この記事が面白かった方は「拍手」をお願いします。
スポンサーサイト

tag: Scilab 非線形方程式ソルバ 補間 fsolve interp1 

FC2カウンター
カテゴリ
ユーザータグ

LTspiceAkaiKKRmachikaneyamaScilabKKRPSoC強磁性CPAPICOPアンプecalj状態密度モンテカルロ解析常微分方程式トランジスタodeDOSインターフェースPDS5022定電流スイッチング回路分散関係半導体シェルスクリプトレベルシフト乱数HP6632A可変抵抗トランジスタ技術R6452AI2C温度解析ブレッドボードバンドギャップ確率論反強磁性セミナーバンド構造数値積分偏微分方程式非線形方程式ソルバ熱設計絶縁三端子レギュレータISO-I2CA/DコンバータシュミットトリガフォトカプラカオスPWscfGW近似LM358LEDマフィンティン半径発振回路USB数値微分TL431PC817Cサーボアナログスイッチ直流動作点解析補間カレントミラー74HC4053bzqltyチョッパアンプFFT2ちゃんねる開発環境量子力学単振り子電子負荷VESTAQuantumESPRESSO標準ロジックパラメトリック解析ブラべ格子イジング模型アセンブラLDA基本並進ベクトルBSchSMPTLP621失敗談六方最密充填構造コバルト位相図QSGWGGAスイッチト・キャパシタewidth状態方程式VCAキュリー温度繰り返し最適化仮想結晶近似不規則合金熱伝導gfortran相対論抵抗FETMaximaQuantum_ESPRESSOcygwinランダムウォークラプラス方程式スピン軌道相互作用スレーターポーリング曲線マントルシュレディンガー方程式ZnO自動計測QNAP固有値問題ダイヤモンドデータロガー井戸型ポテンシャルTLP552CIFxcrysdenゼーベック係数熱力学条件分岐MCU最小値UPS格子比熱最大値ガイガー管平均場近似過渡解析Writer509スーパーセルFXA-7020ZR差し込みグラフ第一原理計算テスタ起電力OpenMP三角波ubuntuLM555NE555ブラウン運動詰め回路ハーフメタルawkfsolveUbuntuフェルミ面TLP521トランスMAS830LPGACK1026OPA2277フィルタトレーナーバトルEAGLEノコギリ波負帰還安定性ナイキスト線図MBEP-10LMC6622SC1815CapSenseAACircuitPIC16F785入出力固定スピンモーメントFSMTeX結晶磁気異方性全エネルギーc/a合金multiplotgnuplot非線型方程式ソルバL10構造正規分布等高線ジバニャン方程式ヒストグラム確率論初期値interp1fcc面心立方構造ウィグナーザイツ胞半金属デバイ模型磁気モーメント電荷密度重積分SIC不純物問題擬ポテンシャル状態図cif2cellPWgui二相共存ウルツ鉱構造edeltquantumESPRESSOフォノンリジッドバンド模型スワップ領域BaO岩塩構造ルチル構造マテリアルデザインspecx.fフラクタルマンデルブロ集合キーボードRealforceクーロン散乱三次元疎行列縮退化学反応関数フィッティング最小二乗法Excel直流解析PCTS-110TS-112日本語パラメータ・モデル等価回路モデル文字列ポケモンGO熱拡散方程式HiLAPW両対数グラフ片対数グラフ陰解法Crank-Nicolson法ifort境界条件連立一次方程式グラフの分割軸ラベルヒストグラム不規則局所モーメントスーパーリーグ円周率Gimp凡例線種シンボルトラックボール

最新コメント
リンク

にほんブログ村 その他趣味ブログ 電子工作へ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。