数组的使用及Fortran函数.ppt

上传人:小飞机 文档编号:5986265 上传时间:2023-09-11 格式:PPT 页数:44 大小:3.14MB
返回 下载 相关 举报
数组的使用及Fortran函数.ppt_第1页
第1页 / 共44页
数组的使用及Fortran函数.ppt_第2页
第2页 / 共44页
数组的使用及Fortran函数.ppt_第3页
第3页 / 共44页
数组的使用及Fortran函数.ppt_第4页
第4页 / 共44页
数组的使用及Fortran函数.ppt_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《数组的使用及Fortran函数.ppt》由会员分享,可在线阅读,更多相关《数组的使用及Fortran函数.ppt(44页珍藏版)》请在三一办公上搜索。

1、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

2、(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 数组引用方法,数组引用要保证下标值落在下界和上界之间,否则将产生严

3、重后果。使用内部函数(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 数组引用方法,I

4、NTEGER arr(-5:3,100:110,4)INTEGER(1)ub(3),ub1,ub2,ub3,lb(3),lb1,lb2,lb3ub1=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维的下标上界是:,ub1WRITE(*,*)函数UBOUND(arr,DIM=2)数组arr第2维的下标上界

5、是:,ub2WRITE(*,*)函数UBOUND(arr,3)求数组arr第3维的下标上界是:,ub3WRITE(*,*)函数UBOUND(arr)求数组arr所有维的下标上界依次是:,ubWRITE(*,*)函数LBOUND(arr,1)求数组arr第1维的下标下界是:,lb1WRITE(*,*)函数LBOUND(arr,DIM=2)数组arr第2维的下标下界是:,lb2WRITE(*,*)函数LBOUND(arr,3)求数组arr第3维的下标下界是:,lb3WRITE(*,*)函数LBOUND(arr)求数组arr所有维的下标下界依次是:,lbEND(运行结果),概述 格式 检测 示例,第

6、七讲 数组的使用及Fortran函数,7.1 数组引用方法/示例/运行结果,7.1 数组元素引用,INTEGER arr(-5:3,100:110,4)INTEGER(1)ub(3),ub1,ub2,ub3,lb(3),lb1,lb2,lb3ub1=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维的下标

7、上界是:,ub1WRITE(*,*)函数UBOUND(arr,DIM=2)数组arr第2维的下标上界是:,ub2WRITE(*,*)函数UBOUND(arr,3)求数组arr第3维的下标上界是:,ub3WRITE(*,*)函数UBOUND(arr)求数组arr所有维的下标上界依次是:,ubWRITE(*,*)函数LBOUND(arr,1)求数组arr第1维的下标下界是:,lb1WRITE(*,*)函数LBOUND(arr,DIM=2)数组arr第2维的下标下界是:,lb2WRITE(*,*)函数LBOUND(arr,3)求数组arr第3维的下标下界是:,lb3WRITE(*,*)函数LBOUN

8、D(arr)求数组arr所有维的下标下界依次是:,lbEND(运行结果),运行程序,输出结果为:函数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(ar

9、r)求数组arr所有维的下标下界依次是:-5 100 1,概述 格式 检测 示例,第七讲 数组的使用及Fortran函数,7.2 数组的逻辑结构和存储结构/概述,7.2 数组的逻辑结构和存储结构,数组是复杂数据结构,有逻辑结构和存储结构两大特征。数组逻辑结构:数组是一个与计算机实现无关的抽象的数据表。数组存储结构:数组是一个与计算机实现有关的具体的数据表(线性表),连续存储在若干存储单元中。对于一维数组,其逻辑结构是一个线性表。存储结构是一个线性表。对于二维数组,其逻辑结构是矩阵,存储结构是一个线性表。对于三维数组,其逻辑结构是三维实体,存储结构是一个线性表。,概述 一维 二维 三维 位置,第

10、七讲 数组的使用及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)。逻辑结构、存储结

11、构、相互关系:,概述 一维 二维 三维 位置,第七讲 数组的使用及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:

12、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)ENDDOEN

