Algorithm 为什么相同的MATLAB代码使用不同的算法运行?
我正在使用MATLAB分析一个简单的fminunc代码,我发现当我再次分析代码时,分析程序会显示不同的算法。 为什么? 代码如下Algorithm 为什么相同的MATLAB代码使用不同的算法运行?,algorithm,matlab,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
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);
profiler的图像如下所示
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);
这意味着代码将在每次运行时随机选择一个
nobs
。当然,每次的结果都不一样。hi,@rayryeng。我不太明白你说的话。你能详细解释一下吗?谢谢您!每次运行代码时,x
和u
都不同,因为您选择了随机函数。每次运行的时间都不同,这就是运行时间不同的原因。如果使x
和u
具有确定性(即每次运行代码时都相同),则运行时间将相对相同。