2014-03-27 44 views
0
syms a(t) b(t) c(t) d(t) e(t) f(t) 

S = dsolve(
     diff(a) == -kd*a*b^2, ... 
     diff(b) == -kf*b*c^2, ... 
     diff(c) == kd*a*b^2 - ke*a*d, ... 
     diff(d) == kd*a*b^2, ... 
     diff(e) == -ke*a*d, ... 
     diff(f) == kf*b*c^2) 

它返回此错误:为什么此系统解算器无法正常工作?

Warning: Explicit solution could not be found. 
> In dsolve at 194 
    In hw8 at 14 

S =  
    [ empty sym ] 
+1

...你为什么感到惊讶?你有一些关于微分方程的类吗? –

+0

我假设'kd','kf'等是指'k * d'和'k * f'? –

+0

对不起,他们只是常数... kd = .25; ke = .1; kf = 5,我正在与化学rxn和率法律... – Prefoninsane

回答

4

微分方程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解决方案,我用这个得了的:

enter image description here

出于好奇:做这些方程描述?我想说的经历化学反应物质的浓度,但它会是非常奇怪的(对于一些初始值,你会发现浓度,奇异等,东西你只是不会在这些系统中期望,所以...我的好奇心被触发:)

+0

谢谢Rody!对不起,我没有提供更多信息,它是经历多个rxns的不同物种的浓度: A + 2B→C + D; 2D + 3A→C + E; B + 2C→D + F; 已知: RD = kdCaCb^2 重新= keCaCd RF = kfCbCc^2 和 KD = 0.25; ke = .1; kf = 5; v0 = 10; ca0 = 1.5; cb0 = 2.0; 让我知道这是否改变了什么? – Prefoninsane