绪论
0.1 计算声学
声,就是声音,通常指人耳能够感觉到的空气振动。广义地说,声音是各种弹性介质中的机械波,包括人耳不能感知的超声波和次声波。
声和我们的关系非常密切。语音和音乐伴随着我们的生活,噪声令人讨厌,甚至危害健康。大自然中充满了各种各样的声音,如风雨雷声、各种动物的叫声、江河湖海的水声等。随着科学技术的发展,音响的录放处理、噪声控制、超声治疗和诊断、工业超声检测和加工、水下声呐、语音处理和通信等在人类生活中的作用越来越大。
研究声音的性质及其发生、传播、接收、与介质相互作用的规律的学科就是声学,它是物理学的一个分支,是物理学中历史*悠久而当前仍然十分活跃的一个学科。
声学的研究方法大致可以分为三类。其中,传统的方法是实验和理论分析。实验是声学研究的*基本方式,它通过对自然和人为的声学现象的观察、控制、测量、记录和分析,总结出声学的规律,应用到不同的领域。理论分析是根据物理学的基本原理,对声学现象作深入分析,建立数学方程,应用数学方法求得声场的解析解。在声学理论研究中*常用的数学方法是求解偏微分方程,由于对有些困难的问题无法得到解析解,理论研究中发展了许多近似方法。理论分析得到的这些结果使我们对声学现象的认识更加深刻,更加系统。理论与实验方法结合,形成了传统的声学理论体系。
但是,在许多的实际问题中,声波传播介质是复杂的,传播路径、目标等的形状是不规则的。对于这样的声学问题,理论分析常常得不到解析解和近似解,实验研究耗时耗力,难以得到规律性的结论,这是传统声学长期面临的困难。随着计算机和计算科学的发展,人们试图采用数值计算方法来研究这样的复杂问题。近年来,计算技术发展很快。几十年前,算盘和对数计算尺等机械式计算器还是主要的计算工具 (图 0.1),那时的数值计算研究水平非常低,基本上是理论研究结果的少量计算例子,只作为理论研究的附属,不能成为一个重要的方面。现在计算机性能日新月异,许多以前难以想象的计算,今天在个人计算机 (PC) 上几分钟就可以完成。同时计算方法和软件开发也在不断进步,促进了数值计算的飞速发展。一方面,可以对理论结果做大量的计算,得到直观形象的定量结果,总结规律, 加深对理论结果的理解;另一方面,可以计算没有解析结果的复杂问题,为实际问题提供依据。利用数值计算研究的问题越来越多,当前数值计算已经应用到声学研究的各个领域,成为连接声学理论研究和实际应用的桥梁。数值计算的采用对计算方法提出了许多新的问题,新的方法不断出现,有关的计算理论不断发展,逐渐成为一个新兴的分支学科——计算声学。
图0.1 曾经广泛使用的机械式计算器:算盘(a)和对数计算尺(b)及其计算原理(c)
0.2 本书的内容和重点
用数值计算的方法研究声学,需要考虑一些问题。第一,经过几十年的发展,计算方法本身已经成为一门庞大的独立分支学科,内容繁多,许多算法已经有了成熟的软件。从事计算声学的研究,主要考虑的是如何把声学问题变换为计算机能够处理的形式,再选用合适的计算方法和软件解决问题。第二,在实际科研工作中运用数值计算的一个重要而比较困难的问题是对计算结果正确性的判断。算法设计中总有许多近似,这些近似是否合理,牵涉到对研究的声学问题和采用的近似假设是否有足够的认识,这个问题需要在长期的研究过程中不断考虑和积累。第三,在运用算法和程序编写的过程中总会有许多错误,许多软件提供了检查和纠错的功能,但是一般只能查出比较低级的语法错误。检查程序的正确性有一些常用的方法,例如,不同方法的计算结果的对比,对有已知结果的简单问题进行计算。但这些方法也不能完全解决问题,只能靠长期研究积累经验。在分析结果的正确性时不放过任何疑点,查找出错误并分析出原因,往往会大大提高运用计算方法的水平。第四,应用中的另一个重要问题是对结果的分析,如何从计算结果中提取有用的物理规律,提出新的研究问题,也是反映研究水平的一个标志,这方面的分析必须与理论分析和实验研究紧密结合,才能得到好的效果。
考虑这些问题不但需要深入分析声学问题,而且要掌握各种算法的原理、性能和误差,这些都是计算声学课程的主要内容。随着各种计算软件的发展,计算声学研究的主要任务不再是编写程序,因此在课程中不深入介绍各种算法的具体编程细节。希望通过课堂学习和实际问题的计算,同学们能了解计算声学的研究现状,基本掌握利用数值计算研究声学问题的一般思路和方法,为今后的科研工作打好基础。
本书介绍的算法大致可以分为两大类。第一类是以理论声学中得到的解析解为基础发展起来的计算软件和方法,本书前3章介绍这一类算法。这部分内容一般不归入计算声学的范围,但是它们在实际科研工作中很重要,其他理论教材一般也不作深入的分析,因此本书编入了这部分内容。第二类是后续几章介绍的比较通用的算法,如有限差分、有限元、边界元、射线跟踪和格子型算法等。*后简单介绍非线性声学的一些计算例子。
0.3 计算软件的选择
计算声学需要各种计算软件,首先是实现基本数学运算的软件。这些运算包括四则运算、逻辑计算、线性和非线性方程的数值求解、行列式计算、矩阵特征值和特征矢量计算、傅里叶变换、特殊函数计算等。过去几十年曾经流行过许多这类软件,目前,运用*广的软件是 Matlab。它的应用范围非常广泛,涵盖了上面列举的所有计算问题,还具有符号计算的功能。它能产生形式多样的图形,满足各种需要;效率高、性能好;操作简便,可以产生和运行脚本文件 (后缀为 m),也可以通过软件界面以交互方式运行;具有很好的开放性,可以用它进一步开发专用的软件,其本身带有的各种工具箱就是这样的软件,网上有许多软件也是基于 Matlab 开发的。
使用Matlab软件时要特别注意充分发挥它的功能,特别是矩阵运算的特点。优化程序不仅可以简化算法,还能显著地提高运算效率。
Matlab不是免费的。针对这个问题,有人开发了能运行Matlab脚本文件的免费软件。其中运用比较广泛的是Octave软件,它的官方网站是
这个网站提供了 Octave 软件的各种信息,并可下载软件。Octave 软件虽然可以运行 Matlab 的脚本文件,但有时候效率稍低。
在有些场合不便使用 Matlab 软件,例如,在特定硬件平台上开发的系统,这时就要使用其他的软件,本书的例子都是以 Matlab 脚本的形式给出的,但是讨论的计算方法问题是各种计算软件共有的。
有了完成基本运算的软件,还需要针对研究的问题编写或选用专用的软件。随着计算技术的发展,越来越多的场合需要选择已有的软件来进行计算,选择软件*重要的途径是网络。通过网络的搜索引擎可以发现许多软件。有些软件是需要购买的,还有一些是免费的,可以在一定条件下使用。有的软件还提供源程序,可以二次开发。通过文献也可以找到软件,许多文献介绍研究结果时都会说明使用的软件。另外通过科研人员之间的交流也可以得到软件的信息。下面以 Field II 软件为例,介绍运用已有软件的基本步骤。
例 Field II软件
Field II是丹麦学者 Jensen 等研发的一个针对超声诊断应用的超声声场模拟系统。Field II 软件在国际超声界得到了广泛的应用和信任。Field II 可以通过下列网站下载:
下载和使用 Field II 都是免费的,但是在发表研究结果时必须按照使用手册的要求引用 Jensen 的相关文献,并说明这些结果是用 Field II 计算得到的。
医学超声诊断用于人体内许多器官的检查,针对不同的诊断要求,有许多不同的仪器和工作模式。各种不同的诊断模式都包括三个步骤。首先,由仪器控制的超声波探头向人体内部待查的部位辐射超声波,称为入射波。其次,入射波在人体内传播会遇到各种器官的界面和性质不均匀的介质,于是发生散射 (反射),产生散射波,散射波的性质与人体组织性质有关,携带了人体内部健康状况的信息。*后,散射波传到体表,再被超声波探头接收转换成电信号,经过处理形成超声图像,供医生分析诊断。Field II 能够模拟辐射、散射和接收三个过程,产生超声诊断的仿真图像。
Field II是用C语言编写的,以Matlab函数的形式给出,需要在Matlab平台上运行。Field II软件附带两个 PDF 格式的说明文件,一个介绍超声诊断的基本过程和仿真计算的基本原理,这对用户了解软件的计算方法和性能很重要。另一个是软件的使用手册,给出了如何使用 Field II函数 (function) 的详细信息,用户可以根据需要使用这些函数计算,也可以用这些函数编制自己的 Matlab 程序。但是网站和手册并没有给出这些函数的具体文本,因此 Field II不是一个完全开源的软件。
Field II的函数可以分为三大类。第一类共 7 个函数,利用它们可以建立运行软件的初始环境和调试等。其中,field_init是初始化函数,每次应用 Field II时必须首先调用。第二类共30个函数,用于建立发射和接收换能器的数据结构。第三类共6个函数,用于声场计算。使用 Field II 就是按照规定在 Matlab环境下调用这些函数和Matlab本身的函数。Field II下载网站上还有一些程序的例子。用户可以下载这些例子,对照说明书阅读、运行这些程序并分析计算结果。还可以改变程序的一些参数和调用的函数,观察计算结果的变化。这些试用的过程对了解Field II很有帮助。
上面介绍了Field II软件的大致情况,也是网络上许多软件的基本情况,如果我们今后要把自己编写的程序分享给大家,也可以参考这些做法。
复习题
1. 说明计算声学在声学研究中的作用。
2. 从第1章开始,会附有一些程序,请选择一些在计算机上运行。尝试对程序和一些参数做一些改变,观察和分析结果的变化。
第1章 直角坐标系中的角谱方法
本章介绍角谱方法,角谱可以看作是频谱的推广,与傅里叶变换有着密切的关系,因此我们先回顾一下傅里叶变换和频谱的概念,并特别仔细地分析一下与角谱方法有关的傅里叶变换的一些性质。
1.1 傅里叶变换和频谱
1.1.1 傅里叶级数和傅里叶变换
根据傅里叶级数的理论,周期为T的函数p (t) 可以表示为傅里叶级数
(1.2)
式 (1.1) 中的每一项都是简谐函数,第n项的频率是,角频率ω=2πf。
作为一个例子,考虑图 1.1 所示的间距为T的δ脉冲串
(1.3)
图1.1 δ脉冲串
展开