fortran 佛说如是甚深经典。我从昔来所得慧眼。未曾得闻如是之经。
手气不错
Article

008.complex_复数类型

2026年5月13日入门级

复数类型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
(3+4i)2=9+24i+16i2=9+24i16=7+24i(3+4i)^2 = 9+24i+16i^2 = 9+24i-16 = -7+24i

知识点

  • complex是fortran语言中的复数类型,用来保存由实部和虚部组成的数值变量。
  • 在fortran中复数字面量被写作(实部,虚部),例如complexNumber=(3.0,4.0)来表示数学中的3+4i,输出时也同样按(实部,虚部)的形式显示。
  • complex类型可直接参与乘法运算,fortran会按复数乘法规则计算,不需要手动展开实部和虚部。
  • 另外print * 是默认输出格式,空格与小数位数由编译器决定;本例重点在数值含义,不关心输出格式。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注