MATLAB 求解弦系统三维振动图如何绘图

本人在做毕业论文,要求用MATLAB绘制一维弦系统分别在无控制和边界控制下的三维振动图和边界处的二维振动图,请指教
这是老师给出的参考代码,完全看不懂

 

  • close all;clear all;clc;
  •  
  • tmax=300;
  • nt=100*10^3;
  • dt=tmax/(nt-1);
  • t=linspace(0,tmax,nt);
  •  
  • L=1;
  • nx=100;
  • dx=L/(nx-1);
  • x=linspace(0,L,nx);
  •  
  • pi=3.1415926;
  •  
  • v=zeros(1,nt);
  • for j=1:nt
  •     v(1,j)=0.007+0.0002*j*dt;
  • end
  •  
  • T=zeros(nx,nt);
  • for i=1:nx
  •     for j=1:nt
  •         T(i,j)=(300+0.007*j*dt+0.00001*j*dt*j*dt-i*dx)*(9.8-0.00002);
  •     end
  • end
  •  
  • d=zeros(1,nt);
  • for j=1:nt
  •     d(1,j)=1+sin(pi*j*dt)+sin(2*pi*j*dt)+sin(3*pi*j*dt);
  • end
  •  
  • rho=1024;
  • CD=1.361;
  • D=0.1524;
  •  
  • f=zeros(nx,nt);
  • for i=1:nx
  •     for j=1:nt
  •         U=2+0.2*sin(2*0.867*pi*j*dt)+0.2*sin(1.827*j*dt)+0.2*sin(2.946*j*dt)+0.2*sin(4.282*j*dt);
  •         f(i,j)=(0.5*rho.*CD.*U.*U*D+0.2*0.5*rho.*CD*U.*U.*D.*cos(4*pi.*(0.2*U/D)*j*dt))*(i)/3000;
  •     end
  • end
  •  
  • %case1 无控制
  • w1=zeros(nx,nt);
  • w1(1,:)=0;%w(0,t)=0 边界条件
  • w1(2,:)=0;
  •  
  • for i=3:nx-1 %d w(x,0)/dt=0 初始条件
  •     w1(i,1)=i*dx/5000;
  •     w1(i,2)=i*dx/5000;
  • end
  •  
  • for j=3:nt
  •     for i=3:nx-2
  •         w1(i,j)=2*w1(i,j-1)-w1(i,j-2)...
  •                 +(dt^2*(T(i,j-1)))/(dx^2)*(w1(i+1,j-1)-2*w1(i,j-1)+w1(i-1,j-1))...
  •                 +(dt^2)/(dx^2)*(w1(i,j-1)-w1(i-1,j-1))*(T(i,j-1)-T(i-1,j-1))...
  •                 -(dt^2)*2*v(1,j-1)*(w1(i,j-1)-w1(i,j-2)-w1(i-1,j-1)+w1(i-1,j-2))/(dx*dt)...
  •                 -(dt^2)*(v(1,j-1)-v(1,j-2))*(w1(i,j-1)-w1(i-1,j-1))/(dx*dt)...
  •                 -(dt^2)*(v(1,j-1)*v(1,j-1))*(w1(i+1,j-1)-2*w1(i,j-1)+w1(i-1,j-1))/(dx^2)...
  •     end
  • w1(nx-1,j)=2*w1(nx-1,j-1)-w1(nx-1,j-2)...
  •           -T(nx-1,j-1)*(w1(nx-1,j-1)-w1(nx-2,j-1))/(dx)...
  •           -(dt^2)*((v(1,j-1)-v(1,j-2))*(w1(nx-1,j-1)-w1(nx-2,j-1)))/((dx*dt)+v(1,j-1)*w1(nx-1,j-1))
  • w1(nx,j)=2*w1(nx-1,j)-w1(nx-2,j);

 

这是理论推导过程

这是所要求的结果示例图