一维波动方程求解matlab,MATLAB编辑一维波动方程的模拟的程序

MATLAB编辑一维波动方程的模拟的程序

一维波动方程的模拟

程序:

function wave_equation() %一维线性齐次波动方程

options={'空间杆长L','空间点数N' ,'时间点数M','波的相速度v',... '稳定条件的值r(取值必须小于1)','初始速度调用形式form(选择1或2)'}; topic='seting';

lines=1;

def={'1','100','100','1','1','1'};

p=inputdlg(options,topic,lines,def);

L=eval(p{1});

N=eval(p{2});

M=eval(p{3});

v=eval(p{4});

r=eval(p{5});%r的值必须小于1

form=eval(p{6});

%*************************************************************** h=L/N;%空间步长

x=0:h:L;

x=x';

tao=r*h/v;%时间步长

tm=M*tao;%波传播的总时间tm

t=0:tao:tm;

t=t';

%计算边值和初值

U=zeros(N+1,M+1);

Uo=border_funo(t);

Ue=border_fune(t);

Ui=init_fun1(x);

dUi=init_fun2(x);

U(1,:)=Uo;

U(N+1,:)=Ue;

U(:,1)=Ui;

if form==1

U(:,2)=init_fun1(x)+tao*init_fun2(x);

else

for i=2:N

U(i,2)=(1-r^2)*Ui(i)+0.5*r^2*(Ui(i+1)+Ui(i-1))+tao*dUi(i); end

end

%用差分法求解波动方程

for j=3:(M+1)

for i=2:N

U(i,j)=2*(1-r^2)*U(i,j-1)+r^2*(U(i+1,j-1)+U(i-1,j-1))-U(i,j-2);

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值