首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matlab fsolve优化终止

Matlab fsolve优化终止
EN

Stack Overflow用户
提问于 2012-06-23 08:10:55
回答 1查看 1.7K关注 0票数 1

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

优化终止:X的相对变化范数小于max(options.TolX^2,eps),函数值的平方和小于sqrt(options.TolFun)。

A= 0.3490

有人知道怎么解决这个问题吗?谢谢!

我的代码如下

代码语言:javascript
复制
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);
EN

回答 1

Stack Overflow用户

发布于 2012-06-23 10:20:42

有什么问题吗?

在执行优化时(例如,找到值A以便function_1_5_3变得非常小),您需要定义您认为好的解决方案。等待几天是没有意义的,因为eps会修改参数,以勉强维持解决方案中的一小部分改进。

有几种常见的启发式方法可以识别“足够好”的解决方案,例如,如果x值不再有很大变化,或者如果函数值不再有很大变化。使用fsolveoptions参数可以使用optimset设置值,您可以选择未知数中的公差(options.TolX)以及函数值中的公差(options.TolFun),即“足够小”以认为函数已收敛的变化量。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11165655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档