У меня есть файл функции:
function dxdt=function3009(t,x)
% Initialize model vector with zeroes,
dxdt=zeros(5,1);
% Parameters
%% Rate values with many decimal places causing error:
%k1= 1*10^-6; % k1*alac*lacI -> LacI-alac
%k2 = 1*10^-13; % k3*lacI*gop -> LacI-g_op
%% Script runs fine with these instead
k1= 10; % k1*alac*lacI -> LacI-alac
k2 = 10; % k2*lacI*gop -> LacI-g_op
% Differential Equations:
% d[E]/dt
dxdt(1)= - k1*x(1)*x(3) + (k1^-1)*x(2);
% d[ER]/dt
dxdt(2)= k1*x(1)*x(3) - (k1^-1)*x(2);
% d[R]/dt
dxdt(3)= - k1*x(1)*x(3) + (k1^-1)*x(2) - k2*x(3)*x(4) + (k2^-1) * x(5);
% d[O]/dt
dxdt(4)= - k2*x(3)*x(4) + (k2^-1) * x(5);
% d[OR]/dt
dxdt(5)= k2*x(3)*x(4) - (k2^-1) * x(5);
%%%%%%%%%%%%%%%%%%%%%%%%%%%
и мой файл сценария:
% Settings
options = odeset('InitialStep',0.1,'MaxStep',0.1);
t_range= [0 10];
%% many decimal points, causes error:
%x_ini= [1*10^-4 0 2*10^-8 0 8.47*10^-12];
%% Runs fine without decimal places:
x_ini= [100 0 10 0 1];
% Simulation
[t,x]=ode45(@function3009,t_range,x_ini,options);
% Plot time series of all variables
subplot(1,3,1);
plot(t,x(:,4:5)); %plot gop and lac:gop
xlabel('Time');
ylabel('Concentration');
title('gop and LacI:gop');
legend('gop', 'lacI:gop');
subplot(1,3,2);
plot(t,x(:,2:3)); %plot lac and lac:alac
xlabel('Time');
ylabel('Concentration');
title('lacI and alac:LacI');
legend('alac:LacI','LacI');
subplot(1,3,3);
plot(t,x(:,1)); %plot alac
xlabel('Time');
ylabel('Concentration');
title('Alac');
Когда я запускаю ODE45 с числами со многими десятичными разрядами и целыми числами, я получаюэта ошибка:
Ошибка при использовании массива horzcat Requested 5x212292600 (7,9 ГБ) превышает максимальный размер массива. Создание массивов, превышающих этот предел, может занять много времени и привести к тому, что MATLAB перестанет отвечать на запросы. См. Ограничение размера массива или панель настроек для получения дополнительной информации.
У меня есть 5 DEG, диапазон времени 10 с шагом 0,1 (следовательно, 100 всего), поэтому, конечно, общий размер массива должен быть 500 независимо от входных значений? Почему использование входных значений с большим количеством десятичных знаков увеличивает размер массива?
Спасибо за любую помощь / совет!