matlab程序没错出不来图,matlab程序没报错,图像却出不来

在MATLAB中,一个无错误的程序未能生成预期的图像。代码涉及边界控制的梁位移模拟,使用了数值方法进行求解,并尝试绘制3D表面图和时间序列曲线,但图像未正常显示。问题可能在于图形窗口未正确打开或者数据绘制部分存在潜在问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为什么我的程序没报错,图像却出不来?求大佬解惑!

我的代码如下:

close all;

clear all;

L=1; EI=5; T=2; rho=2; M=6;

nt=80000; nx=20; tf=15; Ttr=50;

dx=L/nx; dt=tf/nt;

x = linspace(0,L,nx+1); t_tr = linspace(0,tf,Ttr+1);

w=zeros(nx+1,nt+1);

w3D_free=zeros(Ttr+1,nx+1);

d=zeros(nt+1,1);

for j=1:nt+1

d(j) = 1 + sin(2*pi*(j-1)*dt) + cos(3*pi*(j-1)*dt) ;

end

Br=90;Bl=-90;k=100;k1=1;k2=4;r=1;m=1;

w=zeros(nx+1,nt+1); w3D_model=zeros(Ttr+1,nx+1);

u_model=zeros(nt+1,1);u3D_model=zeros(Ttr+1,1);

ua=zeros(nt+1,1); d_estimate=zeros(nt+1,1);

d1=zeros(nt+1,1);

dbar=max(abs(d));

d_estimate(1:2)= dbar;

for i=1:nx+1

w(i,1)=(i-1)*dx;

w(i,2)=w(i,1);

end

w(1,:)=0;w(2,:)=w(1,:);

w3D_model(1,:)=w(:,1);w3D_model(2,:)=w(:,2);

for j=3:nt+1

for i=3:nx-1

wxx=(w(i+1,j-1)-2*w(i,j-1)+w(i-1,j-1))/dx^2;

wxxxx=(w(i+2,j-1)-4*w(i+1,j-1)+6*w(i,j-1)-4*w(i-1,j-1)+w(i-2,j-1))/dx^4;

w(i,j)=2*w(i,j-1)-w(i,j-2)+(T*wxx-EI*wxxxx)*dt^2/rho;

end

wxl=(w(nx+1,j-1)-w(nx,j-1))/dx;

wxxxl=(w(nx+1,j-1)-3*w(nx,j-1)+3*w(nx-1,j-1)-w(nx-2,j-1))/dx^3;

wxxxtl=(w(nx+1,j-1)-3*w(nx,j-1)+3*w(nx-1,j-1)-w(nx-2,j-1)-w(nx+1,j-2)+3*w(nx,j-2)-3*w(nx-1,j-2)+w(nx-2,j-2))/(dt*dx^3);

wxtl=(w(nx+1,j-1)-w(nx,j-1)-w(nx+1,j-2)+w(nx,j-2))/(dx*dt);

wtl=(w(nx+1,j-1)-w(nx+1,j-2))/dt;

ua(j)=wtl+k1*wxl-k2*wxxxl;

d_estimate(j)= (abs(ua(j))+d_estimate(j-1))/(1+r*dt);

u_model(j)= (-EI*wxxxl+T*wxl-k1*M*wxtl+k2*M*wxxxtl-k*ua(j)-sign(ua(j))*d_estimate(j))/m;

dv=(u_model(j)-u_model(j-1))/dt;

if  dv>0

d0=-m*Br;

else

d0=-m*Bl;

end

d1(j)=d0+d(j);

w(nx+1,j)=2*w(nx+1,j-1) - w(nx+1,j-2) + (m*u_model(j-1)+d1(j-1)+EI*wxxxl-T*wxl)*dt^2/M;

w(nx,j)=(w(nx+1,j)+w(nx-1,j))/2;

if mod(j-1,(nt/Ttr))==0

w3D_model(1+(j-1)*Ttr/nt,:)=w(:,j);

u3D_model(1+(j-1)*Ttr/nt)=u_model(j);

end

end

figure(1);

surf(x,t_tr,w3D_model);

title('Displacement of beam with robust boundary control');

ylabel('Time (s)','Fontsize',12);

xlabel('x(m)','Fontsize',12);

zlabel('w(x,t)(m)','Fontsize',12);

figure(2);

plot(t_tr,u3D_model,'r')

xlabel('time');

ylabel('u');

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值