将变量的值代入符号方程(ODE)

时间:2016-07-25 13:43:49

标签: matlab symbolic-math

我定义了以下变量

syms  DOSE TIME KA K V ETA1 THETA1 ETA2 THETA2 ETA3 THETA3 ;

在求解微分方程后,我得到了一些符号表达式,其中一个如下所示。

F= -(DOSE*KA*(exp(-K*TIME) - exp(-KA*TIME)))/(V*(K - KA));

我想替换K,KA,DOSE等的值来找到F的数值。我尝试了以下代码来替换变量的值。

1)我定义了所有变量

TIMEt = Data(:,2);

THETAa=THETA(1);
THETAb=THETA(2);
THETAc=THETA(3);

ETAa=ETA(1);
ETAb=ETA(2);
ETAc=ETA(3);

KA1 = THETA(1)*exp(ETA(1));
V1 = THETA(2)*exp(ETA(2));
K1 = THETA(3)*exp(ETA(3));

2)我用子函数替换了这些变量。

subs(F,[DOSE, KA, V, K, TIME], [320, KA1,V1,K1, TIMEt]);

我也尝试使用eval函数,但subs和eval函数都不起作用(输出仍然是符号表达式)。

非常感谢任何关于我做错了什么或任何替代方法的建议。

由于

1 个答案:

答案 0 :(得分:0)

它为我工作:

我尝试了以下代码示例:

syms  DOSE TIME KA K V ETA1 THETA1 ETA2 THETA2 ETA3 THETA3 ;
F= -(DOSE*KA*(exp(-K*TIME) - exp(-KA*TIME)))/(V*(K - KA));

TIMEt = 1;

THETAa=2;
THETAb=3;
THETAc=4;

ETAa=5;
ETAb=6;
ETAc=7;

KA1 = 8;
V1 = 9;
K1 = 10;

eval(subs(F,[DOSE, KA, V, K, TIME], [320, KA1,V1,K1, TIMEt]))

以下表达式subs(F,[DOSE, KA, V, K, TIME], [320, KA1,V1,K1, TIMEt])结果为:(1280*exp(-8))/9 - (1280*exp(-10))/9

应用eval时:eval('(1280*exp(-8))/9 - (1280*exp(-10))/9')评估为0.0413

可能只有;会阻止您查看结果。