为什么相同的MATLAB代码使用不同的算法运行?

时间:2015-10-18 03:35:16

标签: algorithm matlab

我使用MATLAB分析一个简单的fminunc代码,我发现当我再次分析代码时,分析器会显示不同的算法。 为什么? 代码如下。

clear;
clc;
alpha = 2;
beta = 2;
nobs = 100;
start = [1;1;1];
options = optimoptions('fminunc','GradObj','off','Algorithm','quasi-newton','Display','off');
x = random('unif',1,10,nobs,1);
u = random('norm',0,4,nobs,1);
y = alpha + beta * x + u;

lnL = @(para) (1/2) * nobs * log(2 * pi) +...
    (1/2) * nobs * log(para(3))+...
    (1/2) * (para(3))^(-1) * sum((y - para(1) - x * para(2)).^2);

para_hat = fminunc(lnL,start,options);

剖析器的图像如下所示。

enter image description here enter image description here

1 个答案:

答案 0 :(得分:0)

x = random('unif',1,10,nobs,1);
u = random('norm',0,4,nobs,1);

这意味着代码会在每次运行时选择随机nobs。当然,结果每次都会有所不同。