optimazation toolboxを使ってどのようにして反応速度定数を求めるか。
5 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
taisho kondo
el 22 de Nov. de 2018
Comentada: taisho kondo
el 27 de Nov. de 2018
添付したPDFファイル1ページにある反応モデルで4つの反応速度定数を求めたいです。
解析方法としては実験値xeとモデル解xsの差の二乗が最小になるように反応速度定数を求めたいです。
実験はまだ行っていないので実験値xeは適当なものを代入しています。
PDFファイル2ページにあるようにエラーが2つ出ていて、MATLABを利用するのは初めてで知識不足なため
原因が分からず手詰まりです。
どちらか片方のエラーでもいいので原因を教えていただけないでしょうか。
2 comentarios
Respuesta aceptada
Kazuya
el 23 de Nov. de 2018
Editada: Kazuya
el 23 de Nov. de 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 comentarios
Kazuya
el 27 de Nov. de 2018
そうですね、、「すべての物質の誤差の二乗の和」の平方根が最小になるように反応速度定数を求めています。
fminconを使う場合に最小化できるのは1つの値にだけなので、それぞれの誤差をそれぞれ最小化する問題には使えません。多目的最適化については下記をどうぞー。
Más respuestas (0)
Ver también
Categorías
Más información sobre ソルバーベースの非線形最適化 en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!