📄 fsfjsgk.m
字号:
% FD.m
% 本程序用矩阵实现有限差分算法
% 本程序求解第一类边界条件下无源矩形金属槽电位分布
% 编程人 沙威(Wei Sha) 安徽大学(Anhui University) ws108@ahu.edu.cn
tic;
clear;clc;
%%%%%%%%%%%%%%%%%
% 1.常量赋值
M=10; % 行数
N=8; % 列数
TOTAL=M*N; % 所有点数
UNKNOWN=(M-2)*(N-2); % 所有未知点数
V0=100; % 上侧电位
V1=0; % 下侧电位
V2=0; % 左侧电位
V3=0; % 右侧电位
%%%%%%%%%%%%%%%%%%
% 2.确定系数矩阵
%% 编号从左到右,从上到下
A=zeros(TOTAL,TOTAL); % 系数矩阵初始化
%% 上半部分
i=0; % 系数矩阵行标号
index=N+1; % 第二行第一个元素
for m=index+1:N:TOTAL-2*N+2; % 找到未知点每行的起始标号
for n=m:1:m+N-3; % 找到未知点对应的真实编号
i=i+1; % 系数矩阵行循环
A(i,n)=-4; % 中心
A(i,n+1)=1; % 右侧
A(i,n-1)=1; % 左侧
A(i,n+N)=1; % 下侧
A(i,n-N)=1; % 上侧
end;
end;
position=i; % 记住系数矩阵循环位置
%% 下半部分
% 1.上侧
for j=1:N; % 槽上侧包括角点
i=i+1; % 系数矩阵行循环
A(i,j)=1;
end;
% 1.下侧
for j=TOTAL-N+1:TOTAL; % 槽下侧包括角点
i=i+1; % 系数矩阵行循环
A(i,j)=1;
end;
% 1.左侧
for j=N+1:N:TOTAL-2*N+1; % 左侧不包括角点
i=i+1; % 系数矩阵行循环
A(i,j)=1;
end;
% 1.右侧
for j=2*N:N:TOTAL-N; % 左侧不包括角点
i=i+1; % 系数矩阵行循环
A(i,j)=1;
end;
%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 3.确定激励矩阵
B=zeros(TOTAL,1); % 激励矩阵初始化
s=position; % 找到矩阵需要赋值的位置
% 1.上侧
for j=1:N; % 槽上侧包括角点
s=s+1; % 激励矩阵行循环
B(s,1)=V0;
end;
% 1.下侧
for j=TOTAL-N+1:TOTAL; % 槽下侧包括角点
s=s+1; % 激励矩阵行循环
B(s,1)=V1;
end;
% 1.左侧
for j=N+1:N:TOTAL-2*N+1; % 左侧不包括角点
s=s+1; % 激励矩阵行循环
B(s,1)=V2;
end;
% 1.右侧
for j=2*N:N:TOTAL-N; % 左侧不包括角点
s=s+1; % 激励矩阵行循环
B(s,1)=V3;
end;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 4. 求解矩阵方程
C=A\B;
r=0; % 初值
for p=1:M; % 行循环
for q=1:N % 列循环
r=r+1;
VOLTAGE(p,q)=C(r,1); % 赋值便于观察
end;
end;
disp(VOLTAGE); % 显示
toc;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -