資源簡介
本例用五點差分法求解一個二階偏微分方程,其間用CG法處理,此實驗可分別選取N=4,8,16,32
代碼片段和文件信息
function?[?output_args?]?=?Untitled1(?input_args?)
%本例用五點差分法求解一個二階偏微分方程,其間用CG法處理,此實驗可分別選取N=4,8,16,32
disp(‘請輸入N的值:‘);
N=input(‘N=?‘);
a=0;b=1;
h1=pi/(N+1);
h2=(b-a)/(N+1);
h=pi;
x=1:N;y=1:N;
x=h1*x;y=h2*y;
I1=-(h*h)*diag(ones(1N));
AA=zeros(N);
AA(11:2)=[2*h*h+1-1];
AA(NN-1:N)=[-12*h*h+1];
for?i=2:N-1
????AA(ii-1:i+1)=[-12*(h*h+1)-1];
end
%構造矩陣
A=zeros(N*N);
A(1:N1:2*N)=[AAI1];
A((N-1)*N+1:N*N(N-2)*N+1:N*N)=[I1AA];
for?i=2:N-1
????A((i-1)*N+1:i*N(i-2)*N+1:i*N+N)=[I1AAI1];
end
%構造右端項
for?i=1:N
????b1((i-1)*N+1:i*N)=h1*h1*cos(3*x).*sin(pi*y(i));
????%精確解
????U((i-1)*N+1:i*N)=cos(3*x).*sin(pi*y(i))/(9+pi*pi);
end
%---------------------------------------------------
%4.求解并與精確值比較
%---------------------------------------------------
step=0;
x0=ones(N*N1);
r0=b1‘-A*x0;
p0=r0;
err(1)=max(abs(x0-U‘));
while?r0‘*
- 上一篇:基于matlab的聲發射信號量化診斷系統
- 下一篇:隨機信號的DOA估計方法
評論
共有 條評論