公告:本站正式转型为非交互式静态网站!
转型:本站将通过笔记和博客的形式继续为大家服务,关于 Mathematica 问答服务请移步至QQ群:365716997
联系:如有问题请联系QQ群管理员,或发送邮件至:lixuan.xyz@qq.com。
感谢:最后非常感谢大家多年来的支持与帮助!
参考《互联网跟帖评论服务管理规定》《中华人民共和国网络安全法》《网络信息内容生态治理规定》《互联网用户账号信息管理规定》

—— 2022-11-27

欢迎来到 Mathematica 问答社区

提问时请贴上文本代码

语法高亮:在编辑器中点击

被禁止的话题:广告破解

请阅读:《提问的智慧》

备用域名:mma.ooo

支持LaTex数学公式
行内公式标识符:\$ 或“$\backslash ($”+“$\backslash )$”,
行间公式标识符:\$\$ 或 “$\backslash [$”+“$\backslash ]$”

社区建议QQ群:365716997

分类

0 投票
3.7k 浏览

我仔细检查了方程,发现没有未定义的参量,为什么会有非数值量呢?

方程是污染物在X—Z平面上的扩散模型

A = 1000;     (*x方向边界*)
H = 20;          (*天顶高度*)
z0 = 0.1;      (*边界层高度*)
u0 = 0.6;   (*风速*)
Kxx = 10;   (*x方向扩散系数*)
\[Mu][z_] := (1 - 22 z/L)^(1/4)
\[Mu]0 = \[Mu][z0];
k = 0.4;    (*冯\[CenterDot]卡门常数*)
L = -70;   (*Monin\[Dash]Obukov length*)

U[z_] := u0/
    k (Log[z/z0] + 
      Log[((1 + \[Mu]0^2) (1 + \[Mu]0)^2)/((1 + \[Mu][
            z]^2) (1 + \[Mu][z])^2)]) + 
   u0/k (2 ( ArcTan[\[Mu][z]] - ArcTan[\[Mu]0]) + (2 L)/(
       33 H) (\[Mu][z]^3 - \[Mu]0^3));
Kzz[z_] := k u0 z (1 - z/H) Power[(1 - 22 z/L), 1/4]


NDSolve[{D[c[x, z, t], t] + U[z] D[c[x, z, t], x] == 
   Kxx D[c[x, z, t], {x, 2}] + D[Kzz[z] D[c[x, z, t], z], z] + 300, 
  c[0, z, t] == 0, c[A, z, t] == 0, c[x, 0, t] == 0, c[x, H, t] == 0, 
  c[x, z, 0] == 0}, c, {x, 0, A}, {z, 0, H}, {t, 0, 30}]

返回的是:NDSolve::ndnum: 在 t == 0.` 处碰到一个导数的非数值量. >>

分类:方程 | 用户: 找找看 (31 分)

2 个回答

+1 投票
 
已采纳

方程可能存在问题。方程中存在Log[z],其中z可以取到0,Log[0.]=Indeterminate。

NDSolve[{y'[x] == Log[x], y[0] == 1}, y, {x, 0, 30}]
NDSolve[{y'[x] == Log[x], y[1] == 1}, y, {x, 1, 30}]

上述代码第一个是会报错的,第二个就没问题。

用户: 苹果 (2.2k 分)
采纳于 用户:找找看
+1 投票
sol = NDSolveValue[{D[c[x, z, t], t] + U[z] D[c[x, z, t], x] == 
    Kxx D[c[x, z, t], {x, 2}] + D[Kzz[z] D[c[x, z, t], z], z] + 300, 
   c[0, z, t] == 0, c[A, z, t] == 0, c[x, $MachineEpsilon, t] == 0, 
   c[x, H, t] == 0, c[x, z, 0] == 0}, 
  c, {x, 0, A}, {z, $MachineEpsilon, H}, {t, 0, 30}]

Manipulate[
 Plot3D[sol[x, z, ti], {x, 0, A}, {z, $MachineEpsilon, H}], {ti, 0, 
  30, 1}]

用户: pfg (506 分)
...