|
|
windhair同学你好,谢谢你的建议
我重新检查调试后,觉得好像还是嵌套上有些问题吧,你有注意到这一部分吗?
对量纲做调整后含嵌套的代码如下,出现全零解:
function Cha6demo2
clear all; clc
m=0;
y0=0;
x=linspace(0,0.00037,60);
t=linspace(0,129600,60);
sol=pdepe(m,@pdex1pde,@pdex1ic,@pdex1bc,x,t);
u=sol(:,:,1)
surf(x,t,u)
title('numerical solution computed with 20 mesh points.')
xlabel('Distance x')
ylabel('Time t')
figure
plot(x,u(end,: )),title('solution at t=129600')
xlabel('Distance x'),ylabel('u(x,129600)')
%--------------------------------------------------------
function[c,f,s]=pdex1pdex(x,t,u,DuDx)
c=(1+5.8/((0.2+u)^2))*10000000000;f=DuDx;s=(2/x)*DuDx;
%----------------------------------------------------------
function u0=pdex1ic(x)
u0=0;
%----------------------------------------------------------
function [pl,ql,pr,qr]=pdex1bc(xl,ul,xr,ur,t,v)
y0=0;
t=linspace(0,129600,60);
[t,v]=ode45(@ODEfun1,t,y0,[],ur)
pl=0;ql=1;pr=-0.9*10^5*(v-ur);qr=1; %pde方程的边界条件pr中含有ode方程的解向量v
%----------------------------------------------------
function DvDt=ODEfun1(t,v,ur)
DvDt=0.004*(ur-v)+0.00003002*30*((-7)*10^(-15)*t^3+2*10^(-9)*t^2-0.0002*t+9.6995)*(1-5.06*v)/(2.8+((-7)*10^(-15)*t^3+2*10^(-9)*t^2-0.0002*t+9.6995)*(1+((-7)*10^(-15)*t^3+2*10^(-9)*t^2-0.0002*t+9.6995)/0.05));
%ode方程中含有pde解向量在右边界上的解ur
当我尝试着不用嵌套ode45来求解得v,而是将一个已知的函数关系式v(t)=2*10^(-16)*t^3+3*10^(-11)*t^2+1*10^(-7)*t-0.0018来代替时,就不会出现全零矩阵,(将边界条件句柄pdex1bc的定义部分替换为以下几行):
%----------------------------------------------------------
function [pl,ql,pr,qr]=pdex1bc(xl,ul,xr,ur,t,v)
pl=0;ql=1;pr=-0.9*10^5*((-2*10^(-16)*t^3+3*10^(-11)*t^2+1*10^(-7)*t-0.0018)-ur);qr=1;
你看是不是嵌套上有问题呢?
[ Last edited by embrace5758 on 2009-4-10 at 16:28 ] |
|