【问题标题】:Matlab---can pdepe solve 1st order pde set like this?Matlab---pdepe可以像这样解决一阶pde集吗?
【发布时间】:2012-01-09 23:34:09
【问题描述】:

方程:

变量:z, t

想要:S = S(z,t), A = A(z,t)

参数:a,b,c

i 是 sqrt(-1)

d 是偏导算子

dS/dt = -i*a*z*S - i*b*A

(d/dz +c*d/dt)A = -i*S

边界条件:

sigma 是脉冲宽度

tm 是脉冲的中心

在 z = 0,

A(1,t) = (0.398942/sigma)*exp(-((t-tm).^2)/(2*sigma^2))(高斯脉冲)

在 z = 1 时, 边界条件不明确。预计接近 0。如果我使用 Mathematica,则无需指定此边界条件。其实这个边界就是解决这个pde的目的。

初始条件:

在 t = 0,

S = 0

A = 0(接近0。应该是上述高斯脉冲的边缘)

我试图用 pdepe 解决这个 pde 集。结果显示:

???在 77 处使用 ==> daeic12 时出错 此 DAE 的索引似乎大于 1。

我的问题是:pdepe 可以解决这些问题吗?

××××××××××××××××××××××××××××××××××××××××××××××××× ×××××××××××××××××××××××××××

详细说明:将方程改成如下形式:

[1; c].* d/dt [S; A] = d/dz [0; -A] + [-i*a*z*S-i*b*A; -i*S]

然后我的方程代码:(参数名改了,不长叫a、b、c)

function [ c,f,s ] = myPdeNoDecay( z,t,u,dudz)
LoverzetacT = 6.712414322355693e-05;
betaLT = 66.713366022882500;
omegayetaksbarLT = 4.183966095613130e+02;

c = [1;LoverzetacT];
f = [0;-u(2)];
s = -1i*[betaLT.*z.*u(1)+omegayetaksbarLT.*u(2);u(1)];
end

边界条件:

function [ pl,ql,pr,qr ] = myPdeNoDecayBC( xl,ul,xr,ur,t )
tm = 0.5; %ns, Normalized central time of the pulse
sigma = 0.1; %ns, Normalized width of the pulse, 10^-7s

pl = [ul(2)-iniShape(t,sigma,tm);0];
ql = [0;0];
pr = [0;0];
qr = [0;0];
end

function [G] = iniShape(t,sigma,tm)
G = (0.398942/sigma)*exp(-((t-tm).^2)/(2*sigma^2));
end

初始条件:

function [ u0 ] = myPdeNoDecayIC( x )
u0 = [0;0];
end

主要功能:

clear
close all
tlist = 0:0.05:1;
zlist = 0:0.05:1;

LoverzetacT = 6.712414322355693e-05;
betaLT = 66.713366022882500;
omegayetaksbarLT = 4.183966095613130e+02;

tm = 0.5; %ns, Normalized central time of the pulse
sigma = 0.1; %ns, Normalized width of the pulse, 10^-7s

m = 0;
sol = pdepe(m,@myPdeNoDecay,@myPdeNoDecayIC,@myPdeNoDecayBC,zlist,tlist);
figure('numbertitle','off','name','my PDE with no decay or two-ph detuning')
subplot(211);
surf(zlist,tlist,sol(:,:,1));
title('The solution of S');
xlabel('z');
ylabel('t');
zlabel('S(z,t)');
title('The solution of a');
xlabel('z');
ylabel('t');
zlabel('a(z,t)');

错误是:

???在 77 使用 ==> daeic12 时出错

此 DAE 的索引似乎大于 1。

【问题讨论】:

    标签: matlab pde


    【解决方案1】:

    不,pdepe 无法求解 DAE 索引大于 1 的方程。

    【讨论】:

    • 但是我如何从这两个 pdes 中看到 DAE? DAE 不是更像 ODE 吗?
    猜你喜欢
    • 2011-08-25
    • 1970-01-01
    • 2019-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-03
    • 2019-01-21
    • 2011-07-12
    相关资源
    最近更新 更多