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

2022-06-08 13:24:06 字數 991 閱讀 4992

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

這裡依然用差分法計算。

一維波動方程如下:

寫成差分形式:

整理一下就能得到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);

endend

%畫出數值解

[x1,t1] = meshgrid(0:hx:x,0

:ht:t);

mesh(x1,t1,u)

結果如下:

有限差分法MATLAB程式

設有乙個長直接地金屬矩形槽,長a 40,寬b 20,其側壁與底面電位均為零,頂蓋電位為100v 相對值 求槽內電位分布。利用高斯迭代求解 如下 相鄰兩次迭代值最大允許誤差為0.001 a zeros 21,41 a 1,100 b zeros 19,39 c eye 19,39 count 1 d ...

matlab練習程式(DBSCAN)

和kmeans相比,不需要事先知道資料的類數。以程式設計的角度來考慮,具體演算法流程如下 1.首先選擇乙個待處理資料。2.尋找和待處理資料距離在設定半徑內的資料。3.將找到的半徑內的資料放到乙個佇列中。4.拿佇列頭資料作為當前待處理資料並不斷執行第2步。5.直到遍歷完佇列中所有資料,將這些資料記為一...

matlab練習程式(c c 呼叫matlab)

就我目前了解的c 呼叫matlab有兩種方法。第一種是通過matlab引擎呼叫,也就是這裡用到的方法。第二種是用matlab將m檔案編譯為相應的h lib dll檔案再加以呼叫。使用engine所用到的h和lib檔案基本在d program files matlab r2010b extern裡面,...