我尝试解决基于ODE的模拟问题。 但是我内存不足的问题,有人可以帮我解决这个问题,有点暗示吗?
警告:矩阵接近单一或严重缩放。结果可能
不准确的。 RCOND = 1.453788e-16。 在207的ode23s 在77的tr_ode
警告:Matrix的工作精度非常高。 在207的ode23s 在77的tr_ode
内存不足。输入HELP MEMORY以获取选项。
odenumjac出错(第127行) ydel = y(:,ones(1,ny))+ diag(del);
ode23s出错(第224行) [dfdy,Joptions.fac,nF] = odenumjac(odeFcn,{t,y,odeArgs {:}},f0,Joptions);
tr_pdn_ode_matlab_v中的错误(第77行) [t,x] = ode23s(@ f,[0,sim_param.end_time],电压,选项);
矩阵稀疏且只有45784 * 45784
我的机器是64位和12GB内存。 MATLAB 2012b。
代码快照:
...
options = odeset('Mass', M); % M is a sparse matrix
[t,x] = ode45(@f, [0,end_time ], v, options);
% end_time = 10^-8 , v is init. condition for f.
...
function out = f( t , y)
out = -Gl *y ; % Gl is a sparse matrix
end
答案 0 :(得分:0)
这不是一个小矩阵。如果以非稀疏方式存储,则为16GB。 ODENUMJAC应该以不破坏稀疏存储的方式实现,但可能是某些小错误尝试以完整格式存储它。它也可能是存储得恰到好处,但比你意识到的要大得多。