资源简介
以某偏微分方程为例,应用多重网格法进行了求解,编写了matlab程序,注释详细,并对计算结果进行了分析。
代码片段和文件信息
function u_fine=interpolate(u_coarse)
%Copyright@Peng Yj NWPU2016.3.3
%由粗网格延拓到细网格,采用线性插值算子
%将下一层近似解的修正量插值到上一层
%输入项:u_coarse(粗网格列向量)
%输出项:u_fine(密网格列向量)
%示例如下:
%下一层共9个点,首尾函数值已知,去除,共7个点
%上一层共17个点,首尾函数值已知,去除,共15个点
%下一层首尾的修正量为0
% 1 1____1____1____1____1____1____1____1____1____1____1____1____1____1____1 1
% / \ | / \ | / \ | / \ | / \ | / \ | / \ | / \
% 0 / \ | / \ | / \ |1 / \ 1| / \ | / \ | / \ | / \
% / \ | / \ | / \ | / \ | / \ | / \ | / \ | / 0\
% / 1/2 \|/ \|/ \|/ 1/2 \|/ \|/ \|/ \|/ \
% 1 1_________1_________1_________1_________1_________1_________1 1
%
u_coarse_size=size(u_coarse1); %粗网格向量的长度,则细网格向量的长度为2*u_coarse_size+1
u_fine(11)=u_coarse(11)/2; %首项
u_fine(2*u_coarse_size+11)=u_coarse(u_coarse_size1)/2; %尾项
for i=1:u_coarse_size
u_fine(2*i1)=u_coarse(i1); %偶数项
end
for i=3:2:2*u_coarse_size-1
u_fine(i1)=u_coarse((i-1)/21)/2+u_coarse((i+1)/21)/2; %奇数项(除首尾项外)
end
end
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1277 2016-03-04 19:20 多重网格法实例及matlab程序\interpolate.m
文件 7041 2016-03-04 19:10 多重网格法实例及matlab程序\main.m
文件 186114 2016-03-04 19:27 多重网格法实例及matlab程序\Readme.pdf
文件 1080 2016-03-04 19:21 多重网格法实例及matlab程序\restrict.m
文件 594 2016-03-03 15:21 多重网格法实例及matlab程序\SOR.m
目录 0 2016-03-04 19:28 多重网格法实例及matlab程序
----------- --------- ---------- ----- ----
196106 6
评论
共有 条评论