如何用带边界条件的符号函数求解暗、光场景的连续性方程

4次浏览(最近30天)
嘉兴刘
嘉兴刘 2021年7月15日
评论道: 嘉兴刘2021年7月16日
现在我在研究中遇到了一个问题。我在左边遇到了两个形式相同的ode,但一个是同质的,另一个是非同质的。
这是我的代码:
信谊V_T mu_p F r_mODE1的%常数
信谊N_v phi_3 phi_4 d_j%常数为边界条件
信谊p (x) G (x)% p为空穴密度,G(x)为生成速率
eqn = -V_T * mu_p *差异(p, x, 2) + F * mu_p *差异(p (x) + r_m * p = = 0;%的标志
P_dark = dsolve(eqn)%%否;所以表单是可读的
eqn = -V_T * mu_p *差异(p, x, 2) + F * mu_p *差异(p (x) + r_m * p = = G (x);%的标志
P_ph = dsolve(eqn)
P_ph_int = (P_ph,[350*10^-6 800*10^-6])%需要在波长区间内积分P_ph
P = P_dark+P_ph;
气孔导度= [p (0) = = N_v * exp (-phi_3 / V_T)、p (d_j) = = N_v * exp (-phi_4 / V_T)];
这就是问题所在。我知道如何处理只有P_ph或P_dark的边界。但是现在,边界条件是用于P, P_dark和P_ph的相加。我可以用待定常数求出解但我不能用边界条件求出这样的常数。
P = dsolve(P,cond)
错误信息是
没有发现微分方程。用符号函数指定微分方程。
T = feval(symengine,'symobj::dsolve',sys,x,options);
错误 dsolve 第194行
sol = mupadDsolve(参数,选项);

接受的答案

沃尔特·罗伯森
沃尔特·罗伯森 2021年7月16日
信谊V_T mu_p F r_mODE1的%常数
信谊N_v phi_3 phi_4 d_j%常数为边界条件
信谊p (x) G (x)% p为空穴密度,G(x)为生成速率
eqn = -V_T * mu_p *差异(p, x, 2) + F * mu_p *差异(p (x) + r_m * p = = 0;%方程式
P_dark(x) = dsolve(eqn)
P_dark (x) =
eqn = -V_T * mu_p *差异(p, x, 2) + F * mu_p *差异(p (x) + r_m * p - g (x) = = 0;%方程在光(你的建议)%标记
P_ph(x) = dsolve(eqn)
P_ph (x) =
new_vars = setdiff(symvar(P_ph(x)), symvar(eqn))
new_vars =
P_total(x) = P_dark+P_ph%应万博 尤文图斯用边界条件的解
P_total (x) =
eqn1 = P_total(0) == N_v * exp(-phi_3/V_T)%% x=0时P的边界条件
eqn1 =
eqn2 = P_total(d_j) == N_v * exp(-phi_4/V_T)P在x=d_j时的边界条件
eqn2 =
Eqns = [eqn1;eqn2]
命令=
symvar(命令)
ans =
S = solve(eqns, new_vars)
S =带字段的结构:
C1: [1×1 sym] C2: [1×1 sym]
struct2cell(S);
New_vars (:) == vertcat(temp{:})
ans =
1评论
嘉兴刘
嘉兴刘 2021年7月16日
你好沃尔特,
谢谢你的回答!你解决了我的问题。
我运行了你的代码。但我在结果中发现了一些差异。
你得到了同样的待定常数C_1 C_2在黑暗和光明的情况下。然而,对于这两种情况,我得到了不同的常数。我想是因为这两个方程的布局不同。应该有四个常数,比如C_3, C_4, C_5, C_6。
我的问题是
1.我想知道你对这个问题的原因有什么想法吗?
这是我在R2019a中运行您的代码的结果
P_dark (x) =
P_ph (x) =

登录评论。

更多答案(1)

Torsten
Torsten 2021年7月16日
P的方程是这样的
- v_t *mu_p*P'+ F*mu_p*P'+ r_m*P - G(x) = 0。
现在可以应用边界条件了。
3评论
嘉兴刘
嘉兴刘 2021年7月16日
嗨Torsten,
谢谢!
我用了你们的微分方程,我改变了积分的方法。因为积分可以在方程之前完成。这将使生活更容易。
我认为问题已经解决了,新的问题又来了。
信谊V_T mu_p F r_mODE1的%常数
信谊N_v phi_3 phi_4 d_j%常数为边界条件
信谊p (x) G (x)% p为空穴密度,G(x)为生成速率
eqn = -V_T * mu_p *差异(p, x, 2) + F * mu_p *差异(p (x) + r_m * p = = 0;%方程式
P_dark(x) = dsolve(eqn)
eqn = -V_T * mu_p *差异(p, x, 2) + F * mu_p *差异(p (x) + r_m * p - g (x) = = 0;%方程在光(你的建议)%标记
P_ph(x) = dsolve(eqn)
P_total(x) = P_dark+P_ph%应万博 尤文图斯用边界条件的解
eqn1 = P_total(0) == N_v * exp(-phi_3/V_T)%% x=0时P的边界条件
eqn2 = P_total(d_j) == N_v * exp(-phi_4/V_T)P在x=d_j时的边界条件
Eqns = [eqn1,eqn2]
S = solve(eqns)
这样做之后,代码就可以正常运行了。但是我不能得到我想要的待定常数。新问题来了 "如何用解函数求被减常数?"
杰森

登录评论。

标签

s manbetx 845


释放

R2019a

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!