解1 d parabolic-elliptic方程与一个初始条件
6视图(30天)
显示旧的评论
沙龙
2022年11月1日
你好,我是请求帮助解决一维偏微分方程组。我有两个equaitons,一个是抛物线,另一个是椭圆。但是我只有一个抛物型方程初始值。我试图使用pdepe解算器。然而,pdepe解算器要求初始条件的数量必须等于方程的数量。Matlab求解器可以解决这样的问题吗?
0评论
答案(1)
Torsten
2022年11月1日
编辑:Torsten
2022年11月1日
为椭圆pde提供任意初始条件——如果可能满足边界条件。
如果pdepe接受它,它不会影响整个解决方案的续集。
16条评论
沙龙
2022年11月2日
编辑:Torsten
2022年11月2日
嗨Torsten,
非常感谢你回答我的问题!我给椭圆方程的初始条件满足边界条件。但Matlab给出一个错误在t = 4.820300 e-01说“失败。无法满足集成公差没有减少步长低于最小值允许在时间t (8.881784 e-16)”。
clc
clc
h = 0.01;%的空间步长,
L = 1;
T = 10;
τ= 0.001;%的时间步长
M = L / h;
x = linspace (0, L, M + 1);
N = T /τ;
t = linspace (0, t, N + 1);
m = 0;
索尔= pdepe (m, @pdefun, @pdeic @pdebc x, t);
警告:在t = 6.785165 e-01失败。无法满足集成公差没有减少步长低于最小值允许在时间t (1.776357 e15汽油)。
警告:时间集成失败了。解决方案可用在t = 6.780000 e-01请求的时间点。
u1 =索尔(:,:1);
u2 =索尔(:,:,2);
情节(x, [u1(最终,:),u2(最终,:)));
![](http://www.tianjin-qmedu.com/matlabcentral/answers/uploaded_files/1178223/image.png)
% % %
函数[c、f、s] = pdefun (x, t, u, dudx)
气= 12;
c = [1;0);
f = [(1 * dudx(1)气* (u (1) / u (2)) * (dudx (2));dudx (2)];
s = [u (1) * (1 u (1));- u (2) + u (1)];
结束
% %
函数情况= pdeic (x)
情况= (1 + 0.5 * cos(π* x);1 + 0.5 * cos(π* x)];
结束
% %
函数[pl, ql,公关,qr] = pdebc (xl, ul, xr, ur, t)
pl = [0;0);
ql = [1;1);
公关= [0;0);
qr = [1;1);
结束
你能帮我看看吗?谢谢!
Torsten
2022年11月2日
编辑:Torsten
2022年11月3日
我使用了“正确”在t = 0 v的初始条件。
我认为“pdepe”应该能够自动调整,但事实并非如此。
信谊x v (x)
u = 1 + 0.5 * cos(π* x);
eqn = diff (v、x 2) - v + u = = 0;
Dv = diff (v, x);
v = dsolve (eqn (Dv (0) = = 0, Dv (1) = = 0))
v =
![](http://www.tianjin-qmedu.com/matlabcentral/answers/uploaded_files/1178643/image.png)
v = matlabFunction (v);
u = matlabFunction (u);
%
h = 0.01;%的空间步长,
L = 1;
T = 10;
τ= 0.001;%的时间步长
M = L / h;
x = linspace (0, L, M + 1);
N = T /τ;
t = linspace (0, t, N + 1);
m = 0;
索尔= pdepe (m, @pdefun, @ (x) pdeic (x, u, v), @pdebc, x, t);
u1 =索尔(:,:1);
u2 =索尔(:,:,2);
情节(x, [u1(最终,:),u2(最终,:)));
![](http://www.tianjin-qmedu.com/matlabcentral/answers/uploaded_files/1178648/image.png)
% % %
函数[c、f、s] = pdefun (x, t, u, dudx)
气= 12;
c = [1;0);
f = [dudx(1)气* u (1) / (2) * dudx (2);dudx (2)];
s = [u (1) * (1 u (1));- u (2) + u (1)];
结束
% %
函数情况= pdeic (x, u, v)
情况= [u (x);v (x)];
结束
% %
函数[pl, ql,公关,qr] = pdebc (xl, ul, xr, ur, t)
pl = [0;0);
ql = [1;1);
公关= [0;0);
qr = [1;1);
结束
沙龙
2022年11月2日
感谢你修改代码。
我想知道你如何得到“正确”的初始值为诉你第一次解决
与边界条件
v (x)。然后使用v (x)的初始值
和
抛物型方程的初值解决使用pdepe parabolic-elliptic系统。我的理解正确吗?谢谢!
![](http://www.tianjin-qmedu.com/matlabcentral/answers/uploaded_files/1178508/image.png)
![](http://www.tianjin-qmedu.com/matlabcentral/answers/uploaded_files/1178513/image.png)
![](http://www.tianjin-qmedu.com/matlabcentral/answers/uploaded_files/1178518/image.png)
![](http://www.tianjin-qmedu.com/matlabcentral/answers/uploaded_files/1178523/image.png)
Torsten
2022年11月3日
编辑:Torsten
2022年11月3日
是的。
椭圆pde v (v”(x, 0) - v (x, 0) + u (x, 0) = 0, v ' (0, 0) = v '(1,0) = 0)和u的初始条件(u (x, 0) = 1 + 0.5 * cos(π* x))确定初始条件在t = 0 v (v (x, 0) = 1 + 0.5 * cos(π* x) /(1 +π^ 2))。
如果你的椭圆pde变得更加复杂,这样的解析解v (t = 0)不再可能使用符号的方法,你也可以尝试计算v (t = 0)使用“bvp4c”。
通常说,“pdepe”管理来调整一个近似自动v (t = 0),但似乎困难在你的情况中。
Torsten
2022年11月3日
h = 0.01;%的空间步长,
L = 1;
T = 10;
τ= 0.001;%的时间步长
M = L / h;
x = linspace (0, L, M + 1);
N = T /τ;
t = linspace (0, t, N + 1);
%
u = @ (x) 1 + 0.5 * cos(π* x);
用户体验= @ (x) -0.5 *π* sin(π* x);
bvpfcn = @ (x, v) [v (2), (1) - u (x));
bcfcn = @ (va、vb) [va (2); vb (2)];
猜= @ (x) [u (x);用户体验(x)];
solinit = bvpinit (x,猜);
索尔= bvp4c (bvpfcn bcfcn solinit);
%的阴谋(sol.x sol.y (1,:))
v = @ (xq) interp1 (sol.x sol.y (1:), xq);
%
m = 0;
索尔= pdepe (m, @pdefun, @ (x) pdeic (x, u, v), @pdebc, x, t);
u1 =索尔(:,:1);
u2 =索尔(:,:,2);
情节(x, [u1(最终,:),u2(最终,:)));
![](http://www.tianjin-qmedu.com/matlabcentral/answers/uploaded_files/1179558/image.png)
% % %
函数[c、f、s] = pdefun (x, t, u, dudx)
气= 12;
c = [1;0);
f = [dudx(1)气* u (1) / (2) * dudx (2);dudx (2)];
s = [u (1) * (1 u (1));- u (2) + u (1)];
结束
% %
函数情况= pdeic (x, u, v)
情况= [u (x);v (x)];
结束
% %
函数[pl, ql,公关,qr] = pdebc (xl, ul, xr, ur, t)
pl = [0;0);
ql = [1;1);
公关= [0;0);
qr = [1;1);
结束
Torsten
2022年11月4日
我想也许这是pdede解决的问题无法处理这样的情况。
也许吧。但我怀疑不同的解算器会表现的更好。
您的系统似乎是一个挑战,因为申论pdepe的问题给了一个非常不同的结果。
区分d / dx () du1 / dx - chi * u1、u2 * du2 / dx)和插入d ^ 2 u2 / dx ^ 2 = u2 - u1导致下面的代码用以下的解决方案。也许有一个错误在我的再形成,但我不能找到任何。
信谊x v (x)
u = 1 + 0.5 * cos(π* x);
eqn = diff (v、x 2) - v + u = = 0;
Dv = diff (v, x);
v = dsolve (eqn (Dv (0) = = 0, Dv (1) = = 0]);
v = matlabFunction (v);
u = matlabFunction (u);
%
h = 0.01;%的空间步长,
L = 1;
T = 10;
τ= 0.001;%的时间步长
M = L / h;
x = linspace (0, L, M + 1);
N = T /τ;
t = linspace (0, t, N + 1);
m = 0;
索尔= pdepe (m, @pdefun, @ (x) pdeic (x, u, v), @pdebc, x, t);
u1 =索尔(:,:1);
u2 =索尔(:,:,2);
情节(x, [u1(最终,:),u2(最终,:)))
![](http://www.tianjin-qmedu.com/matlabcentral/answers/uploaded_files/1180288/image.png)
函数[c、f、s] = pdefun (x, t, u, dudx)
气= 12;
c = [1;0);
f = [dudx (1); dudx (2)];
s =[气* ((dudx u (1) * (2) - u (1) * dudx (2)) / u (2) ^ 2 * dudx (2) + u (1) / (2) * (u (2) - u (1))) + u (1) * (1 u (1)); - u (2) + u (1)];
% f = [dudx(1)气* u (1) / (2) * dudx (2);dudx (2)];
% s = [u (1) * (1 u (1));- u (2) + u (1)];
结束
% %
函数情况= pdeic (x, u, v)
情况= [u (x);v (x)];
结束
% %
函数[pl, ql,公关,qr] = pdebc (xl, ul, xr, ur, t)
pl = [0;0);
ql = [1;1);
公关= [0;0);
qr = [1;1);
结束
Torsten
2022年11月5日
编辑:Torsten
2022年11月5日
是因为“正确”的初始函数是不正确的?
不。v的初始条件是正确的。
pdepe变得不同的结果为这两个问题的等价的配方。但是为什么呢?
我认为原因是边界条件。
并不是简单的在第一个配方的解算器检测设置
f = [dudx(1)气* u (1) / (2) * dudx (2);dudx (2))
qr ql (1) = (1) = ql qr (2) = (2) = 1
真正导致
du / dx = dv / dx = 0
两端。
您定义
f = [dudx(1)气* u (1) / (2) * dudx (2);dudx (2))
在一起
qr ql (1) = (1) = ql qr (2) = (2) = 1
这给了
du / dx - chi * u / v * dv / dx = 0dv / dx = 0
两端的边界条件
p + q * f = 0。
这是一个线性系统du / dx和dv / dx解决du / dx = dv / dx = 0。
但我不知道pdepe解算器内部是如何工作的。从不同的结果,我想这两个边界条件设置不同的解释。
一个错误发生
无法完成的行动,因为页面所做的更改。重新加载页面更新状态。
你也可以从下面的列表中选择一个网站
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。