フィルターのクリア

optimazation toolboxを使っ​てどのようにして反応​速度定数を求めるか。

4 ビュー (過去 30 日間)
taisho kondo
taisho kondo 2018 年 11 月 22 日
コメント済み: taisho kondo 2018 年 11 月 27 日
添付したPDFファイル1ページにある反応モデルで4つの反応速度定数を求めたいです。
解析方法としては実験値xeとモデル解xsの差の二乗が最小になるように反応速度定数を求めたいです。
実験はまだ行っていないので実験値xeは適当なものを代入しています。
PDFファイル2ページにあるようにエラーが2つ出ていて、MATLABを利用するのは初めてで知識不足なため
原因が分からず手詰まりです。
どちらか片方のエラーでもいいので原因を教えていただけないでしょうか。
  2 件のコメント
Kazuya
Kazuya 2018 年 11 月 22 日
に同じ内容の質問がありますが、同じ授業からの課題かなにかです?
taisho kondo
taisho kondo 2018 年 11 月 26 日
同じ投稿者です。
以前質問したアカウントで24時間経過してもファイルの添付ができなかったため、新しいアカウントで投稿しました。
卒業論文の解析で使います。

サインインしてコメントする。

採用された回答

Kazuya
Kazuya 2018 年 11 月 23 日
編集済み: Kazuya 2018 年 11 月 23 日
エラーメッセージをコピペできない・・ので、わかりにくさは勘弁ください。
エラーメッセージによると kondo_objfun が原因です。fmincon 関数で目的関数として kondo_objfun を使っていますが、kondo_objfun が出力として返す値がスカラー値でないといけない、とメッセージは言っています。
せっかくコードを添付して頂いたので、実行してみました。kondo_objfun は
e = xe - xs;
f = e'*e;
と、実験値との誤差を評価しているのだと思いますが、ここが原因です。xe は 7x5 の配列で、xs も7点の時刻での解を求めているので、もちろん 7x5 の配列です。ここで、f を計算すると 5x5 の配列がでてきますが、、これは意図通りですか?
誤差の定義も色々あると思いますが、5x5 の配列ではなく、スカラー値で出してくれというのが、エラーメッセージが意味するところです。
とりあえず、
f = norm(e);
とすればなんとなくの誤差をスカラー値で計算できるので動くようになると思いますが、目的にあっているかどうかは適宜調査くださいませ。
あと、非線形制約関数にも問題ありです。
function [c, ceq] = kondo_funcon()
ではなく、
function [c, ceq] = kondo_funcon(x)
と入力引数が(関数内で使わなくても)必要です。
  5 件のコメント
Kazuya
Kazuya 2018 年 11 月 27 日
そうですね、、「すべての物質の誤差の二乗の和」の平方根が最小になるように反応速度定数を求めています。
fminconを使う場合に最小化できるのは1つの値にだけなので、それぞれの誤差をそれぞれ最小化する問題には使えません。多目的最適化については下記をどうぞー。
taisho kondo
taisho kondo 2018 年 11 月 27 日
分かりました。
親切に教えていただきありがとうございます。
fminconと多目的最適化のどちらが今回の実験にあっているか考えてみます。
また、何かあったときはよろしくお願いいたします。

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File Exchangeソルバーベースの非線形最適化 についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!