2016-04-06 11 views
0
clc; clearvars; clear all; 
syms T; syms E; syms v1; syms v2; syms v3; 
assume(v1>0 & v1<50000); 
assume(v2>0 & v2<50000); 
assume(v3>0 & v3<60000); 
b = 10/60; 
fun = int(exp(-E/(8.314*T)),T,300,T); 
s1 = 175.6 * 10^3; 
fun11 = (1/(v1*sqrt(2*pi)))* exp(- ((E-s1)^2)/(2*v1^2)); 
a1 = 10^14.52; 
fun12 = int(exp((-a1/b)*fun)*fun11,E,s1-3*v1,s1+3*v1); 
alpha1 = 1 - fun12; 
s2 = 185.4 * 10^3; 
fun21 = (1/(v2*sqrt(2*pi)))* exp(- ((E-s2)^2)/(2*v2^2)); 
a2 = 10^13.64; 
fun22 = int(exp((-a2/b)*fun)*fun21,E,s2-3*v2,s2+3*v2); 
alpha2 = 1 - fun22; 
s3 = 195.4 * 10^3; 
fun31 = (1/(v3*sqrt(2*pi)))* exp(- ((E-s3)^2)/(2*v3^2)); 
a3 = 10^13.98; 
fun32 = int(exp((-a3/b)*fun)*fun31,E,s3-3*v3,s3+3*v3); 
alpha3 = 1 - fun32; 
alpha = (alpha1 + alpha2 + alpha3)/3 
alphaexp=[0.01134 0.04317];% 0.06494 0.08783 0.17053 0.32533 0.49142 0.55575 0.59242 0.6367 0.678 0.71621 0.75124 0.78442 0.81727]; 
T = [350 400]; %T = [350:50:1050]; 
minfunc = (subs(alpha)-alphaexp).^2 
error1 = sum(minfunc) 
error = matlabFunction(error1) 
[xfinal,fval] = fminsearch(@(x)error(x(1),x(2),x(3)),[4300 3500 32000]) 

上記のコードは、 'E'が未定義の関数または変数であるというエラーを生成します。しかし、すべての積分(fun12、fun22、fun32)の間、積分が変数Eを超えており、それぞれv1、v2、v3の制限があることを明確に示しました。 (したがって、最終的なエラー関数にEが存在してはいけません)。MATLAB:fminsearch()を使用したエラー

fminsearch関数の実装に間違いがありますか? ご協力いただければ幸いです。

答えて

0

min検索にも達しません。問題は統合に関するものです。

Matlabは閉じたフォームを計算することはできません(エラーは実際には説明できませんが)。

これを行うだけで、これを再現できます。周り

error = matlabFunction(error1) 
error(4300, 3500, 32000) 

遅い作業を手動で置換することであるし、数値的にあなたのソリューションを計算する:

vpa(subs(error1,[v1,v2,v3],[4300 3500 32000])) 

ボトルネックは置換です。私は、このすべてをより速くするために、とmatlabFunctionを組み合わせる方法があると思いますが、私はそれについてはわかりません。

+0

vpa関数を使用すると、特定の[v1、v2、v3]値でエラーの値がわかります。しかし、私の目的はこれらの変数自体に対してerror1関数を最適化することであり、fminsearchには最適化を行うための関数ハンドルが必要なので、どうすればよいのでしょうか? [v1、v2、v3]のランダムな値を入力し続けるだけで、どのエラーが最小限のエラーであるかを確認することはできません。 –

+0

'fminsearch(@(X)vpa(subs)(エラー1、[v1、v2、v3]、X))、[4300 3500 32000]))異なるシードで何回か実行して、極小で – xvan

+0

私のシステムが遅いのかどうかは分かりませんが、結果を出すにはひどい時間がかかります(コードはあなたの最後のコメントから実行されていて、解決策はまだありません)。 私はせっかちなのですか、それとも起こるはずですか? –

関連する問題