ex1_7-GS迭代法例题源程序及注释.pdf
example1_7 PROGRAM MAIN DIMENSION A4,4, B4, X4 DOUBLE PRECISION A, B, X, EPS N4 EPS1.0E-06 MAXIT100 OPEN6,FILEEX1_7.TXT, STATUSUNKNOWN DATA A/1.502,0.0261,0.0342,0.0340, 0.0514,0.1516,0.0355,0.0684, 0.0,0.0,2.532,0.0, 0.0408,0.0820,0.2933,0.3470/ DATA B/0.1013,0.01993,0.2194,0.03396/ WRITE6,*ORIGINAL LINEAR EQUATIONS WRITE6,10AI,J,J1,N,BI,I1,N 10 AT1X,5F12.6 CALL GSDA,B,N,X,EPS,MAXIT WRITE6,20MAXIT 20 AT/5X,MAXINUM ITERATION NUMBER, I3/1X,701H- WRITE6,30 30 AT5X,SOLOTIONc/ WRITE6,40I,XI,I1,N 40 AT5X,c,I2,,F12.6 END 注释 注释 主程序 主程序 四个波长,混合物由四个组分组成 四个波长,混合物由四个组分组成 收敛标准 收敛标准 最大迭代次数 最大迭代次数 打开文件 6 打开文件 6 准备存放输出文件准备存放输出文件 EX1_7.TXT 给定不同波长下各纯物质及混合物 给定不同波长下各纯物质及混合物 的摩尔吸光度 Eij, Ai,即为线性方 的摩尔吸光度 Eij, Ai,即为线性方 程组的系数 AN,M;MN1 程组的系数 AN,M;MN1 在文件 6 中写入字符串 在文件 6 中写入字符串 在文件 6 中写入 A,B 数组,格式 10 在文件 6 中写入 A,B 数组,格式 10 1X输出空格;个数为 1 1X输出空格;个数为 1 连续 5 个 F 编辑符 连续 5 个 F 编辑符 12字段宽度 12字段宽度 6输出数据的小数位数 6输出数据的小数位数 例如 1.502000 例如 1.502000 调用高斯-赛德尔迭代法子程序计算 调用高斯-赛德尔迭代法子程序计算 /换行 /换行 MAXIT 的输出格式 I3 MAXIT 的输出格式 I3 整型输出,字段宽度 3 整型输出,字段宽度 3 701H- 701H- 输出 70 个字符常量“-” 输出 70 个字符常量“-” 输出计算结果 x输出计算结果 xi i 程序结束 程序结束 SUBROUTINE GSDA,B,N,X,EPS,MAXIT DOUBLE PRECISION A,B,X,EPS DIMENSION AN,N,BN,XN A数组 AN,N,存放线性方程组矩阵的系数; A数组 AN,N,存放线性方程组矩阵的系数; B数组 B(N) ,存放线性方程组右端的系数 B数组 B(N) ,存放线性方程组右端的系数 N线性方程组的维数; N线性方程组的维数; X数组 X(N) ,存放线性方程组的根; X数组 X(N) ,存放线性方程组的根; EPS 计算精度。 EPS 计算精度。 MAXIT最大迭代次数 MAXIT最大迭代次数 DO 20 I1,N S0.0 DO 10 J1,N IFJ.EQ.IGOTO 10 SSABSAI,J 10 CONTINUE IF S.GE.ABSAI,I GOTO 70 20 CONTINUE DO 30 I1,N XI0.0 30 CONTINUE IT0 40 EMAX0.0 DO 60 I1,N X1BI DO 50 J1,N IFI.EQ.JGOTO 50 X1X1-AI,J*XJ 50 CONTINUE X1X1/AI,I ESABSX1-XI XIX1 IFES.LE.EMAX GOTO 60 EMAXES 60 CONTINUE IFEMAX.LE.EPS GOTO 90 书写15 列标号区; 书写15 列标号区; 772 列语句区 772 列语句区 子程序的名称 GSD 子程序的名称 GSD 定义双精度变量 定义双精度变量 定义数组 定义数组 判断是否为对角占优势矩阵 判断是否为对角占优势矩阵 ______ do 循环嵌套,不允许交叉 ______ do 循环嵌套,不允许交叉 | | __ | __ | | | | | | | | | - | | - | | | | ----- | ----- | 数组 X(N) ,存放线性方程组的根 数组 X(N) ,存放线性方程组的根 赋初值为 0 赋初值为 0 最大迭代次数 最大迭代次数 存储最大的 xk1-xk的差 存储最大的 xk1-xk的差 bi赋给 x1 bi赋给 x1 算术运算符的优先级 算术运算符的优先级 括号函数乘方乘除加减 括号函数乘方乘除加减 关系表达式ge. (大于等于) 关系表达式ge. (大于等于) 判断差是否小于收敛标准 ESP 判断差是否小于收敛标准 ESP J J 1N K 1k IIIJJIJ J 1J I 1 II 1 XBA *XA *X A I1,2,,N 有缘学习更多 谓y g d 3 0 7 6 考证资料或关注桃报奉献教育(店铺) 有缘学习更多 谓y g d 3 0 7 6 考证资料或关注桃报奉献教育(店铺) ITIT1 IFIT.LE.MAXITGOTO 40 70 WRITE*,*NO UNIQUE SOLUTION 90 MAXITIT RETURN END 若收敛,更新迭代次数 若收敛,更新迭代次数 若不收敛,迭代次数加 1, 若不收敛,迭代次数加 1, 进行下次循环 进行下次循环 判断迭代次数是否大于 MAXIT 判断迭代次数是否大于 MAXIT 若大于,输出无解 若大于,输出无解 write 的用法 write 的用法 第一个* 默认设备或文件 (unit 6) 第一个* 默认设备或文件 (unit 6) 第二个*默认格式(I、F、E、X) 第二个*默认格式(I、F、E、X) 子程序结束 子程序结束