13、DDODO i=1,3!输出全部元素 DO j=1,4 WRITE(*,*)arr(i,j)ENDDOENDDO注意:每行输入输出一个元素值,(示例),第七讲 数组的使用及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(*,*)(

14、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数组

15、元素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 个矩阵数据,每行输入

16、一个数据:12.5 23.8 54.2 78.992.4 45.3 0 24.484.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 7

17、2.8 78.9 24.4 43.2,第七讲 数组的使用及Fortran函数,7.4 Fortran子程序概述/概述,使用顺序结构、选择结构和循环结构可设计和编写一些比较复杂的程序。使用函数和子例行程序能编写编写结构清晰、层次分明、短小简洁的好程序,是编写高质量、高水平、高效率程序的有效手段。通常在设计和编写程序时,会遇到以下三种情况:同一程序内多次出现相同或相似的运算或处理过程。不同程序内多次出现相同或相似的运算或处理过程。程序复杂。在设计和编写程序时,不同程序中不同部位会多次出现相同或相似的运算或处理过程(程序代码)。,概述 说明 标准函数,7.4 Fortran 子程序概述,PROGRA

18、M 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)

19、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语句调用执行的子程序。每类子程序又划分为标准子程序和用户自定义子程序。用户自定义子程序又划分为内部子程序、外部子程序和

20、模块子程序。FORTRAN 90的子程序分类如图7-1所示。,概述 说明 标准函数,第七讲 数组的使用及Fortran函数,概述 说明 标准函数,7.4 Fortran子程序概述/说明/分类图示,FORTRAN 90子程序,也称过程,划分为两类:函数和子例行程序。函数是指产生一个运算结果且通过操作数调用执行的子程序。子例行程序是指可产生多个处理结果且通过CALL语句调用执行的子程序。每类子程序又划分为标准子程序和用户自定义子程序。用户自定义子程序又划分为内部子程序、外部子程序和模块子程序。FORTRAN 90的子程序分类如图7-1所示。,7.4 Fortran 子程序概述,第七讲 数组的使用及

21、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。,使用标准函数需要注意以下几点:标准函数对变元的个数和类型有明确的规定和要求。要求有一个变

22、元,如函数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,变元类型为实型,而函数值类型为整型。对于“弧度”和“角度”单位,使用不同的三角函数。函数变元必须写在函数名后括号内,变元可是常数、变量或表达

23、式,少数标准函数变元要求变量,如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问题。PROG

24、RAM 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 语句函数,调用一般形式为:语句函数名()说明:同语句函数定义语句中的语句函数名相同。为实在参数或实参,其个数、次序和类型应与定义语句中形式参数一致。实在参数之间用逗号分隔。实参可

25、是常数、变量、数组元素、函数名、表达式。当调用语句函数时,其执行过程如下:首先计算实参表达式的值;将实参值赋予对应的形参,即形实参结合用被赋值的形参对语句函数定义语句中的表达式进行求值运算;将运算后的表达式值转换为函数名类型,并将其按函数值返回到调用位置。,概述 定义 调用 说明 示例,第七讲 数组的使用及Fortran函数,7.5 语句函数/说明,7.5 语句函数,使用语句函数的一些规定:一个语句函数只能在一行内定义。如果太长,可续行书写。语句函数定义语句是非执行语句。语句函数只有一个函数返回值,函数名与函数值符合赋值规则。定义语句函数,右端表达式中可调用已定义语句函数或标准函数,但不能调用

26、该语句函数自己,即不能递归调用。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)的方向弦,其计算公式如下:其中:

27、、为点P到原点直线与坐标轴x、y、z的夹角。PROGRAM F751F(a,b,c,r)=rSQRT(a*a+b*b+c*c)WRITE(*,*)输入 x,y,z:READ(*,*)x,y,zDAF(x,y,z,x)DBF(x,y,z,y)DGF(x,y,z,z)WRITE(*,*)DA,DB,DGEND,概述 定义 调用 说明 示例,第七讲 数组的使用及Fortran函数,7.5 语句函数/概述/示例,7.5 语句函数,例7.2已知角度A364327,B1524,C81654,计算:Scos2A-4sinBtgC角度Dnx1x2 x3的弧度转换公式:PROGRAM F91p13.14159/

28、180.0A=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,S10 FORMAT(A=,F10.7,B=,F10.7,C=,F10.7,/S=,F10.7)END,概述 定义 调用 说明 示例,第七讲 数组的使用及Fortran函数,7.6 外部函数子程序/概述,7.6 外部函数子程序,无法用一条语句来定义的函数,可以用一个单独的程序单位定义,它不属于调用函数语句所在的程序单位,因此称之为外部函数。是

29、用户自定义的函数子程序。所在程序的其他程序单位都可以调用它。,PROGRAM mainINTEGER add PRINT*,add(5,3)END PROGRAM mainFUNCTION add(m,n)INTEGER m,n,add add=m+nEND FUNCTION add,FUNCTION add(m,n)INTEGER m,n,add add=m+nEND FUNCTION addPROGRAM mainINTEGER add INTEGER*,add(5,3)END PROGRAM main,概述 外部函数定义 外部函数说明 外部函数调用,第七讲 数组的使用及Fortran函数

