当前位置:首页 > 1200710222+李卫康+数值分析试验一
附 录Ⅰ 实验报告的一般格式
桂林电子科技大学
数学与计算科学学院实验报告
实验室: 实验日期: 年 月 日 数学与计算科学学院 院(系) 年级、专业、班 1200710222 姓名 李卫康 成绩 课程 名称 数值分析 实验项目 名 称 指导 教师 一 ,实验目的 通过实验加深理解线性方程组的雅可比迭代法,高斯-赛德尔迭代法和SOR迭代法的算法思想,掌握三个迭代法Matlab程序的编写和使用。 二,实验原理 Matlab中有三个内置函数可以提取矩阵中的部分元素, >> D = diag(A) 当A为方阵时,输出D为向量,它由A的对角线元素构成;当A为向量时,输出D为对角阵,它以A为对角线元素。 >> L = tril(A,k) 输入A为方阵,k为对角线序号,主对角线k=0,向右上移动依次k递增1,向左下移动k依次递减1,输出L为第k条对角线及其以下元素构成的三角阵。 >> U = triu(A,k) 输入A为方阵,k为对角线序号,输出U为第k条对角线及其以上元素构成的三角阵。 根据线性方程组的雅可比迭代法的迭代公式 x?编写Matlab程序 k?1??k???k??1?1?D?1?b?L?Ux?DL?Ux?Db ??????function [x,k]=jacobi(A,b,x0,e,n) %输入 A为系数矩阵,b为常数的列向量,x0为迭代初始向量,n为最大迭代次数. %输出为解x和迭代次数k. format long; D=diag(diag(A)); L=(-1).*tril(A,-1); U=(-1).*triu(A,1); k=0; x=D\\(L+U)*x0+D\\b; while norm(x-x0)>=e x0=x; x=D\\(L+U)*x0+D\\b; k=k+1; disp([k,x(1),x(2),x(3)]); if k>n break; end end 三,使用仪器,材料 Matlab编译器 四,实验内容与步骤 1. 编写高斯-赛德尔迭代法和SOR迭代法的Matlab程序。 a)function [x,k]=gaosisaide(A,b,x0,e,n) %输入 A为系数矩阵,b为常数的列向量,x0为迭代初始向量,n为最大迭代次数. %输出为解x和迭代次数k. format long; D=diag(diag(A)); L=(-1).*tril(A,-1); U=(-1).*triu(A,1); k=0; x=(D-L)\\U*x0+(D-L)\\b; while norm(x-x0)>=e x0=x; x=(D-L)\\U*x0+(D-L)\\b; k=k+1; disp([k,x(1),x(2),x(3)]); if k>n break; end end >> A=[20 2 3;1 8 1;2 -3 15]; b=[24 12 30]'; x0=[0 0 0]'; >> [x,k]=gaosisaide(A,b,x0,0.00001,100) 1.00000000000000 0.74850000000000 1.14268750000000 2.12873750000000 2.00000000000000 0.76642062500000 1.13810523437500 2.12543163020833 3.00000000000000 0.76737473203125 1.13839920472005 2.12536321000651 4.00000000000000 0.76735559802702 1.13841014899581 2.12536795006223 5.00000000000000 0.76735379259109 1.13840978216834 2.12536811742152 x = 0.76735379259109 1.13840978216834 2.12536811742152 k = 5 b)function [x,k]=sor(A,b,x0,e,n) %输入 A为系数矩阵,b为常数的列向量,x0为迭代初始向量,n为最大迭代次数. %输出为解x和迭代次数k. format long; w=1.5; D=diag(diag(A)); L=(-1).*tril(A,-1); U=(-1).*triu(A,1); k=0; x=(D-w*L)\\(((1-w)*D+w*U)*x0+w*b); while norm(x-x0)>=e x0=x; x=(D-w*L)\\(((1-w)*D+w*U)*x0+w*b); k=k+1; disp([k,x(1),x(2),x(3)]); if k>n break; end end >> A=[20 2 3;1 8 1;2 -3 15]; b=[24 12 30]'; x0=[0 0 0]'; [x,k]=sor(A,b,x0,0.00001,100) 1.00000000000000 -0.10996875000000 0.71179101562500 1.62865605468750 2.00000000000000 1.38176811035156 1.32964996124268 2.30821333895874 3.00000000000000 0.39032044937210 1.07919993406663 2.09158922086620 4.00000000000000 0.97235221050906 1.13591101458382 2.10050825184024 5.00000000000000 0.67082288589384 1.16241990438295 2.16430726821600 6.00000000000000 0.80325643604704 1.11237185325921 2.09090663466036 7.00000000000000 0.76106201118902 1.15906995227364 2.15005526611411 8.00000000000000 0.76184606668877 1.12448352396264 2.10994821079398 9.00000000000000 0.77566609063257 1.14670555650120 2.13390434342685 10.00000000000000 0.76003264393749 1.13403403661859 2.12125151048465 11.00000000000000 0.77259698267942 1.14038638922244 2.12697076498852 12.00000000000000 0.76407512815451 1.13773570042446 2.12502030200218 13.00000000000000 0.76917251290859 1.13847099699200 2.12519664551480 14.00000000000000 0.76647384875608 1.13857628382821 2.12567979263985 15.00000000000000 0.76769867970376 1.13820339452147 2.12508138609576 16.00000000000000 0.76727683909835 1.13858113551537 2.12557827978706 17.00000000000000 0.76731929717143 1.13829113656260 2.12523434164096 18.00000000000000 0.76741895406068 1.13848193877464 2.12544361999978 19.00000000000000 0.76729341765351 1.13837083605269 2.12533075728521 20.00000000000000 0.76739824537617 1.13842789397465 2.12538334047455 21.00000000000000 0.76732544160895 1.13840315637202 2.12536418835254 22.00000000000000 0.76736986336040 1.13841078711781 2.12536716928699 23.00000000000000 0.76734583716255 1.13841091773180 2.12537052324353 24.00000000000000 0.76735707602916 1.13840811627047 2.12536575805354 25.00000000000000 0.76735294898280 1.13841118429545 2.12536988646530 x = 0.76735294898280 1.13841118429545 2.12536988646530 k = 25 >> 2. 利用高斯-赛德尔迭代法的Matlab程序计算线性方程组 ?20x1?2x2?3x3?24? ?x1?8x2?x3?12?2x?3x?15x?3023?1并且在同样误差条件下和算例的雅可比迭代法比较收敛速度。 >> A=[20 2 3;1 8 1;2 -3 15]; >> b=[24 12 30]'; >> x0=[0 0 0]'; >> [x,k]=gaosisaide(A,b,x0,0.00001,100) 1.00000000000000 0.74850000000000 1.14268750000000 2.12873750000000 2.00000000000000 0.76642062500000 1.13810523437500 2.12543163020833
共分享92篇相关文档