本帖最后由 伤痕累累 于 2012-1-1 17:15 编辑
我给我的差分程序弄上来给大家看看。主要是不会上传文件个图片。
function nextsolv3
%%差分的转化没有问题,但是为什么会出这样的结果呢,欢迎高手给予指导!!!
%我的邮箱:caitylnbug@126.com
%论文里给的时间和空间的步长分别是 dt=1e-6,h=1e-3,做出了倍周期和混沌,运行的时间是700s
clear all
clc
%kelvin弹性梁数学模型,由Hamilton原理推导,经无量纲后方程如下(D表示微分):
%D^2v(x,t)/Dt^2+2*r*D^2v(x,t)/DtDx+(r^2-1)*D^2v(x,t)/Dx^2+...
%vf^2**D^4v(x,t)/Dx^4+a*D^5v(x,t)/Dx^4*Dt=3/2*k1^2*(Dv(x,t)/Dx)^2*D^2v(x,t)/Dx^2
%初始条件v(0,t)=v(1,t)=0,D^2v(0,t)/Dx^2=D^2v(1,t)/Dx^2=0
%边界条件v(x,0)=K*x*(1-x);Dv(x,0)/Dt=0;K=0.001
%参数下面有给出
reltol=1e-7;
dt=0.01;h=0.1;%时间步长dt,空间步长h
T=0.2;L=1;
x=0:h:L;
y=0:dt:T;%时间点
n=length(x)%空间离散结点个数
m=length(y)%时间离散节点个数
a=0.001;k1=2000;r0=3;w=3.5;r1=0.4;vf=0.8;
D=0.001;
v=zeros(n+4,m+3);%初始化
for j=3:n+2
for i=3:m+1
v(n+2,i)=0;%右边界
v(3,i)=0;%左边界
r(i)=r0+r1*sin(w*y(i-1));%轴向梁运动速度
dr(i)=r1*w*cos(w*y(i-1));%轴向速度的导数
v(j,2)=D*x(j-2)*(1-x(j-2));%下边界
v(n+3,i)=2*v(n+2,i)-v(n+1,i);%边界有限差分的处理
v(2,i)=2*v(3,i)-v(4,i);%边界有限差分的处理
c0=2/dt^2+2*(r(i)^2-1)/h^2-6*vf^2/h^4;c1=1/dt^2;c2=2*r(i)/(4*h*dt);c3=dr(i)/(2*h);c4=(r(i)^2-1)/h^2;c5=vf^2/h^4;c6=a/(2*dt*h^4);c7=1.5*k1^2/(4*h^4);
v(j,i)=1/c0*(c1*(v(j,i+1)+v(j,i-1))+c2*(v(j+1,i+1)-v(j-1,i+1)-v(j+1,i-1)+v(j-1,i-1))+c3*(v(j+1,i)-v(j-1,i))+c4*(v(j+1,i)+v(j-1,i))+c5*(v(j-2,i)-4*v(j-1,i)-4*v(j+1,i)+v(j+2,i))+...
c6*(v(j+2,i+1)-4*v(j+1,i+1)+6*v(j,i+1)-4*v(j-1,i+1)+v(j-2,i+1)-v(j+2,i-1)+4*v(j+1,i-1)-6*v(j,i-1)+4*v(j-1,i-1)-v(j-2,i-1))-c7*(v(j+1,i)-v(j-1,i))^2*(v(j+1,i)-2*v(j,i)+v(j-1,i)));
end
end
V=v(3:n+2,2:m+1)
plot(y,V((n+1)/2,:),'b-')%v(0.5,t)点的振幅
figure
plot(y,V)end
V=v(3:n+2,2:m+1)
plot(y,V((n+1)/2,:),'b-')%v(0.5,t)点的振幅
figure
plot(y,V)
|