我想在数字上找到
的解决方案 方形上的 u_t - u_xx - u_yy = f
y∈[0,1],x∈[0,1]
其中,如果在单位圆中f = 1,否则f = 0。所有四条边上的边界条件都是u = 0.
我一直试图使用ND-solve很长时间但我不断收到错误消息。我是Mathematica的新手所以我不知道在ND-Solve之前如何定义f。
提前谢谢。
答案 0 :(得分:1)
对于像这样的东西,Mathematica帮助文件非常完整。我要去reference the online version,但请注意,在Mathematica的帮助浏览器中,您可以以交互方式修改和评估帮助示例。这是我学习Mathematica的唯一方法。
在开始尝试更多事情之前的一点:在打算制作比较语句时,很容易定义一个函数,例如 u 或 f 。从这里解决潜在的挥之不去的问题的一种可靠但有些懒惰的方法是退出当前内核然后再次评估一些内容。退出内核会丢失您可能意外定义的所有符号。 (启动一个新的内核也是Mathematica在你第一次进行任何操作时稍微搅动的原因,即使它是简单的添加。)
继续讨论手头的问题......在上面链接的参考文献中,给出了一个样本,它解决了与你的例子非常相似的一维热方程。让我们从那开始并修改它:
NDSolve[{D[u[t, x], t] == D[u[t, x], x, x], u[0, x] == Q0,
u[t, 0] == Sin[t], u[t, 5] == 0},
u, {t, 0, 10}, {x, 0, 5}]
他们的方程∂u t =∂u xx ,初始能量的边界条件为 Q0 在时间0∀x, x = 0 的能量 sin(t), x = 5 的能量为0 ∀t。您可以在上面看到这些地图如何有希望。现在,让我们尝试相同的条款:
NDSolve[{D[u[t, x, y], t] - D[u[t, x, y], x, x] - D[u[t, x, y], y, y] == f[x, y],
f[x,y] == If[x^2 + y^2 < 1, 1, 0],
u[t, 0, y] == 0, u[t, 1, y] == 0,
u[t, x, 0] == 0, u[t, y, 1] == 0 }
u, {x, 0, 1}, {y, 0, 1}]
我认为这是正确的。但是,这里至少存在一个问题。 t 仍然是一个自由变量。你没有提供任何方程来约束它,所以系统没有明确规定。