Clear Filters
Clear Filters

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

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

Sign in to comment.

Accepted Answer

Kazuya
Kazuya on 23 Nov 2018
Edited: Kazuya on 23 Nov 2018
エラーメッセージをコピペできない・・ので、わかりにくさは勘弁ください。
エラーメッセージによると 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 Comments
Kazuya
Kazuya on 27 Nov 2018
そうですね、、「すべての物質の誤差の二乗の和」の平方根が最小になるように反応速度定数を求めています。
fminconを使う場合に最小化できるのは1つの値にだけなので、それぞれの誤差をそれぞれ最小化する問題には使えません。多目的最適化については下記をどうぞー。
taisho kondo
taisho kondo on 27 Nov 2018
分かりました。
親切に教えていただきありがとうございます。
fminconと多目的最適化のどちらが今回の実験にあっているか考えてみます。
また、何かあったときはよろしくお願いいたします。

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!