matlab練習程序(差分法解一維波動方程)


上一篇實現了二維熱傳導方程數值解,這里我們計算波動方程數值解。

波動方程是一種雙曲型偏微分方程。

這里依然用差分法計算。

一維波動方程如下:

寫成差分形式:

整理一下就能得到u(i+1,j)。

matlab代碼如下:

clear all;close all;clc;

t = 2;          %時間范圍,計算到2秒
x = 1;          %空間范圍,0-1米
m = 320;        %時間方向分320個格子
n = 64;         %空間方向分64個格子
ht = t/(m-1);   %時間步長dt
hx = x/(n-1);   %空間步長dx

u = zeros(m,n);

%設置邊界條件
i=2:n-1;
xx = (i-1)*x/(n-1);
u(1,2:n-1) = sin(2*pi*xx);
u(2,2:n-1) = sin(2*pi*xx);

%根據推導的差分公式計算
for i=2:m-1
    for j=2:n-1
        u(i+1,j) = ht^2*(u(i,j+1)+u(i,j-1)-2*u(i,j))/hx^2 + 2*u(i,j)-u(i-1,j);
    end
end

%畫出數值解
[x1,t1] = meshgrid(0:hx:x,0:ht:t);
mesh(x1,t1,u)

結果如下:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM