




已阅读5页,还剩39页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1. 数组引用方法 2. 数组逻辑结构和存储结构 3. 数组的输入输出 4. Fortran 子程序概述 5. 语句函数 6. 外部函数子程序 7. 内部函数子程序 8. 应用举例 9. 作业,第七讲 数组的使用及Fortran函数,第七讲 数组的使用及Fortran函数,7.1 数组引用方法/概述,7.1 数组引用方法,数组声明只是确定了一个数组的类型、维数和元素个数。 在程序中需要引用数组的某个元素、某些元素和全部元素,或者给数组元素赋予新的值, 数组元素可参与某种运算,可作为操作数放在表达式中。 示例程序: INTEGER : num(-2:2),sum=0.0 num(-2)=100;num(-1)=200;num(0)=300;num(1)=400;num(2)=500 av1=(num(-2)+num(-1)+num(0)+num(1)+num(2)/5.0 DO I= -2,2 sum=sum+num(I) ENDDO av2=sum/5.0 WRITE(*,*) av1=,av1 WRITE(*,*) av2=,av2 END,概述 格式 检测 示例,第七讲 数组的使用及Fortran函数,7.1 数组引用方法/格式,7.1 数组引用方法,概述 格式 检测 示例,第七讲 数组的使用及Fortran函数,7.1 数组引用方法/检测,7.1 数组引用方法,数组引用要保证下标值落在下界和上界之间,否则将产生严重后果。 使用内部函数(UBOUND、LBOUND)分别检测数组的上界和下界。 UBOUND(数组名 , DIM=) LBOUND(数组名 , DIM=) 可检测某一维(指定维数,有第二参数),结果为整数。 也可检测所有维(不指定维数,缺第二参数),结果为一维整型数组。 例:INTEGER num(-5:-1,11,15,-2:2) LBOUND(num,1)等于-5 UBOUND(num,1)等于-1 LBOUND(num)等于(/-5,11,-2/) UBOUND(num)等于(/-1,15,2),概述 格式 检测 示例,第七讲 数组的使用及Fortran函数,7.1 数组引用方法/示例,7.1 数组引用方法,INTEGER arr(-5:3,100:110,4) INTEGER(1) ub(3),ub1,ub2,ub3,lb(3),lb1,lb2,lb3 ub1=UBOUND(arr,1); ub2=UBOUND(arr,DIM=2); ub3=UBOUND(arr,3) ub=UBOUND(arr) lb1=LBOUND(arr,1); lb2=LBOUND(arr,DIM=2); lb3=LBOUND(arr,3) lb=LBOUND(arr) WRITE(*,*) 函数UBOUND(arr,1)求数组arr第1维的下标上界是:,ub1 WRITE(*,*) 函数UBOUND(arr,DIM=2)数组arr第2维的下标上界是:,ub2 WRITE(*,*) 函数UBOUND(arr,3)求数组arr第3维的下标上界是:,ub3 WRITE(*,*) 函数UBOUND(arr)求数组arr所有维的下标上界依次是:,ub WRITE(*,*) 函数LBOUND(arr,1)求数组arr第1维的下标下界是:,lb1 WRITE(*,*) 函数LBOUND(arr,DIM=2)数组arr第2维的下标下界是:,lb2 WRITE(*,*) 函数LBOUND(arr,3)求数组arr第3维的下标下界是:,lb3 WRITE(*,*) 函数LBOUND(arr)求数组arr所有维的下标下界依次是:,lb END (运行结果),概述 格式 检测 示例,第七讲 数组的使用及Fortran函数,7.1 数组引用方法/示例/运行结果,7.1 数组元素引用,INTEGER arr(-5:3,100:110,4) INTEGER(1) ub(3),ub1,ub2,ub3,lb(3),lb1,lb2,lb3 ub1=UBOUND(arr,1); ub2=UBOUND(arr,DIM=2); ub3=UBOUND(arr,3) ub=UBOUND(arr) lb1=LBOUND(arr,1); lb2=LBOUND(arr,DIM=2); lb3=LBOUND(arr,3) lb=LBOUND(arr) WRITE(*,*) 函数UBOUND(arr,1)求数组arr第1维的下标上界是:,ub1 WRITE(*,*) 函数UBOUND(arr,DIM=2)数组arr第2维的下标上界是:,ub2 WRITE(*,*) 函数UBOUND(arr,3)求数组arr第3维的下标上界是:,ub3 WRITE(*,*) 函数UBOUND(arr)求数组arr所有维的下标上界依次是:,ub WRITE(*,*) 函数LBOUND(arr, 1)求数组arr第1维的下标下界是:,lb1 WRITE(*,*) 函数LBOUND(arr,DIM=2)数组arr第2维的下标下界是:,lb2 WRITE(*,*) 函数LBOUND(arr, 3)求数组arr第3维的下标下界是:,lb3 WRITE(*,*) 函数LBOUND(arr)求数组arr所有维的下标下界依次是:,lb END (运行结果),运行程序,输出结果为: 函数UBOUND(arr, 1)求数组arr第1维的下标上界是: 3 函数UBOUND(arr,DIM=2)数组arr第2维的下标上界是: 110 函数UBOUND(arr, 3)求数组arr第3维的下标上界是: 4 函数UBOUND( arr )求数组arr所有维的下标上界依次是: 3 110 4 函数LBOUND(arr, 1)求数组arr第1维的下标下界是: -5 函数LBOUND(arr,DIM=2)数组arr第2维的下标下界是:100 函数LBOUND(arr, 3)求数组arr第3维的下标下界是: 1 函数LBOUND( arr )求数组arr所有维的下标下界依次是: -5 100 1,概述 格式 检测 示例,第七讲 数组的使用及Fortran函数,7.2 数组的逻辑结构和存储结构/概述,7.2 数组的逻辑结构和存储结构,数组是复杂数据结构,有逻辑结构和存储结构两大特征。 数组逻辑结构:数组是一个与计算机实现无关的抽象的数据表。 数组存储结构:数组是一个与计算机实现有关的具体的数据表(线性表),连续存储在若干存储单元中。 对于一维数组,其逻辑结构是一个线性表。存储结构是一个线性表。 对于二维数组,其逻辑结构是矩阵,存储结构是一个线性表。 对于三维数组,其逻辑结构是三维实体,存储结构是一个线性表。,概述 一维 二维 三维 位置,第七讲 数组的使用及Fortran函数,7.2 数组的逻辑结构和存储结构/一维,7.2 数组的逻辑结构和存储结构,数组说明:INTEGER a(9)。 逻辑结构、存储结构、相互关系:,概述 一维 二维 三维 位置,第七讲 数组的使用及Fortran函数,7.2 数组的逻辑结构和存储结构/二维,7.2 数组的逻辑结构和存储结构,数组说明:INTEGER a(3,4)。 逻辑结构、存储结构、相互关系:,概述 一维 二维 三维 位置,第七讲 数组的使用及Fortran函数,7.2 数组的逻辑结构和存储结构/三维,7.2 数组的逻辑结构和存储结构,数组说明:INTEGER a(3,2,4)。 逻辑结构、存储结构、相互关系:,概述 一维 二维 三维 位置,第七讲 数组的使用及Fortran函数,7.2 数组的逻辑结构和存储结构/位置,7.2 数组的逻辑结构和存储结构,数组说明:INTEGER a(L1:U1,L2:U2,Ln:Un) 。 逻辑结构数组元素a(i,j,k,r,s)对应存储结构第几个元素计算: (U1-L1+1)(U2-L2+1)(Un-1-Ln-1+1)(s-Ln)+ (U1-L1+1)(U2-L2+1)(Un-2-Ln-2+1)(r-Ln-1)+ + (U1-L1+1)(U2-L2+1)(k-L3)+ (U1-L1+1)(j-L2)+i-L1+1 例: 三维数组声明 INTEGER a(-5:8,-3:4,10,15),有672个数组元素/ 数组元素a(2,1,13)在其存储结构中位于第400个元素。通过计算得到: 8-(-5)+14-(-3)+1(13-10)+8-(-5)+11-(-3)+2-(-5)+1 =1483+144+8=400,概述 一维 二维 三维 位置,第七讲 数组的使用及Fortran函数,7.3 数组的输入输出/使用DO循环语句,7.3 数组的输入输出,使用DO循环语句 使用隐含DO循环 使用数组名片段,使用DO循环语句输入输出部分或全部数组元素。 INTEGER arr(3,4) DO i=1,3 !输入全部元素 DO j=1,4 READ(*,*) arr(i,j) ENDDO ENDDO DO i=1,3 !输出全部元素 DO j=1,4 WRITE(*,*) arr(i,j) ENDDO ENDDO 注意:每行输入输出一个元素值,(示例),第七讲 数组的使用及Fortran函数,7.3 数组的输入输出/使用隐含DO循环,7.3 数组的输入输出,使用隐含DO循环输入输出部分或全部数组元素。 INTEGER arr1(8),arr2(3,4) READ(*,*) (arr1(I),I=1,8,2) !输入第1、3、5、7数组元素 READ(*,*) (arr1(I),I=1,8) !输入全部元素 WRITE(*,*) (arr1(I),I=1,8,2) !输出1、3、5、7数组元素 WRITE(*,*) (arr1(I),I=1,8) !输出全部元素 READ(*,*) (arr2(I,J),J=1,4),I=1,3) !输入全部元素 WRITE(*,*) (arr2(I,J),J=1,4),I=1,3) !输出全部元素,注意:每行可输入输出一 个或多个数组元素值,(示例),使用DO循环语句 使用隐含DO循环 使用数组名片段,第七讲 数组的使用及Fortran函数,7.3 数组的输入输出/使用数组名数组片段,7.3 数组的输入输出,使用数组名、数组片段输入输出部分或全部数组元素。 INTEGER arr1(8),arr2(3,4) READ(*,*) (arr1(I:I),I=1,8,2) !输入第1、3、5、7数组元素 READ(*,*) arr1 !按存储结构输入全部元素 WRITE(*,*) (arr1(I:I),I=1,8,2) !输出1、3、5、7数组元素 WRITE(*,*) arr1 !按存储结构输出全部元素 READ(*,*) arr2 !按存储结构输入全部元素 WRITE(*,*) arr2 !按存储结构输出全部元素,注意:每行可输入输出一 个或多个数组元素值,(示例),使用DO循环语句 使用隐含DO循环 使用数组名片段,第七讲 数组的使用及Fortran函数,使用DO循环语句输入输出数组示例,第七讲 数组的使用及Fortran函数,使用隐含DO循环输入输出数组示例,输入数据:以行为主输入 12 个矩阵数据,每行输入一个数据: 12.5 23.8 54.2 78.9 92.4 45.3 0 24.4 84.2 32.8 72.8 43.2 输出结果:输出转置后数组: 12.5 92.4 84.2 23.8 45.3 32.8 54.2 0.0 72.8 78.9 24.4 43.2,第七讲 数组的使用及Fortran函数,使用数组名数组片段输入输出数组示例,输入数据:按存储结构输入 12 个矩阵数据: 12.5,23.8,54.2,78.9,92.4,45.3,0,24.4,84.2,32.8,72.8,43.2 输出结果:输出转置后数组: 12.5 92.4 84.2 23.8 45.3 32.8 54.2 0.0 72.8 78.9 24.4 43.2,第七讲 数组的使用及Fortran函数,7.4 Fortran子程序概述/概述,使用顺序结构、选择结构和循环结构可设计和编写一些比较复杂的程序。 使用函数和子例行程序能编写编写结构清晰、层次分明、短小简洁的好程序,是编写高质量、高水平、高效率程序的有效手段。 通常在设计和编写程序时,会遇到以下三种情况: 同一程序内多次出现相同或相似的运算或处理过程。 不同程序内多次出现相同或相似的运算或处理过程。 程序复杂。 在设计和编写程序时,不同程序中不同部位会多次出现相同或相似的运算或处理过程(程序代码)。,概述 说明 标准函数,7.4 Fortran 子程序概述,PROGRAM QR_schmidt !QR法求矩阵特征值 Real,allocatable:A(:,:),Q(:,:),R(:,:),AT(:,:) Complex,allocatable:T(:) Character*20 filename_A,filename_T Filename_A=matrix_A.dat Filename_T=vector_T.dat Call read_number(filename_A,n) Allocate(A(n,n),Q(n,n),R(n,n),AT(n,n),T(n) Call read_matrix(n,A,filename_A) Call Get_AT(n,AT,Q,R) Call Get_eigenvalue(n,AT,T) Call write_vector(n,A,AT,T,filename_T) deallocate(A,Q,R,AT,T) END program,第七讲 数组的使用及Fortran函数,7.4 Fortran子程序概述/说明,7.4 Fortran 子程序概述,FORTRAN 90子程序,也称过程,划分为两类:函数和子例行程序。 函数是指产生一个运算结果且通过操作数调用执行的子程序。 子例行程序是指可产生多个处理结果且通过CALL语句调用执行的子程序。 每类子程序又划分为标准子程序和用户自定义子程序。 用户自定义子程序又划分为内部子程序、外部子程序和模块子程序。 FORTRAN 90的子程序分类如图7-1所示。,概述 说明 标准函数,第七讲 数组的使用及Fortran函数,概述 说明 标准函数,7.4 Fortran子程序概述/说明/分类图示,FORTRAN 90子程序,也称过程,划分为两类:函数和子例行程序。 函数是指产生一个运算结果且通过操作数调用执行的子程序。 子例行程序是指可产生多个处理结果且通过CALL语句调用执行的子程序。 每类子程序又划分为标准子程序和用户自定义子程序。 用户自定义子程序又划分为内部子程序、外部子程序和模块子程序。 FORTRAN 90的子程序分类如图7-1所示。,7.4 Fortran 子程序概述,第七讲 数组的使用及Fortran函数,7.4 Fortran子程序概述/标准函数,标准函数有时称系统函数、内部函数,FORTRAN 90的编译系统提供130多个标准函数。有以下几大类: 三角函数计算 数值计算 数据类型转换 数据类型查询 随机数生成 日期时间处理 字符串处理 地址计算 位运算,标准函数可作为表达式中操作数进行调用,并参与表达式运算。调用标准函数时,只需写出函数名,后面括号中给出符合要求的所要计算的变元值。例如: 已知:x=3.0,y=4.0,计算表达式2.5*SQRT(x*x+y*y)+ABS(-8.5*3),结果为38.0。,使用标准函数需要注意以下几点: 标准函数对变元的个数和类型有明确的规定和要求。要求有一个变元,如函数SIN(x),要求两个变元,如函数MOD(m,n),要求多个变元,如函数MAX(x1,x2,xn)。要求变元类型为整型,如函数MOD(m,n),要求变元类型为实型,如SIND(x),要求变元类型为整型、实型、双精度、复型等多种类型,如ABS(x)。 标准函数的函数值只有一个,且有明确的类型规定。多数函数函数值类型与变元类型相同,如函数SQRT(9.0D0)=3.0D0,类型都为双精度,也有函数函数值类型与变元类型不相同,如函数INT(8.5)=8,变元类型为实型,而函数值类型为整型。 对于“弧度”和“角度”单位,使用不同的三角函数。 函数变元必须写在函数名后括号内,变元可是常数、变量或表达式,少数标准函数变元要求变量,如LOC(v) IMPLICIT语句不能改变一个标准函数的类型。,概述 说明 标准函数,7.4 Fortran 子程序概述,第七讲 数组的使用及Fortran函数,7.5 语句函数/概述,概述 定义 调用 说明 示例,7.5 语句函数,第七讲 数组的使用及Fortran函数,7.5 语句函数/定义,7.5 语句函数,一般形式为:F(x1,x2,xn) F为函数名,x1,x2,xn为虚拟变元(或称形式参数或哑元)。 要求:不能重名,只能为普通变量名。类型可用隐含规则定义,也可用类型声明语句定义,但须放在该语句函数定义语句之前。 下面程序通过语句函数实现例7.2问题。 PROGRAM F72 F(x1,x2,x3)=3.14159*(x1+x2/60.0+x3/3600.0)/180.0 A=F(36.0,43.0,27.0) B=F(15.0,24.0,0.0) C=F(8.0,16.0,54.0) S=COS(A)*2-4*SIN(B)*TAN(C) WRITE (*,*) A,B,C,S END,概述 定义 调用 说明 示例,第七讲 数组的使用及Fortran函数,7.5 语句函数/调用,7.5 语句函数,调用一般形式为: 语句函数名() 说明: 同语句函数定义语句中的语句函数名相同。 为实在参数或实参,其个数、次序和类型应与定义语句中形式参数一致。实在参数之间用逗号分隔。 实参可是常数、变量、数组元素、函数名、表达式。 当调用语句函数时,其执行过程如下: 首先计算实参表达式的值; 将实参值赋予对应的形参,即形实参结合 用被赋值的形参对语句函数定义语句中的表达式进行求值运算; 将运算后的表达式值转换为函数名类型,并将其按函数值返回到调用位置。,概述 定义 调用 说明 示例,第七讲 数组的使用及Fortran函数,7.5 语句函数/说明,7.5 语句函数,使用语句函数的一些规定: 一个语句函数只能在一行内定义。如果太长,可续行书写。 语句函数定义语句是非执行语句。 语句函数只有一个函数返回值,函数名与函数值符合赋值规则。 定义语句函数,右端表达式中可调用已定义语句函数或标准函数,但不能调用该语句函数自己,即不能递归调用。 H(x1,x2)=x1*x1+x2*x2 F(x1,x2)=SQRT(H(x1,x2) 语句函数的形式参数不允许为数组或下标变量或常量。 DIMENSION A(10),B(2,3) F1(x,y)=x+A(1)+y-B(1,2) !表达式中可以引用数组元素 F(C)=C+100 语句函数名属于局部变量,只能在定义它的程序单位中引用。 语句函数可无形参,称为无参函数,圆括号不能省略,即:F()。,概述 定义 调用 说明 示例,第七讲 数组的使用及Fortran函数,7.5 语句函数/示例,7.5 语句函数,例7.3计算空间一点P(x,y,z)的方向弦,其计算公式如下: 其中:、为点P到原点直线与坐标轴x、y、z的夹角。 PROGRAM F751 F(a,b,c,r)=rSQRT(a*a+b*b+c*c) WRITE(*,*) 输入 x,y,z: READ(*,*) x,y,z DAF(x,y,z,x) DBF(x,y,z,y) DGF(x,y,z,z) WRITE(*,*) DA,DB,DG END,概述 定义 调用 说明 示例,第七讲 数组的使用及Fortran函数,7.5 语句函数/概述/示例,7.5 语句函数,例7.2已知角度A364327,B1524,C81654,计算 : Scos2A-4sinBtgC 角度Dnx1x2 x3的弧度转换公式: PROGRAM F91 p13.14159/180.0 A=p1*(36.0+43.0/60+27.0/3600.0) B=p1*(15.0+24.0/60) C=p1*(8.0+16.0/60+54.0/3600) S=COS(A)*2-4.0*SIN(B)*TAN(C) WRITE (*,10) A,B,C,S 10 FORMAT(A=,F10.7,B=,F10.7,C=,F10.7,/S=,F10.7) END,概述 定义 调用 说明 示例,第七讲 数组的使用及Fortran函数,7.6 外部函数子程序/概述,7.6 外部函数子程序,无法用一条语句来定义的函数,可以用一个单独的程序单位定义,它不属于调用函数语句所在的程序单位,因此称之为外部函数。 是用户自定义的函数子程序。所在程序的其他程序单位都可以调用它。,PROGRAM main INTEGER add PRINT*,add(5,3) END PROGRAM main FUNCTION add(m,n) INTEGER m,n,add add=m+n END FUNCTION add,FUNCTION add(m,n) INTEGER m,n,add add=m+n END FUNCTION add PROGRAM main INTEGER add INTEGER*,add(5,3) END PROGRAM main,概述 外部函数定义 外部函数说明 外部函数调用,第七讲 数组的使用及Fortran函数,7.6 外部函数子程序/定义,7.6 外部函数子程序,概述 外部函数定义 外部函数说明 外部函数调用,第七讲 数组的使用及Fortran函数,7.6 外部函数子程序/外部函数说明,关键字FUNCTION前面可指定内部数据类型,如:INTEGER、REAL、COMPLEX、CHARACTER或LOGICAL等。如果没指定,则按I-N规则或类型声明语句声明类型。 称为哑元表;无形参时圆括号也不能省略。形参可以是变量名、数组名或子程序名 函数体位于FUNCTION语句和END FUNCTION语句之间。 函数体有说明部分、执行部分。 当返回值只有一个时才能使用外部函数,并且外部函数名至少被赋值一次。 例:计算X=2.5时多项式值 P5(x)5.0x5+2.5x4+4.4x+3.5 P3(x)3.4x3+1.5x2+1.76x+3.5 调用计算 pnx(5,A,2.5) pnx(3,A,2.5),FUNCTION pnx(N,A,X) INTEGER N REAL A(1:N+1),X,pnx S=A(1) DO I=2,N+1 S=S*X+A(I) ENDDO pnx=S END FUNCTION,7.6 外部函数子程序,概述 外部函数定义 外部函数说明 外部函数调用,第七讲 数组的使用及Fortran函数,7.6 外部函数子程序/外部函数调用,调用格式要求同标准函数、语句函数。作为操作数用。 一般格式:F(a1,a2,an)F为函数名,ai为实在参数。 实在参数可是表达式、普通变量、下标变量、数组名、内部函数引用、外部函数引用以及外部函数名和子程序名等。 如果定义外部函数无形式参数,其引用形式为:F( )。 外部函数执行过程: 若实在参数为表达式,则先对表达式求值。 实在参数与相应的形式参数结合,将实参值传递给对应形参。 经过形实结合,形式参数获得了所需要的值,然后,立即执行内部函数体。 在执行函数体的过程中,若遇到RETURN语句或END FUNCTION语句,则控制返回到引用的地方,并代回所计算的函数值参加表达式的计算。(示例),7.6 外部函数子程序,概述 外部函数定义 外部函数说明 外部函数调用,第七讲 数组的使用及Fortran函数,概述 外部函数定义 外部函数说明 外部函数调用,7.6 外部函数子程序,7.6 外部函数子程序/调用/示例,PROGRAM F971 DIMENSION A(6),B(4) WRITE(*,*) 请输入A数组的6个元素和B数组的4个元素: READ(*,*)(A(I),I=1,6),(B(I),I=1,4) P5=pnx(5,A,2.5) P3=pnx(3,B,2.5) WRITE(*,10) 2.5,P5,2.5,P3 10 FORMAT(1X,P5(,F3.1,)=,F10.5,P3(,F3.1,)=,F10.5) END,FUNCTION pnx(N,A,X) INTEGER N REAL A(1:N+1),X,pnx S=A(1) DO I=2,N+1 S=S*X+A(I) ENDDO pnx=S END FUNCTION,输入数据: 5.0,2.5,0.0,0.0,4.4,3.5 3.4,1.5,1.76,3.5 输出结果: P5(2.5)= 600.43750 P3(2.5)= 70.40000,第七讲 数组的使用及Fortran函数,7.7 内部函数子程序/概述,7.7 内部函数子程序,内部函数子程序与外部函数子程序类似,只是在程序中的位置不同。 内部子程序是包含在程序 单元CONTAINS结构中用户 自定义的函数和子例行程 序。只有定义它们的程序 单元才能调用它们。,概述 内部函数示例1 内部函数示例2,PROGRAM main INTEGER add READ(*,*) add(5,3) CONTAINS FUNCTION add(m,n) INTEGER m,n,add add=m+n END FUNCTION add END PROGRAM main,第七讲 数组的使用及Fortran函数,7.7 内部函数子程序,7.7 内部子程序/内部函数定义/示例1,使用内部函数计算分段函数。 PROGRAM main READ*,x;PRINT*,f(x) CONTAINS FUNCTION f(y) IF (y0) THEN f=x*2+SQRT(SQRT(1+x) ELSEIF (y= =0) THEN f=0 ELSE f=x*3+SQRT(1-x) ENDIF END FUNCTION f END PROGRAM main,概述 内部函数示例1 内部函数示例2,第七讲 数组的使用及Fortran函数,7.7 内部函数子程序,7.7 内部子程序/内部函数定义/示例2,求解二元一次方程组。 计算:x=clb2c2b1 y=alc2a2c1 =alb2a2b2 编写内部函数del求解:x,y,参数I=1,求解x,I=2,求解y 设计算法,编写程序。 已知:二元一次方程组。 输入数据:1,1,3 输出结果:1.0 1.0 3.0 2,1,4 2.0 1.0 4.0 x10000000 y20000000,概述 内部函数示例1 内部函数示例2,第七讲 数组的使用及Fortran函数,7.7 内部函数子程序,7.7 内部子程序/内部函数定义/示例2/算法,求解二元一次方程组。 计算:x=clb2c2b1 y=alc2a2c1 =alb2a2b2 编写内部函数del求解:x,y,参数I=1,求解x,I=2,求解y 设计算法,编写程序。 已知:二元一次方程组。 输入数据:1,1,3 输出结果:1.0 1.0 3.0 2,1,4 2.0 1.0 4.0 x10000000 y20000000,概述 内部函数示例,函数框图,主程序框图,7.7 内部函数子程序,7.7 内部子程序/内部函数定义/示例2/程序,求解二元一次方程组。 计算:x=clb2c2b1 y=alc2a2c1 =alb2a2b2 编写内部函数del求解:x,y,参数I=1,求解x,I=2,求解y 设计算法,编写程序。 已知:二元一次方程组。 输入数据:1,1,3 输出结果:1.0 1.0 3.0 2,1,4 2.0 1.0 4.0 x10000000 y20000000,概述 内部函数示例,函数框图,主程序框图,FUNCTION del(D,I) INTEGER I REAL D(2,3) F(x1,x2,yl,y2)x1*y2-x2*yl D1F(D(1,1),D(2,1),D(1,2),D(2,2) IF (I= =1) THEN D2=F(D(1,3),D(2,3),D(1,2),D(2,2) ELSE D2=F(D(1,1),D(2,1),D(1,3),D(2,3) ENDIF delD2D1 END FUNCTION del,7.8 应用举例/例2,7.8 数组应用举例,例7.8.1已知MN矩阵A(如:M=3,N=4),求转置矩阵A以及它们的乘积。 A= 解:已知: MN矩阵A,二维数组,用RESHAPE函数赋初值。假定M=3,N=4。 求:转置矩阵A及矩阵乘积AA。 转置矩阵A与矩阵A的关系是: A(i,j)=A(j,i),i=1,2,M, j=1,2,N。 MN矩阵A与NM矩阵A相乘,结果为MM矩阵C,C与A与A关系是: C(i,j)= A(i,k)A(k,j) i=j=1,2,M 用二维整型数组A存放矩阵A,用二维整型数组B存放A的转置矩阵A,用一个静态整型数组C存放A与A的乘积矩阵C。 程序1, 程序2(用矩阵函数实现),矩阵函数: 输出结果:,第七讲 数组的使用及Fortran函数,7.8 应用举例/例2/程序1,7.8 数组应用举例,例8.12已知MN矩阵A(如:M=3,N=4),求转置矩阵A以及它们的乘积。 A= 解:已知: MN矩阵A,二维数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农户产权安全感与林地流转风险评估
- 优化钢铁生产流程与智能化设备应用
- 数智化背景下新闻学课程体系的优化与构建
- 提供心理支持与情绪调节增强就业创业信心
- 乡村振兴中的绿色农业与自然空间共生模式
- 创新型思维激发与自主创新项目实践相结合
- 促进网络安全生态合作形成共治共享模式
- 幼儿教育心理学试题及答案
- 滨湖学校测试题目及答案
- 高中三国演义知识竞赛题及答案
- 人教版数学一年级上册 前后上下左右专项练习题(试题)
- 门诊护士课件教学课件
- 合资投资谅解备忘录书
- 职务侵占罪培训
- 粮油作物种植与管理作业指导书
- 《预防未成年人犯罪》课件(图文)
- IT项目经理招聘笔试题及解答2025年
- DB65-T 4784-2024 冰川范围调查技术规范
- 地下室车库顶板行车、堆载、回顶方案
- 幼儿园礼仪小天使《借物品》教学课件
- 年产四万吨聚脂长丝工厂设计说明书
评论
0/150
提交评论