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

—— 2022-11-27

欢迎来到 Mathematica 问答社区

提问时请贴上文本代码

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

被禁止的话题:广告破解

请阅读:《提问的智慧》

备用域名:mma.ooo

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

社区建议QQ群:365716997

分类

+2 投票
2.2k 浏览
NDSolve[{D[u[t, x], t] + Cos[u[t, x]^3 t] +10 D[u[t, x], x, x]^3 == -Sin[10 t] + p[t], NIntegrate[u[t, x], {x, 0, 1}] == 0.1 Sin[t], u[0, x] == 0,u[t,0]==u[t,1]==0,p[0] == 0}, {u, p}, {t, 0, 1}, {x, 0,1}]

 

u是x和t的函数

p只是t的函数

这个问题的来源于一个传热问题的反问题,原问题是三维的,为了简化问题,我在这里展示了一个简单的一维问题。

分类:方程 | 用户: pfg (506 分)
修改于 用户:pfg
-1,这方程里至少有两处错误,1. Derivative[2] u[t, x] 2. 有两个未知函数但除掉限制条件只有一个方程。这个问题并不容易,但它不是你提问时不上心的理由。
非常感谢关注和批评。
1. ux的初值的代码写错了,已经更改。这个错误我承认。
2. 但这个问题是完备的:两个方程 微分方程+积分方程,两个未知数u(x,t)和p(t)。这个问题的1维原版我已经求解出来,上面给出的这个要比原版简单。这一点正是这个问题的难解之处,特别是微分方程中的p(t)并没有出现在积分方程中。
3. 其实,我想要的是这个问题的有限元解法,然后扩展到2D不规则域上。为了明确起见,我在题目里加了这点。
……嗯,仔细一看发现是封闭的。<s>当然我可以耍赖说之前那个错误的边界对我造成了干扰。</s>然后,如果你是因为不想编程了所以才想要试试Mathematica的有限元的话,那么,放弃吧。一来"FiniteElement"方法现在还不能支持非线性方程(用低层FEM函数也许可以,但这也是编程),二来积分微分方程本来就是个坑。有没有软件在这方面有直接支持我也不清楚,但我并不十分期待。
嗯,在stackexchange经常看到您的大名,也知道您是求解微分方程的专家。
直接求解是不支持非线性,所以我才想用底层一点FEM功能来做。
我记得stackexchange上有人用mathematica的FEM求解了非线性的navier-stokes方程。

正如您所说:“(用低层FEM函数也许可以,但这也是编程)”,这就是我想要的,这种编程是我想要的,而不是自己从划分网格,weak form,刚度组装开始。不是不喜欢编程,是不喜欢重复再造轮子。

问题中也附上了上面所提问题的编程结果,供参考。

2 个回答

0 投票
这个比较麻烦,如果只是一维问题的话,编程还是可以的。
用户: xinxin-guo (41 分)
谢谢
是的,1D的我已经实现了,用matlab 有限差分做的。
我想知道怎么用mathematica内置的函数如底层一点的FEM来做。
其实,我还是懒得再编程了   :(
0 投票
嗯,用mathematica做这个我不了解,但用comsol可以试试。

 

mathematica中引入了有限元,不知能否用来解决这个问题。

 

不好意思,不是回答,只是建议。
用户: hitvip (21 分)
谢谢,有空我去了解下cosmol
...