实现对PDE数值方法

1视图(30天)
schlang
schlang 2022年10月13日
你好
我试图解决以下PDE intital和边界条件等 。我用二阶中心差分discrtization 然后想要解决使用ode15s ode系统
这是我的尝试。当我从ode15s情节获得的解决方案,比较精确解他们是不同的。我不是如果我犯了一个错误。帮助是非常感激
clc,清楚,接近所有
%的参数
t0 = 0;
T = 1.0;
tspan = (t0 T);
xl = 0;
xr = 1;
m = 20;
x = linspace (xl, xr, m + 1);
dx = 1 / m;
Uexact = @ (t, x) exp(1 *(型));
%初始条件
情况= Uexact (0, x) ';
情况=情况(2:end-1);
%解决
fn = @ (t, U)颂歌(t, U, m, dx);
选择= odeset (“RelTol”1 e-13“AbsTol”1 e15汽油);
[t U] = ode15s (fn, tspan情况,选择);
%与精确解进行比较
情节(x (2: end-1), U(最终,:))
持有
情节(x (2: end-1) Uexact (T) x (2: end-1)))
函数dUdt =颂歌(t, U, m, dx)
=眼(m - 1);
= * (2);
一个= A +诊断接头(1 (m - 2, - 1), 1);
一个= A +诊断接头(1 (m - 2, - 1), 1);
一个= (1 / dx ^ 2) *;
g = 0 (m - 1, 1);
g (1) = g (1) + (1 / dx ^ 2) * exp(我* (1 * t));
g(结束)= g(结束)+ (1 / dx ^ 2) * exp (1 * (1 - t));
dUdt =(我)* (* U) + g;
结束
谢谢
2的评论
大卫。马塞罗说道
大卫。马塞罗说道 2022年10月13日
别介意,我得到了它,请参阅下面的回答。

登录置评。

接受的答案

大卫。马塞罗说道
大卫。马塞罗说道 2022年10月13日
编辑:大卫。马塞罗说道 2022年10月13日
清楚,clc
tspan = [0 1];
N = 100;
x = linspace (0, 1, N);
dx = 1 / (n - 1);
Uexact = @ (t, x) exp(1 *(型));
情况= Uexact (0, x);
M =眼睛(N);
米(1,1)= 0;
M (N, N) = 0;
选择= odeset (“质量”米,“MassSingular”,“是的”);
(t, U) = ode15s (@ (t, U) yourPDE (t, U, N, dx) tspan,情况,选择);
情节(x,真实(U(最终,:))“k”,x(1:4:结束),真正的(Uexact (1, x(1:4:结束))),“r”。)
包含(“x”)
ylabel (“U”)
标题(“最后一次”)
传奇(“数值”,“准确”,“位置”,“最佳”)
情节(x,真实(U(1:3:最终,)),“k”,x(1:3:结束),真正的(Uexact (t(1:3:结束),x(1:3:结束))),“r”。)
包含(“x”)
ylabel (“U”)
标题(“在几次”)
函数dUdt = yourPDE (t, U, N, dx)
dUdt (1, - 1) = U (1) exp(1我* t);
dUdt (2: n - 1, - 1) = 1我* (U (1: end-2) 2 * U (2: end-1) +(3:结束))/ dx ^ 2;
dUdt (N - 1) = U(结束)exp (1 * (1 - t));
结束

更多的答案(0)

标签

下载188bet金宝搏


释放

R2022b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!