微分方程is not easily solved analytically的这种非线性系统。您可以尝试Mathematica如果有的话(它往往是在符号数学比MATLAB的MuPad越好):
DSolve[{a'(t) = -k*d(t)*a(t)*b(t)^2, b'(t) = -k*f(t)*b(t)*c(t)^2, c'(t) = k*d(t)*a(t)*b(t)^2 - k*e(t)*a(t)*d(t), d'(t) = k*d(t)*a(t)*b(t)^2, e'(t) = -k*e(t)*a(t)*d(t), f(t) = k*f(t)*b(t)*c(t)^2}, {a(t),b(t),c(t),d(t),e(t),f(t)}, t]
(我不能对此进行测试,因为输入过长的Wolfram|Alpha免费版本:)
不管怎么说,这是很容易做到数字它MATLAB:
function top
%// Initial values (random for this example)
y0 = 125*randn(6,1);
%// Time span to simulate
tspan = [0 +1];
%// Solve system numerically
[t,y] = ode45(@deriv, tspan, y0);
%// Make a nice plot
plot(t,y)
xlabel('t'), ylabel('function values')
legend('a(t)', 'b(t)', 'c(t)', 'd(t)', 'e(t)', 'f(t)')
end
function dydt = deriv(~,y)
%// Set the value for your 'k'
k = 1e-4;
%// rename the variables for clarity
[a,b,c,d,e,f] = deal(y(1),y(2),y(3),y(4),y(5),y(6));
%// Compute the derivative
dydt = k * [
-d*a*b^2
-f*b*c^2
+a*(d*b^2 - e*d)
+d*a*b^2
-e*a*d
+f*b*c^2
];
end
其中funkier解决方案,我用这个得了的:
出于好奇:做这些方程描述?我想说的经历化学反应物质的浓度,但它会是非常奇怪的(对于一些初始值,你会发现负浓度,奇异等,东西你只是不会在这些系统中期望,所以...我的好奇心被触发:)
...你为什么感到惊讶?你有一些关于微分方程的类吗? –
我假设'kd','kf'等是指'k * d'和'k * f'? –
对不起,他们只是常数... kd = .25; ke = .1; kf = 5,我正在与化学rxn和率法律... – Prefoninsane