复数类型complex用来保存由实部和虚部组成的数值变量,适合表示波函数、分子轨道系数、地震波复振幅、岩石复电阻率、介电常数、复数根、复平面坐标、特征值、势流中的复势、扰动波的复振幅、非定常气动力频域响应、波传播频域解、色散关系、交流电流、阻抗、复振幅、复模态、复刚度、复模量等。
本文代码
program complexDemo
implicit none
complex :: imaginaryUnit ! complex类型:表示虚数单位i
complex :: minusOne ! complex类型:保存i*i的结果
complex :: complexNumber ! complex类型:表示一个普通复数3+4i
complex :: complexSquare ! complex类型:保存复数平方结果
imaginaryUnit=(0.0,1.0) ! 复数字面量(real,imag),表示0+1i。
minusOne=imaginaryUnit*imaginaryUnit ! 经典关系:i*i=-1。
complexNumber=(3.0,4.0) ! 表示数学中的3+4i。
complexSquare=complexNumber*complexNumber ! 复数乘法,计算(3+4i)^2。
print *,"complex复数类型:"
print *,"imaginaryUnit=",imaginaryUnit
print *,"minusOne=",minusOne
print *,"complexNumber=",complexNumber
print *,"complexSquare=",complexSquare
end program complexDemo
编译与运行
(base) hong@hongdeMacBook-Pro 008.complex % gfortran exampleComplex.f90
(base) hong@hongdeMacBook-Pro 008.complex % ./a.out
complex复数类型:
imaginaryUnit= (0.00000000,1.00000000)
minusOne= (-1.00000000,0.00000000)
complexNumber= (3.00000000,4.00000000)
complexSquare= (-7.00000000,24.0000000)
(base) hong@hongdeMacBook-Pro 008.complex %
运行分析
- imaginaryUnit=(0.00000000,1.00000000),表示变量imaginaryUnit的值是复数0+1i也就是数学中的i。
- minusOne=(-1.00000000,0.00000000),表示imaginaryUnit*imaginaryUnit的结果是-1+0i,对应数学中i*i=-1。
- complexNumber=(3.00000000,4.00000000),表示复数3+4i,fortran输出复数时格式为(实部,虚部)。
- complexSquare=(-7.00000000,24.0000000),表示(3+4i)^2,结果是-7+24i。
知识点
- complex是fortran语言中的复数类型,用来保存由实部和虚部组成的数值变量。
- 在fortran中复数字面量被写作(实部,虚部),例如complexNumber=(3.0,4.0)来表示数学中的3+4i,输出时也同样按(实部,虚部)的形式显示。
- complex类型可直接参与乘法运算,fortran会按复数乘法规则计算,不需要手动展开实部和虚部。
- 另外print * 是默认输出格式,空格与小数位数由编译器决定;本例重点在数值含义,不关心输出格式。