1

我用 fsolve 解决了一个函数,但结果显示

优化终止:X 的相对变化范数小于 max(options.TolX^2,eps) 并且函数值的平方和小于 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);
4

1 回答 1

1

有问题吗?

执行优化时(即找到值 A 以使 function_1_5_3 变得非常小),您需要定义您认为好的解决方案。等待几天来修改参数eps以勉强解决解决方案的一点点改进是没有意义的。

有几种常见的启发式方法可以确定“足够好”的解决方案,例如,如果 x 值不再发生太大变化,或者函数值不再发生太大变化。使用 的options参数fsolve,它允许您使用 设置值optimset,您可以选择未知数 ( options.TolX) 中的容差,以及函数值 ( options.TolFun) 中的容差,即“足够小”的变化量可以考虑函数已经收敛。

在您的情况下,函数值的公差和 x 值的公差都满足优化。两者同时发生有点令人惊讶。如果结果不是最佳的,您应该检查是否应该修改容差,是否在公式中犯了错误,或者您是否fminsearch在编写时的意思fsolve

于 2012-06-23T02:20:41.767 回答