- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在练习考试中有以下问题:
我需要用MATLAB来解决。问题是,我以前从未见过这样的问题,而且我正在努力入门。
我有我的 1x1 网格,分成 10x10。我知道我可以使用 1/10 * x*2 计算除角落之外的整个底行。我也知道我可以使用 (1/10)(1+t)^2 计算整个右行。但是,我无法弄清楚如何获得足够的点数来填充整个网格的值。我知道它一定与问题中给出的偏导数有关,但我不太确定它们在哪里发挥作用(尤其是 u_x 方程)。有人可以帮我从这里开始吗?
我不需要整个解决方案。一旦我有了足够的分数,我就可以轻松地编写一个 matlab 程序来解决剩下的问题。真的,我想我只需要解决 x=0 轴,然后我只需要填充网格的中间部分。
我已经计算出底行减去两个角后为 0.001、0.004、0.009、0.016、0.025、0.036、0.049、0.064、0.081。同样,使用给定的边界条件计算整个右行是微不足道的。我只是想不出从那里去哪里。
编辑:第三个边界条件方程输入错误。它应该是:
u_x(0,t) = 1/5t,不是 u(0,t) = 1/5t
最佳答案
首先意识到你要求解的方程是线性波动方程,你给出的数值方案可以重写为
( u^(n+1)_m - 2u^n_m + u^(n-1)_m )/k^2 = ( u^n_(m-1) - 2u^n_m + u^n_(m+1) )/h^2
哪里k
是时间步并且h
是 delta x
在太空。
重新制定的数值方案清楚地表明,左侧和右侧是 u_tt
的二阶中心有限差分近似值。和 u_xx
分别。
但是,要用数字方式解决问题,您需要使用给定的形式,因为它是您需要用数字方式实现的显式更新公式:它在时间 n+1
为您提供解决方案。作为前两次的函数n
和 n-1
.您需要从初始条件开始,及时推进解决方案。
观察到在域(x=0
和 x=1
)的边界上分配的解决方案,因此离散化解决方案的值 u^(n)_0
和 u^(n)_10
已知任何n
(t=n*k
)。在 n
您未知的第 th 时间步是矢量 [u^(n+1)_1, u^(n+1)_2, ..., u^(n+1)_9]
.
还要注意使用更新公式在 n+1
处找到解决方案步骤,需要了解前面两个 步的解决方案。那么,你如何从n=0
开始呢?如果您需要以前两次 的信息?这是初始条件发挥作用的地方。您可以在 n=0
找到解决方案( t=0
),但你也有 u_t
在t=0
.这两条信息结合起来可以给你两个u^0
和 u^1
让你开始。
我会使用以下启动方案:
u^0_m = u(h*m,0) // initial condition on u
(u^2_m - u^0_m)/(2k) = u_t(h*m,0) // initial condition on u_t
与 n=1
使用的数字方案相结合为您提供为 u^1_m
定义线性系统所需的一切和 u^2_m
对于 m=1,...,9
.
总结:
--使用启动方案在n=1
处求解和 n=2
同时。
--从那里开始使用给定的数字方案及时行进。
如果您完全迷失了方向,请查看以下内容:有限差分格式、平流方程的有限差分格式、双曲方程的有限差分格式、时间推进。
编辑:
对于 u_x
上的边界条件您通常使用ghost cell 方法:
在 m=-1
引入一个幽灵细胞,即用于处理边界条件但不是解决方案的一部分的虚拟(或辅助)网格点。
第一个节点m=0
回到你的未知向量,即你现在正在使用 [u_0 u_1 ... u_9]
.
使用左侧边界条件关闭系统。具体来说,通过写下边界条件的中心近似值
u^n_(1) - u^n_(-1) = 2*h*u_x(0,k*n)
上面的等式允许您用内部真实节点上的解决方案来表达幽灵节点上的解决方案。因此,您可以将时间推进数字方案(给定的方案)应用于 m=0
节点。 (应用于 m=0
的数值方案将包含来自 m=-1
幽灵节点的贡献,但现在您可以用 m=1
节点表示。)
关于algorithm - 如何使用 MATLAB 求解此 PDE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29813762/
我目前正在尝试通过实现非标准边界条件来求解 FEniCS 中的 Monge-Ampere 方程。 边界条件,要求解的梯度必须将原域的边界映射到另一个规定的域。 当目标域被规定为单位圆时,实现起来非常简
关于 Eclipse PDE 开发的问题:我为 Eclipse 编写了一个小插件,并具有以下内容 * 一个 org.eclipse.ui.texteditor.ITextEditor * 行号 如何自
我正在尝试使用 FiPy 解决非线性 PDE HJB 方程,但是我在将 PDE 转换为正确的 FiPy 语法时遇到了一些困难: 我试过类似的东西: eqX = TransientTerm() == -
关于Eclipse PDE开发的问题:我为Eclipse写了一个小插件,有以下内容* 一个org.eclipse.ui.texteditor.ITextEditor* 行号 如何自动跳转到该行并标记它
(注意 - 最终解决方案如下) 在我的插件中,我试图创建一个 IJavaProject (使用 Eclipse JDT,代码在最后),它创建一个 Java 项目,几乎完全就像 IJavaProject
我对 Processing 还是比较陌生。我们正在考虑在一个小型展览中循环展示我们的处理工作。有没有办法循环播放多个 PDE?我知道我可以导出为帧,然后将它们组合成更长的可循环播放的 Quicktim
我目前正在尝试让我的 headless (headless) pde-build 工作,但我被困在一个我不知道如何继续的地方。 问题是如何定义相关的目标平台来编译插件。 我有一个带有以下调用的 bui
当您使用 Eclipse PDE(插件开发环境)时,有一个术语“目标平台”。这究竟是什么意思? 最佳答案 目标平台指定您正在为其开发插件的 Eclipse 配置。这是由可用的插件和功能集定义的。它默认
在寻找巴恩斯利蕨分形的实现时,我遇到了一个具有 .pde 扩展名的实现。哪种编程语言使用此扩展? Implementation Page 最佳答案 此代码来自Processing.org,一个基于Ja
在 PDE 项目中,有没有办法从文件系统添加第三方包作为我的项目的依赖项?我希望做 BND 工具允许的相同事情;将一个包添加到本地存储库,然后从该包中导入项目中的包。我不想使用 maven osgi
我有以下基于 ARM 的 SoC 的规范: L1 数据缓存 = 32 KB、64 B/行、2 路、LRU L2 缓存 = 1 MB、64 B/行、16 路 L1 数据 TLB(用于加载):32 个条目
我为 Eclipse 创建了一个 View 插件。我可以从项目中导出 jar,并且运行得很好。我正在尝试创建一个 Ant 构建脚本来自动化它。 我通过执行以下操作从 Eclipse 创建了两个 Ant
我已经安装了面向 Java 开发人员的 eclipse IDE(Helios Service Release 2) 我现在如何在此基础上安装插件开发环境 (PDE)?我认为应该可以从更新站点安装它,就
在 PDE 项目中,有没有办法从文件系统添加第三方包作为我的项目的依赖项?我希望做 BND 工具允许的相同事情;将一个包添加到本地存储库,然后从该包中导入项目中的包。我不想使用 maven osgi
所以我正在读这篇文章FAQ : 它提到了不可用的getLog()方法。我当前的类基本上是扩展AbstractHandler。我该如何使用这个? 最佳答案 如果您让 Eclipse 为您创建 Activ
我是一名学生,作为年度项目的一部分,我正在开发 eclipse 插件。 我遇到了一个奇怪的问题并尝试修复它 2 天: 我在 plugin.xml 中添加了 3 种新类型的标记。 我为每个标记添加了 a
我通过 PDE 创建了一个 Eclipse 插件。我可以通过将项目作为“eclipse 应用程序”运行来尝试该插件,到目前为止没有问题。但是,我想导出项目并收到此错误: C:\Users\ErayT\
我编写了一个函数,对二维列表中的数组元素求和并将它们添加到一维列表中: ArrayList sumList(ArrayList list,int side){ ArrayList sums
我对在相当大的 eclipse 工作区中升级依赖插件、功能和产品中的版本号的过程有很多困惑。 我对现有插件中的 Java 代码进行了 API 更改,因此需要增加版本标识符的主要部分。此插件用作给定功能
这是从 Numerical Computing-Kincaid 的书第 15 章修改的问题。(不是物理学) 如何正确实现边界条件?条件是 u(0,y,t) = u(x,0,t) = u(nx,y,t)
我是一名优秀的程序员,十分优秀!