Monte Carlo - 随机游走模拟 - polyfit 对数日志数据点?

计算科学 matlab 蒙特卡洛 绘图 随机抽样 信息论
2021-12-11 15:43:56

这是 matlab 中用于随机游走模拟的代码的一部分。

  • 为了测试代码,我使用 steps=[30]; 会有更多的值,但我想运行 1 次试用以减少代码处理。
  • log_steps = log(1:steps);<--- 对应于绘图 x 轴的日志(步数向量)
  • log_AVG = log(d_AVG);<---- 对应于绘图 y 轴的日志(平均步长)

预期的方法 d~sqrt(N) 找到模型的 p 值

来证明p表示任何一步(向前||向后)的概率为 0.5

问题:程序的 p 值估计值比应有的值大 10 倍。它给出的 p 值介于 4 到 5 之间,此时 p 应该约为 0.5。

逻辑错在哪里?相关代码如下。

    figure(i+10);
    hold on;
    loglog(log_steps, log_AVG,'-s');
    %loglog(1:steps(i), d_AVG, '-s');

    N=log_steps;
    c= log_AVG;



    p = polyfit(N, c,0);
    f = (c.* (N.^p));
    hold on;
    loglog(N, f);
    hold off;
    end;

“双曲线” <--- 没有 polyfit 尝试的 30 步随机游走的对数图

“直线水平线”<--仅随机游走点的对数图

1个回答

如果我正确理解了第一张图片,你应该做一个线性拟合ln(N)是自变量,并且,大概,ln(d)因变量。

此外,在我看来,在您使用的代码中c作为log(dAVG),这与第一张图像不同,其中c似乎是一个常数。

(我没有给出完整的答案,因为在我看来这是一个家庭作业问题。)