30、,7.6 外部函数子程序/定义,7.6 外部函数子程序,概述 外部函数定义 外部函数说明 外部函数调用,第七讲 数组的使用及Fortran函数,7.6 外部函数子程序/外部函数说明,关键字FUNCTION前面可指定内部数据类型,如:INTEGER、REAL、COMPLEX、CHARACTER或LOGICAL等。如果没指定,则按I-N规则或类型声明语句声明类型。称为哑元表;无形参时圆括号也不能省略。形参可以是变量名、数组名或子程序名函数体位于FUNCTION语句和END FUNCTION语句之间。函数体有说明部分、执行部分。当返回值只有一个时才能使用外部函数,并且外部函数名至少被赋值一次。例:计

31、算X=2.5时多项式值 P5(x)5.0 x5+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 NREAL A(1:N+1),X,pnxS=A(1)DO I=2,N+1 S=S*X+A(I)ENDDOpnx=S END FUNCTION,7.6 外部函数子程序,概述 外部函数定义 外部函数说明 外部函数调用,第七讲 数组的使用及Fortran函数,7.6 外部函数子程序/外部函数调用,调用格式要求同标准函数、语句函数。作为操作数用。一般格式:F(

32、a1,a2,an)F为函数名,ai为实在参数。实在参数可是表达式、普通变量、下标变量、数组名、内部函数引用、外部函数引用以及外部函数名和子程序名等。如果定义外部函数无形式参数,其引用形式为:F()。外部函数执行过程:若实在参数为表达式,则先对表达式求值。实在参数与相应的形式参数结合,将实参值传递给对应形参。经过形实结合,形式参数获得了所需要的值,然后,立即执行内部函数体。在执行函数体的过程中,若遇到RETURN语句或END FUNCTION语句,则控制返回到引用的地方,并代回所计算的函数值参加表达式的计算。(示例),7.6 外部函数子程序,概述 外部函数定义 外部函数说明 外部函数调用,第七讲

33、 数组的使用及Fortran函数,概述 外部函数定义 外部函数说明 外部函数调用,7.6 外部函数子程序,7.6 外部函数子程序/调用/示例,PROGRAM F971DIMENSION 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,P310 FORMAT(1X,P5(,F3.1,)=,F10.5,P3(,F3.1,)=,F10.5)END,FUNCTION pnx(N,A,X)INTEGER

34、 NREAL A(1:N+1),X,pnxS=A(1)DO I=2,N+1 S=S*X+A(I)ENDDOpnx=SEND FUNCTION,输入数据:5.0,2.5,0.0,0.0,4.4,3.53.4,1.5,1.76,3.5输出结果:P5(2.5)=600.43750 P3(2.5)=70.40000,第七讲 数组的使用及Fortran函数,7.7 内部函数子程序/概述,7.7 内部函数子程序,内部函数子程序与外部函数子程序类似,只是在程序中的位置不同。内部子程序是包含在程序 单元CONTAINS结构中用户 自定义的函数和子例行程 序。只有定义它们的程序 单元才能调用它们。,概述 内部函

35、数示例1内部函数示例2,PROGRAM mainINTEGER addREAD(*,*)add(5,3)CONTAINSFUNCTION add(m,n)INTEGER m,n,add add=m+nEND FUNCTION addEND 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

36、f=0 ELSE f=x*3+SQRT(1-x)ENDIF END FUNCTION fEND 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,概述

37、内部函数示例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/程序,求解二元一次方

38、程组。计算: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(

39、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)

40、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,二维数组,用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

41、,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/程序2,7.8 数组应用举例,例8.12已知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

42、=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函数,第七讲 数组的使用及Fortran函数,7.8 应用举例/例2/矩阵函数,7.8 数组应用举例,例8.12已知MN矩阵A(如:M=3,N=4),求转置矩阵A以及它们的乘积。A=解:已知:MN矩阵A,二维数组,用RESHAPE函数赋初值。假定M=3,N=4。求:

43、转置矩阵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(用矩阵函数实现),矩阵函数:输出结果:,7.8 应用举例/例2/输出结果,7.8 数组应用举例,例7.8.1已知MN矩阵A(如:M=3,N=4),求转置矩阵A以及它们的乘积。A=解:已知:MN矩阵A,二维数组,用RESHAPE函数赋初值。假

44、定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.9 作业1,作业,第七讲 数组的使用及Fortran函数,7.9 作业2,教材291页习题九第3题,作业,第七讲 数组的使用及Fortran函数,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号