- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数值分析第一次作业matlab实验报告
几种线性方程组迭代算法的MATLAB实现和性能比较
用有限差分方法(五点差分格式)求解正方形域上的Poisson方程边值问题
用MATLAB语言编写算法程序求解线性方程组的算法程序,采用下列方法,比较计算结果和算法性能,对计算结果给出讨论。
一、算法实现
解:由差分格式可得:
写成矩阵形式:Au=f
其中:
其中:
(1)用Jacobi迭代法求解线性方程组
function[u,k,er,t]=xsgs(n)
% Jacobi迭代法
% U 表示方程组的解;h 表示步长; A 表示迭代矩阵;k 表示迭代次数;n 表示非边界点数
% f 表示线性方程组A*U=f的右端矩阵f ;e 表示允许误差界;er 表示迭代误差
% t 表示计算时间
tic;
b(2:n+1,2:n+1)=(n+1)^(-2)*2;
u=zeros(n+2,n+2);
e=10^(-9);
for k=1:1000 %迭代求解
er=0;
ub=u;
for j=2:n+1
for i=2:n+1
u(i,j)=(ub(i-1,j)+ub(i+1,j)+ub(i,j-1)+ub(i,j+1)+b(i,j))/4;
er=er+abs(u(i,j)-ub(i,j)); %估计当前误差
end
end
er=er/n^2;
if ere,break;
end %判断是否达到计算精度,如果达到则退出循环
end
toc;
t=toc;
end
计算结果:
u =
0 0 0 0 0 0 0 0 0 0 0
0 0.0256 0.0413 0.0508 0.0560 0.0577 0.0560 0.0508 0.0413 0.0256 0
0 0.0413 0.0686 0.0859 0.0955 0.0986 0.0955 0.0859 0.0686 0.0413 0
0 0.0508 0.0859 0.1088 0.1216 0.1258 0.1216 0.1088 0.0859 0.0508 0
0 0.0560 0.0955 0.1216 0.1364 0.1412 0.1364 0.1216 0.0955 0.0560 0
0 0.0577 0.0986 0.1258 0.1412 0.1462 0.1412 0.1258 0.0986 0.0577 0
0 0.0560 0.0955 0.1216 0.1364 0.1412 0.1364 0.1216 0.0955 0.0560 0
0 0.0508 0.0859 0.1088 0.1216 0.1258 0.1216 0.1088 0.0859 0.0508 0
0 0.0413 0.0686 0.0859 0.0955 0.0986 0.0955 0.0859 0.0686 0.0413 0
0 0.0256 0.0413 0.0508 0.0560 0.0577 0.0560 0.0508 0.0413 0.0256 0
0 0 0 0 0 0 0 0 0 0 0
k = 304
er = 9.7771e-10
t = 0.0140
(2)用块Jacobi迭代法求解线性方程组
function [ u,k ,er,t] = xsbgs( n )
%块Jacobi迭代法
% u 表示方程组的解h 表示步长;k 表示迭代次数;n 表示非边界点数;
% f 表示线性方程组A*u=f的右端矩阵f;q 表示n+2维向量;a 表示方程组系数矩阵的下对角线元素
% b 表示方程组系数矩阵的主对角线元素;c 表示方程组系数矩阵的上对角线元素;d 表示追赶法所求方程的右端向量
% e 表示允许误差界;er 表示迭代误差;l 表示系数矩阵A所分解成的下三角阵L中的下对角线元素 l(i);z 表示系数矩阵A所分解成的上三角阵U中的主对角线元素 z(i)
tic;
f=2*1/(n+1)^2*ones(n+2,n+2);
a=-1*ones(1,n);b=4*ones(1,n);
c=-
文档评论(0)