matlab中错误使用fmincon,fmincon中的错误Matlab

该博客内容涉及使用MATLAB的fmincon函数来优化GARCH模型的参数。作者遇到问题,函数调用时出现错误,提示输入参数过多。GARCH模型用于估计金融时间序列的波动性,代码中定义了LLF、LL和H矩阵,并尝试通过fmincon进行最小化求解。错误可能源于目标函数garchlike的输入参数配置不正确或边界条件设置不妥。
摘要由CSDN通过智能技术生成

`

function [LLF, LL, H ] = garchlike(data)

p=1;

q=1;

if isempty(q)

m=p;

else

m = max(p,q);

end

%this are the parameters

psi=[0.01;0.01];

gamma=[0;0.02;0.02;0];

lambda=[0;0.03;0.03;0];

A=[1;-0.04;-0.03;1];

stdestimate = std(data,1);

data = [stdestimate ; data];

T = size(data,1);

B=(reshape(A,2,2))^-1;

%I am squaring each element of the inverse of A

B2=((reshape(A,2,2))^-1).^2;

%getting the Bl matrix(squared interactions)

Bl=[B2(1,:);B(1,:).*B(2,:);B2(2,:)];

garchc=Bl*psi;

garcha=Bl*(reshape(gamma,2,2))*reshape(A.^2,2,2);

garchb= Bl*(reshape(lambda,2,2))*reshape(A.^2,2,2);

H(1,1).day=[0.001; 0; 0; 0.002; ];

%convert to matrix

H(1,1).day=ivech(H(1,1).day);

for t = (m + 1):T

H(1,t).day= ivech(garchc + garcha*(diag(H(1,t-1).day))+ garchb*(data((t-1),:).^2)');

end

% Getting the loglikelihood

LLF=zeros(1,T);

%the loklikelihood

for t = (m + 2):T

LLF(t)= log(det(H(1,t).day))+ data(t,:)/(H(1,t).day)*data(t,:)';

end

t=(m+2):T;

LLF=-LLF(t);

LL=sum(LLF);

`

我有这个功能,并尝试最小化使用fmincon:

` [parameters,LLF,EXITFLAG, OUTPUT,HESSIAN] = fmincon('garchlike', [psi;gamma;lambda;A],sumA ,sumB ,[] , [] , LB , UB,[],options, data, p , q);`

我不知道为什么不工作并给我一个错误:“使用garchlike错误使用garchlike太多输入参数.fmincon中的错误(第631行)initVals.f = feval(funfcn {3},X,varargin {: });引起:初始用户提供的目标函数评估失败.FMINCON无法继续 . “

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用fmincon工具箱进行优化的基本步骤如下: 1. 确定需要优化的目标函数和约束条件,并将其表示为matlab函数,例如: ```matlab function [f,g] = myfun(x) f = x(1)^2 + x(2)^2; g = [x(1) + x(2) - 1, x(1) - x(2) + 2]; end ``` 其,f是目标函数的值,g是约束条件的值。在此例,目标函数是x1^2 + x2^2,约束条件是x1 + x2 ≤ 1和x1 - x2 ≥ -2。 2. 设置优化问题的初始解和其他参数,例如: ```matlab x0 = [1,1]; % 初始解 lb = [0,0]; % 变量下限 ub = [inf,inf]; % 变量上限 A = []; % 线性约束矩阵 b = []; % 线性约束向量 Aeq = []; % 等式约束矩阵 beq = []; % 等式约束向量 options = optimoptions('fmincon','Display','iter'); % 设置优化参数 ``` 其,x0是初始解,lb和ub是变量的下限和上限,A和b是线性约束条件,Aeq和beq是等式约束条件,options是优化参数,这里设置为显示每次迭代的优化信息。 3. 调用fmincon函数进行优化,例如: ```matlab [x,fval] = fmincon(@myfun,x0,A,b,Aeq,beq,lb,ub,[],options); ``` 其,@myfun表示目标函数和约束条件所在的函数句柄,x是优化得到的最优解,fval是目标函数在最优解处的值。 完整的代码如下: ```matlab function [x,fval] = myoptim() x0 = [1,1]; % 初始解 lb = [0,0]; % 变量下限 ub = [inf,inf]; % 变量上限 A = []; % 线性约束矩阵 b = []; % 线性约束向量 Aeq = []; % 等式约束矩阵 beq = []; % 等式约束向量 options = optimoptions('fmincon','Display','iter'); % 设置优化参数 [x,fval] = fmincon(@myfun,x0,A,b,Aeq,beq,lb,ub,[],options); % 进行优化 end function [f,g] = myfun(x) f = x(1)^2 + x(2)^2; % 目标函数 g = [x(1) + x(2) - 1, x(1) - x(2) + 2]; % 约束条件 end ``` 在matlab命令窗口运行myoptim函数即可得到优化结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值