• 大小: 168KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-23
  • 语言: Matlab
  • 标签: matlab  MG  

资源简介

用多重网格算法求解微分方程的matlab例子。程序采用采取四层网格,微分方程的离散选用有限差分法,每层网格上的计算采用逐次超松弛迭代法(SOR迭代);由细网格限制到粗网格,采用完全加权限制算子

资源截图

代码片段和文件信息

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


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件      186114  2016-03-04 19:27  多重网格法求解微分方程-matlab\Readme.pdf
     文件         594  2016-03-03 15:21  多重网格法求解微分方程-matlab\SOR.m
     文件        1277  2016-03-04 19:20  多重网格法求解微分方程-matlab\interpolate.m
     文件        7052  2017-05-12 10:39  多重网格法求解微分方程-matlab\main.m
     文件        2234  2017-05-15 15:20  多重网格法求解微分方程-matlab\mytestV.m
     文件        1080  2016-03-04 19:21  多重网格法求解微分方程-matlab\restrict.m
     目录           0  2017-09-25 10:43  多重网格法求解微分方程-matlab\

评论

共有 条评论