MATLAB程序占用了越来越多的内存

时间:2010-12-18 16:10:00

标签: matlab

我将在MATLAB中编写一个程序,它接受一个函数,将值D从10设置为100(for循环),将函数与Simpson规则(while循环)集成,然后显示它。现在,这适用于前7-8个值,但是它需要更长的时间,最终我的内存耗尽,我不明白这个的原因。这是到目前为止的代码:

global D;
s=200;  
tolerance = 9*10^(-5);  
for D=10:1:100  
    r = Simpson(@f,0,D,s);  
    error = 1;  
    while(error>tolerance)  
        s = 2*s;  
        error = (1/15)*(Simpson(@f,0,D,s)-r);  
        r = Simpson(@f,0,D,s);  
    end  
    clear error;  
    disp(r)  
end  

1 个答案:

答案 0 :(得分:2)

mtrw's评论可能已经部分回答了问题:s应该在for循环中重新初始化。每次错误过大时,发布的代码都会导致s不可逆转地增加,因此对于D较大的值最大 s 到目前为止< / em>将被使用。

此外,由于代码重新评估整个集成而不是重用[0,D-1]中的先前集成,因此除非要明确显示Simpson函数的容错,否则会浪费大量资源 - s必须为大D增加很多才能保持相同的低误差(因为你整合了更大的范围,你必须总结更多的点数。)

最后,你Simpson的实现当然可以做一些有趣的事情,没有人看到它就没人知道......