2012-06-23 105 views
1

我用fsolve解決功能,但結果表明Matlab的fsolve優化終止

優化終止:在X相對變化的範數大於最大(options.TolX^2,EPS)和較少 求和OF-函數 的平方值小於sqrt(options.TolFun)。

A = 0.3490

任何人知道如何解決這個問題?謝謝!

我的代碼如下

clear 

M=10000; 
x0=0.35; 
Z=randn(M,1); 
A=fsolve(@(x)function_1_5_3(x,Z),x0) 


function f=function_1_5_3(x,Z) 

r0=.02;%interest rate 
sigma=.15;%vatality rate of risky asset 
mu0=.06;%drift rate of risky asset 
gamma=5;%risk aversion rate 
M=10000;%number of trajectories 
N=55;%time period 
T=55;%total time period 
R=40;%time of retirement 
dt=T/N;%each time period 
t=1:dt:T; 
omega=x; 
Rf=exp(r0);%riskless reture 
mat=rand(M,N); 

Rs=exp(mu0+sigma*Z);%risky market return 
a=20*mat(:,N-2); 
a_1=20*mat(:,N-1); 

W=((a.*(Rf+omega*(Rs-Rf))-a_1).^(-gamma)).*(Rs-Rf);%regard as function 4 

f=mean(W); 
+0

什麼是function_1_5_3? –

+0

你需要一個fsolve的純函數。 –

回答

1

有什麼問題呢?

當執行優化(即找到值A以使function_1_5_3變得非常小)時,您需要定義您認爲的最佳解決方案。在參數被eps修改以改進解決方案的一點點時,等待幾天毫無意義。

有幾種常見的啓發式方法來確定「足夠好」的解決方案,例如,如果x值不再變化很多,或者函數值不再變化很多。使用允許您使用optimset設置值的options參數fsolve,您可以選擇未知數中的公差(options.TolX)以及函數值(options.TolFun)中的公差,即「小」足以「認爲功能已經收斂。

對於您的情況,函數值的公差和x值的公差都滿足優化。兩者都應該同時發生,這有些令人驚訝。如果結果不是最佳的,您應該檢查是否應該修改公差,您是否在公式中犯了錯誤,或者您是否意思是當你寫fsolvefminsearch