当前位置: 首页 > news >正文

趣味三角——第15章——傅里叶定理

                            第15章  傅里叶定理(Fourier’s Theorem)

Fourier, not being noble, could not enter the artillery,

although he was a second Newton.

(傅立叶出生并不高贵,因此按当时的惯例进不了炮兵部队,虽然他是第二个牛顿。)

—François Jean Dominique Arago

自两千多年前三角学问世以来,它已经走过了漫长的道路。但是有三个发展,比其他所有发展都更突出,从根本上改变了这个科目:Ptolemy的弦表,它将三角学转变为一门实用的计算科学;De Moivrep定理以及Euler公式 e^{ix} = cos(x)+isin(x) , Euler公式将三角学、代数学、以及分析学融合在了一起;以及Fourier定理,本书最后一章专门探讨这个定理

Jean Baptiste Joseph Fourier 于1768年3月21日出生在法国中北部的欧塞尔(Auxerre)。九岁时,他的父母双双去世。受家族中一些朋友的影响,傅里叶考入了本笃会(Benedictine order)开办的军事学校,在那里他表现出早期的数学天赋。法国有着培养伟大科学家的悠久传统他们也在军队中为国家服务勒内·笛卡尔(René Descartes,1596-1650 年),一位从军人转变为哲学家的人,他发明了解析几何(analytic geometry);加斯帕尔·蒙日(Gaspard Monge,1746-1818 年),他发展了画法几何(descriptive geometry),并于1792年成为海军陆战队(marines)部长;简· 维克托· 庞塞莱(Jean Victor Poncelet,1788-1867),他在1812年拿破仑(Napoleon)从莫斯科撤退后成为战俘时写下了他关于射影几何(projective geometry)的伟大著作;以及两个“Carnots”,一个是几何学家拉扎尔·尼古拉斯·玛格丽特·卡诺(Lazar Nicolas Marguerite Carnot,1753–1823),他成为法国最伟大的军事领袖之一,另一个是他的儿子物理学家尼古拉斯·莱昂纳德·萨迪·卡诺(Nicolas Léonard Sadi Carnot, 1796–1832),他作为军事工程师开始了他的军旅生涯,后来奠定了热力学的基础。而年轻的Fourier希望遵循传统成为一名炮兵军官。但由于他的社会阶层不许(他的父亲是一名裁缝),他只能在军校获得数学讲师职位。然而,这并没有阻止他参与公共生活:他在 1789 年积极支持法国大革命,后来因为恐怖事件的受害者辩护而被捕,勉强逃过断头台。最终,Fourier因其活动而获得奖励,并于1795年在著名的(prestigious)巴黎综合理工学院(École Polytechnique in Paris)获得教授职位,当时,拉格朗日(Lagrange)和蒙格(Monge)也在那里任教。

1798年拿破仑·波拿巴皇帝(Emperor)在埃及发动了伟大的军事行动。作为一个对艺术和科学有着广泛兴趣的人,拿破仑邀请了几位著名的学者加入他的行列,其中包括蒙格和傅立叶。傅里叶被任命为埃及南部总督,并以此身份组织了法国占领军的工作坊(workshops)。1801年法国败给英国人后,他返回家乡并成为格勒诺布尔(Grenoble)地区的行政长官(prefect)。他的行政职责包括监督道路建设和排水工程(drainage projects),所有这些他都以出色的能力执行。如果这还不够让他忙碌的话,他还被任命为埃及研究所的秘书,并于1809年完成了一部关于古埃及的重要著作<<Préface historique>>(历史序言)。

人们常常惊叹于 18 和 19 世纪许多学者的广泛活动。 就在Fourier履行其行政职责的同时,他正深入地从事他的数学研究。他在两个看似无关的领域工作:方程理论(the theory of functions)和数学物理学(mathematical physics)。在年仅16岁时,他就多项式的正根和负根的个数找到了笛卡尔符号规则的新证明。他的证明成为现代代数课本中的标准证明。他开始着手编写一本名为<<Analyze des équations déterminées>>(方程判定分析)的书,其中他预见了线性规划。然而,Fourier在完成这部作品之前就去世了(它由他的朋友路易斯·玛丽·亨利·纳维尔(Louis Marie Henri Navier)编辑出版,于1831年出版)。他还开创了量纲分析(dimensional analysis)——基于它们之间的量纲研究物理量之间的关系

但正是在数学物理学中,Fourier留下了他最伟大的印记。 他对热量从高温区域流向低温区域的方式特别感兴趣。牛顿已经研究过这个问题,并发现物体的冷却速度(温度下降)与其周围环境的温度差成正比。然而,牛顿冷却定律仅适用于温度的时间变化率,而不适用于它的空间变化率或梯度。后一个量取决于许多因素:物体的热导率、几何形状和边界上的初始温度分布。要处理这个问题,必须使用连续统的分析工具,特别是偏微分方程)(partial differential equations)(见第 53 页)。Fourier表明,要求解这样一个方程,必须将初始温度分布表示为无穷多个正弦项和余弦项的总和——三角级数(trigonometric series)或Fourier级数(Fourier series)。Fourier早在1807年就开始研究这个主题,后来在他的主要著作<< Theorié analytique de la chaleur>>(Analytic theory of heat,热分析理论,1822年)中进一步扩展,成为19世纪一些伟大的关于数学物理论文的模型。

Fourier于1830年5月16日在巴黎不幸从楼梯上坠落身亡。 他的几幅画像留存了下来。一尊1831年创作的半身像在二战中被摧毁。第二座半身像于1849 年在他的家乡竖立,被德国占领者熔化,他们将这种金属用作武器;但欧塞尔市长得知灾难迫在眉睫的消息,并设法抢救了半身像的两个浅浮雕,幸运的是它们幸免于难。1844年,考古学家 Jacques Joseph Champollion-Figeac(序言中提到的埃及学家(Egyptologist)Champollion的兄弟)撰写了Fourier的传记(biography),题为<<Fourier, Napoleon et les cent jours>>(傅立叶、拿破仑等人)。[1]

Fourier在他的工作中,不仅受到纯数学考量思想的指引,而且受到他对物理原理的全面透彻(sound)掌握的指引。他的座右铭(motto)是:“对自然的深入研究是数学发现最丰富的源泉(Profound study of nature is the most fertile source of mathematical discoveries)。” 这招致了Lagrange、Poisson和Biot等纯粹主义者的尖锐批评,他们攻击他称其“缺乏严谨性”;然而,有人怀疑政治动机和个人竞争也起了一定作用。具有讽刺意味的是,Fourier在数学物理学方面的工作后来导致了所有数学创作中最纯粹的一个——康托尔(Cantor)的集合论(set theory)。

Fourier定理背后的基本思想非常简单。我们知道,函数cos(x)和sin(x)都具有周期2π,并且在一般情况下,函数cos(nx)和sin(nx)具有周期 \frac{2\pi}{n}。但是,假如我们组成这些函数的任意线性组合(linear combination)——即,用常量乘以每一项再将其结果相加——这个新构成的函数仍然具有周期2π(图92)。这将我们引向下面的观察现象:

--------------图92 sin(x), sin(2x)/2 以及它们的和的函数图像--------------------

f(x)为任意具有周期2π的具有“合理行为”的函数;即,满足对于所有在其定义域中的x ,都有f(x + 2π) = f(x)。[2] 我们可以构造“有限(finite)”和的表达式:

S_n (x) = \frac{a_0}{2} + a_1cos(x) + a_2cos(2x) + a_3cos(3x) + ... + a_ncos(nx) + b_1sin(x) + b_2sin(2x) + b_3sin(3x) + ... + b_nsin(nx) =\frac{a_0}{2}+\sum_{m=1}^{n}[a_{m} cos(mx)+b_{m}sin(mx)] ,

-------------------------------------------------------------------------(1)

其中,系数 a_m 和 b_m 是实数(a_0 为什么要除以2在后面读者会明白);S(x)的下标n表明,这个和取决于正弦项和余弦项出现的数量。既然 S_n(x) 是cos(mx)和sin(mx)(m = 0, 1, 2, 3,......)各项之和,那么它就是具有周期为2π的x的函数。显然,这种函数的特征取决于系数a_m 和 b_m (以及n)。我们现在问:确定这些系数使其求以下和是否可行:(1) 对大的n,在区间-π < x < π 近似已知函数f(x)是否可行?换句话说,我们是否可以确定a_m 和 b_m ,使其对于区间-π < x < π上的每一个点,都满足下列近似表达式?

f(x) \approx \frac{a_0}{2}+\prod_{m=1}^{n}[a_{m}cos(mx)+b_{m}sin(mx)],

---------------------------------------------------------------------------(2)

显然,我们要求这个近似函数应该随着n的增加而改变,并且随着n->∞它应该变成一个等式;即,

\lim_{n->\infty}S_{n}(x) = f(x) 。假如这确实可行,我们就说级数(2)收敛(converges)于函数f(x),并且可以写作

f(x) = \frac{a_0}{2}+\prod_{m=1}^{n}[a_{m}cos(mx)+b_{m}sin(mx)] 。

---------------------------------------------------------------------------(3)

在接下来,我们假设级数(2)确实可以在区间-π < x < π上收敛于函数f(x),[3]  我们将展示如何确定这个系数。[4] 我们以下面三个积分公式为出发点

 称为正交关系(orthogonality relations)(这些公式可以通过对每个被积函数使用积公式,然后分别对每个项进行积分来证明;注意,当mn都为零的时候,第二个公式的积分是1,因此我们得到

\int_{-\pi}^{\pi}dx = 2\pi 。

为了求得m = 0,1,2,...时的系数 a_m ,我们用cos(mx)乘以等式(3)并在区间-π < x < π上逐项积分。[5] 鉴于其正交关系,右边的所有项除了项  (a_{m}cos(mx)).cos(mx) = a_{m} cos^{2} (mx) = a_{m}\frac{1+cos(2m)x}{2} 之外,其它项都为0,其从-π 到 π的积分为 \pi a_{m} 。因此,我们得到

a_{m} = \frac{1}{\pi}\int_{-\pi}^{\pi} f(x)cos(mx)dx,m = 1,2,3, ... 。--------------------------------------(4)

为了求得 a_0 ,我们重复这个步骤;但是,既然我们现在有m = 0,用cos(0x) = 1乘以等式(3),则等式(3)保持不变,因此,我们只是将它在-π 到 π积分;再次地,右边的所有项除了 (\frac{a_0}{2})\int_{-\pi}^{\pi}dx = (\frac{a_0}{2})2\pi = \pi a_0  。因此,我们得到

a_{0} = \frac{1}{\pi} \int_{-\pi}^{-\pi}f(x)dx 。-------------------------------------------------------------------------(5)

注意,等式(5)是等式(4)在m = 0时的情况;这就是为什么在等式(3)中选择  \frac{a_0}{2} 作为常量项的原因。假如我们选择 a_{0} 作为常量项,等式的右边将必须除以2。

最后,为了求得 b_m,我们用sin(mx)乘以等式(3)并再次在区间-π < x < π上逐项积分;结果是

b_m = \frac{1}{\pi}\int_{-\pi}^{\pi}sin(mx)dx  , m = 1, 2 , 3,..., 。--------------------------------------------------(6)

等式(4)到等式(6)是著名的Euler公式(没错,另外两个以公式也以Euler的名字命名!),它们允许我们找到傅里叶级数的每个系数。当然,取决于f(x)的性质,实际的积分可以或不可以基于初等函数进行;对于后一种情况,我们必须求助于数值积分。

现在,我们将这个例程应用到一些简单的函数。考虑函数f(x) = x,视为位于区间-π < x < π之上的周期函数;其曲线图具有图93所示的锯齿形状(saw-tooth)。因为这个函数是一个奇函数(即,f(-x) = - f(x)),第一个欧拉方程中的被积函数是奇函数;由于积分极限关于原点对称,因此对于所有 m = 0, 1 ,2 , ... 所得积分将为零,因此,所有的 a_0 项是0,我们这个级数将仅由正弦项组成,对于 b_m 我们有

b_m = \frac{1}{\pi}\int_{-\pi}^{\pi}xsin(mx)dx = \frac{2}{\pi}\int_{0}^{\pi}xsin(max)dx 

分部积分法(integration by parts)导出

b_m =\frac{2{(-1)}^{m+1}}{m} 。

因此,我们有

f(x) = 2(\frac{sin(x)}{1} - \frac{sin(2x)}{2}+ \frac{sin(3x)}{3} -+ ...) 。-------------------------------------------(7)

图 94 显示了该系列的前四个部分和; 我们清楚地看到正弦波是如何在±π附近堆积的,但是对于区间的每个点,包括在±处的不连续点,该级数最终收敛到图93的锯齿图并不那么明显。事实上,在Fourier时代,平滑正弦波的无限和可能会收敛于一个其图形一点也不平滑的函数这一事实遭到了极大的怀疑。[6] 但2000年前的Zeno悖论也是如此!当谈及无限过程时,我们总是可以期待一些惊喜即将到来。

 --------------图93 周期函数f(x) = x(-π < x < π)的函数图像--------------------

 

-----图94 周期函数f(x) = x(-π < x < π)的Fourier展开式的前4项和的函数图像-----

因为等式(7)对于任意x值都成立,我们不妨代入一些具体的值。代入x = π/2,我们得到

\frac{\pi}{2} = 2(1 - \frac{1}{3} + \frac{1}{5} - \frac{1}{7} +- ...)  。

等式两边分别除以2便得到Gregory-Leibniz级数(第159页)。代入x = π/4,经过一些步骤之后,我们得到

\frac{\pi \sqrt{2}}{4} = 2(1 + \frac{1}{3} - \frac{1}{5} - \frac{1}{7} ++-- ...) ,

一个鲜为人知的公式,将奇数整数的倒数(reciprocals)与 π 和 \sqrt{2} 连接起来(请注意,该级数的右侧与Gregory-Leibniz级数具有相同的项,但它们的符号每两项出现交替)。

对偶数函数 f(x) = x^{2} (再次地,视为区间 -π < x < π 上的周期函数),经过两次分部积分后,我们得到一个仅由余弦项组成的Fourier级数:

f(x) = (\frac{\pi}{3})^{2}- 4(\frac{cos(x)}{1^2} -\frac{cos(2x)}{2^2} + \frac{cos(3x)}{3^2} -+ ... )  。----------------------------------(8)

代入 x = π并化简得到结果

\frac{\pi^2}{6} = \frac{1}{1^2} + \frac{1}{2^2} + \frac{1}{3^2} + ... 。

这是Euler在 1734 年以完全不同且不严格的方式发现的著名公式(见第12章)。类似的方法可以得到很多其他的级数,如图95所示。

---------------------图95 一些初等函数的Fourier展开式------------------------

我们已经为周期为 的函数制定了Fourier定理公式,但可以通过代入 x’ = \frac{2\pi}{P}轻易地调整为具有任意周期P的函数。则使得根据角频率(angular frequency)ω(omega)(定义为\frac{2\pi}{P}来公式化Fourier定理就变得更为方便。则,Fourier定理表达的数学思想是任意周期函数都可以写成角频率为ω, 2ω, 3ω, 等等的无穷多项正弦函数和余弦函数的和。这些频率中的最小频率(即,ω)是基础频频率或基频(fundamental frequency),而其更高的倍频称为谐波(harmonics)。

当然,“harmonic”这个词来自音乐,因此,我们暂时离题(digress)一下,进入到声学的世界。乐音(a musical sound)——音调(a tone)——是由物质体(如小提琴弦(a violin string)或长笛的气柱(the air column of a flute))有规律的(regular)、周期性的振动(periodic vibrations)产生的这些有规律的振动会在耳朵中产生一种音高感(a sense of pitch)(pitch——音高,音符的高低度),可以将其写为乐谱上的音符(musical staff)相比之下,非音乐性的声音——噪音(noises)——是不规则、随机振动的结果,它们通常缺乏音高感。那么,音乐就是周期性振动的范畴(realm)。[7]

乐音的音高由其振动频率决定频率越高,音调越高。例如,音符(note) C(五线谱上的“中央C”)对应264赫兹(hertz)的频率,或周期每秒;音符 A 高于 C,达到440赫兹,音符C’ 高于C一个八度音阶(octave),达到528赫兹。[8]音程(Musical intervals)对应频率比率(ratios):一个八度音阶对应的比率为 2:1,五度音阶对应3:2,四度音阶对应4:33,依此类推(名称“八度音阶”、“五度音阶”和“四度音阶”源自这些音程在音阶(musical scale)中的位置)。

 

-----------------------------图96 一段音乐音调的声波图------------------------

 

这个最简单的乐音(musical tone)是纯音(pure tone);它是由正弦波产生的,或者——用一个物理学术语来说——由简单的谐振动(simple harmonic motion)(注:谐,用另一个字解释,就是“詥(hé)”,言合(说话合得来,合众意,合众意那自然就顺,就和气,表达的就是这个意思),就是和洽(和睦融洽);体现在声音中,就是悦耳的声音,相对于读噪声而言。)产生的。[9] 纯音可以由电子合成器(electronic synthesizer)产生,但所有乐器产生的自然音调的波形图(wave profiles)虽然是周期性的,但相当复杂(图 96)。然而,根据Fourier定理这些音调总是可以分解成它们的简单正弦分量——它们的分音(partial tones)。那么,音乐音调是复合音调(compound tones),其组成正弦波是基频(最低)频率的谐波(这些波的频率总是基频率的整数倍)。[10]

乐音的谐波不仅仅是数学抽象:训练有素的耳朵实际上可以听到它们事实上,正是这些谐波赋予了音调特有的“色彩(color)”——它的音乐质感(musical texture)。(风琴的)小号(trumpet)之所以能发出美妙的声音,是因为它含有丰富的和声(rich harmonic content); 长笛的声音谐波差,因此“色彩圆润(mellow)(图97)。每种乐器都有其特有的声谱(acoustic spectrum)——谐波成分的特征。令人惊奇的是,人耳可以将复合音分解成其组成的纯音,并分别听到每个纯音,就像棱镜将白光分解成彩虹色(“频谱(spectrum)”的名称由此而来)。 耳朵实际上是一个Fourier分析仪。[11]

------------------------图97 小号(左)和长笛(右)的声谱波形图-------------------

在19世纪,这些想法是新奇的:科学家和音乐家发现很难相信一个音调实际上是其所有谐波分量的代数和。伟大的德国物理学家和生理学家赫尔曼·路德维希·费迪南德·冯·亥姆霍兹(Herman Ludwig Ferdinand von Helmholtz, 1821-1894)通过使用谐振器(Resonator)证明了分音(partial tones)的存在——谐振器是各种尺寸的小玻璃球,每个都能增强复合音中的一个特定频率(图98)。一系列这样的谐振器形成了一个类似于人耳的原始Fourier分析仪。Helmholtz也做了相反的事情:通过组合不同频率和振幅的不同简单音调,他能够模仿实际乐器的声音,预见了现代电子合成器。

 

------------------------图98 谐振器(Resonator)--------------------------------

当我们在乐谱中写下谐波集 1,2,3,...,我们得到图 99 所示的音符序列,在音乐理论中,它起着至关重要的作用:正是从这个序列中得出了基本的音程。[12] 这个序列应该与数学级数 1 + 1/2 + 1/3 + ...同名,这并非巧合:后者的项正好是前面项的谐波周期。此外,级数1 + 1/2 + 1/3 + ...的每一项恰好是其前后两项的谐波均值(harmonic mean) (即前后两项的倒数的算术平均值的倒数)[13]。这些只是“谐波”一词在数学中多次出现的两个例子,反映了人类思想的这两个伟大创造之间的密切联系

 

------------------------图99 谐波级数(The harmonic series)---------------------

当然,Fourier定理的重要性不仅限于音乐它是所有周期现象的核心。 Fourier自己将定理扩展到非周期函数,将它们视为周期函数的极限情况,其周期接近无穷大。然后,Fourier级数被表示在所有频率上的正弦波的连续分布的积分所取代。事实证明,这个想法对本世纪初量子力学的发展具有极其重要的意义。Fourier积分的数学比级数复杂但其核心是构成所有三角学支柱的两个相同函数正弦和余弦

注释和资料来源:

1. 没有Fourier的英语版传记。在Eric Temple Bell 的著作<<Men of Mathematics>>(数学人)(Harmondsworth,U.K.: Penguin Books, 1965年)的第1卷第12章有一段Fourier的简短生平描写。本章中Fourier的传记描写部分基于Jerome R. Ravetz和I. Grattan-Guiness在DSB(Dictionary of Scientific Biography)中关于Fourier的文章。

2. 通过“合理的行为”指的是函数f(x)在区间-π < x < π上是分段平滑的(sectionally smooth),即,除了可能在有限数量的有限跳跃不连续处之外,它在那里是连续且可微的。在跳跃不连续点处,我们定义f(x)为 \frac{f(x^-)+f(x^+)}{2} 

,也就是说,f(x)的值之间的平均值就在所讨论的点的左侧和右侧。关于完整的讨论,参见Richard Courant的著作<< Differential and Integral Calculus>>(微积分)( London: Blackie & Son, 1956年版)之第1卷第9章。

3. 在注释 2 规定的条件下保证收敛。

4. 这种情况可以类比于函数f(x)以幂级数 \sum_{i=0}^{n}a_ix^i : 我们必须确定系数,以便其和将逼近收敛区间中每个点的函数。

5. 在注释 2 中提到的条件下,逐项积分是允许的。

6. 对于与此问题相关的有趣历史事件(episode),参见Paul J. Nahin所著的<<The Science of Radio>>(无线电科学)( Woodbury, N.Y.:  American Institute of Physics, 1995)第85-86页。

7. 然而,在我们这个时代,这种传统的区别几乎消失了:见证古典音乐鉴赏家和摇滚乐迷之间关于什么是“真正的”音乐的永无止境的争论。

8. 这些频率符合称为音乐音高(concert pitch)的国际标准,其中A = 440 赫兹。科学音高(Scientific pitch)基于C = 256赫兹,其优点是 C的所有八度音阶都对应于2的幂;在这个音调中,A = 426:7 赫兹。

9. 术语纯音(pure tone)”指的是正弦和余弦振动这是因为人耳对音调的相对相位不敏感;即,sin(ωt)和sin(ωt + ε)的声音对耳朵来讲听起来感觉都一样。

10. 严格来说,泛音(overtones)(音调中存在任何一组较高频)与谐音(harmonics)(其频率是基频的整数倍)之间存在区别。大多数乐器都会产生谐波泛音,但有些乐器(尤其是鼓和打击乐器)具有非谐波成分,导致它们的音高不太明确(有杂音)。

11. 相比之下,眼睛没有这种能力:当蓝光和黄光叠加时,结果显示为绿色。

12. 然而,存在两种不同的比例,9:8 和 10:9,因为当旋律从一个音阶移调(转换)到另一个音阶时,整个音调会造成困难。出于这个原因,所有现代乐器都根据等律音阶调音,其中八度音阶由十二个相等的半音组成,每个半音具有频率比 \sqrt[12]{2}:1 。 这个数的比率值约为1.059,正好略为小于语调半音16:15 = 1.066。参见我的文章“What is there so Mathematical about Music(音乐中有什么数学?)”,数学教师报(Mathematics Teacher),1979年9月,第415-422页。

13. 两个正整数ab的谐波均值定义为 \frac{2ab}{a+b} , 从这个公式可以推出,\frac{1}{H }= (\frac{1}{a} + \frac{1}{b})/2 ,即,谐波均值的倒数是ab各自倒数的算术均值。例如,\frac{1}{2} 和 \frac{1}{4}  的谐波均值是 \frac{1}{3} 。

14. 傅里叶级数也被推广到具有类似于正弦和余弦的正交关系的非三角函数。有关详细信息,请参阅有关高等应用数学的任何教材。

内容来源:

<<Trigonometric Delights>> 作者:Eli Maor

相关文章:

趣味三角——第15章——傅里叶定理

第15章 傅里叶定理(Fourier’s Theorem) Fourier, not being noble, could not enter the artillery, although he was a second Newton. (傅立叶出生并不高贵&#xff0c;因此按当时的惯例进不了炮兵部队&#xff0c;虽然他是第二个牛顿。) —Franois Jean Dominique Arag…...

市场营销的核心是什么?

之所以写下「市场营销的核心是什么&#xff1f;」这篇文章&#xff0c;是因为这几天刚读完了《经理人参阅&#xff1a;市场营销》这本书。作为一个有着近十年工作经验的市场营销从业人员&#xff0c;看完这本书也产生了很多新的想法&#xff0c;也想记录一下&#xff0c;遂成此…...

c/cpp - 多线程/进程 多进程

c/cpp - 多线程/进程 多进程多进程创建多进程进程等待多进程 宏观上 两个进程完全并发的 父子进程具有互相独立的进程空间 父进程结束&#xff0c;不影响子进程的执行 创建多进程 #include <sys/types.h> #include <unistd.h> #include <stdio.h>int main()…...

MySQL必知必会 | 存储过程、游标、触发器

使用存储过程 存储过程 简单来说就是为了以后的使用而保存的一条或多条MySQL语句的集合。 我觉得就是封装了一组sql语句 为什么需要存储过程&#xff08;简单来说就是&#xff0c;简单、安全、高性能 通过把处理封装在容易使用的单元中&#xff0c;简化复杂操作所有开发人员…...

优化Facebook广告ROI的数据驱动方法:从投放到运营

“投放广告并不是最终的目的&#xff0c;关键在于如何最大程度地利用数据驱动的方法来提高广告投放的回报率&#xff08;ROI&#xff09;”Facebook广告是现代数字营销中最为常见和重要的广告形式之一。但是&#xff0c;要让Facebook广告真正发挥作用&#xff0c;需要通过数据驱…...

动态规划入门经典问题讲解

最近开始接触动态规划问题&#xff0c;以下浅谈&#xff08;或回顾&#xff09;一下这些问题的求解过程。解题思路对于动态规划问题&#xff0c;由于最终问题的求解需要以同类子问题作为基础&#xff0c;故需要定义一个dp数组&#xff08;一维或二维&#xff09;来记录问题求解…...

快速入门深度学习1(用时1h)

速通《动手学深度学习》1写在最前面0.内容与结构1.深度学习简介1.1 问题引入1.2 思路&#xff1a;逆向思考1.3 跳过1.4 特点1.5 小结2.预备知识&#xff08;MXNet版本&#xff0c;学错了。。。。&#xff09;2.1 获取和运行本书的代码2.2 数据操作2.2.1 略过2.2.2 小结2.3 自动…...

PaddleOCR关键信息抽取(KIE)的训练(SER训练和RE训练)错误汇总

1.SER训练报错: SystemError: (Fatal) Blocking queue is killed because the data reader raises an exception 1.1.问题描述 在执行训练任务的时候报错 单卡训练 python3 tools/train.py -c train_data/my_data/ser_vi_layoutxlm_xfund_zh.yml错误信息如下&#xff1a; T…...

信息收集之搜索引擎

Google Hacking 也可以用百度&#xff0c;不过谷歌的搜索引擎更强大 site 功能&#xff1a;搜索指定域名的网页内容&#xff0c;可以用来搜索子域名、跟此域名相关的内容 示例&#xff1a; site:zhihu.com 搜索跟zhihu.com相关的网页“web安全” site:zhihu.com 搜索zhihu…...

Flutter(四)布局类组件

目录布局类组件简介布局原理与约束线性布局&#xff08;Row和Column&#xff09;弹性布局流式布局&#xff08;Wrap、Flow&#xff09;层叠布局&#xff08;Stack、Positioned&#xff09;对齐与相对定位&#xff08;Align&#xff09;Align和Stack对比Center组件LayoutBuilder…...

【黑马】Java基础从入门到起飞目录合集

视频链接&#xff1a; Java入门到起飞&#xff08;上部&#xff09;&#xff1a;BV17F411T7AoJava入门到起飞&#xff08;下部&#xff09;&#xff1a;BV1yW4y1Y7Ms 学习时间&#xff1a; 2023/02/01 —— 2023/03/09断断续续的学习&#xff0c;历时大概37天&#xff0c;完结撒…...

PMP考前冲刺3.10 | 2023新征程,一举拿证

题目1-2&#xff1a;1.在最近的一次耗时四周的迭代中&#xff0c;赫克托尔所在的敏捷团队刚完成了10 个用户故事点的开发、测试和发布&#xff0c;那么团队的速度是&#xff1f;A. 10B. 4C. 5D.402.产品负责人奥佩&#xff0c;倾向于在短周期内看到工作产品的新版本&#xff0c…...

JavaScript Math常用方法

math是JavaScript的一个内置对象&#xff0c;它提供了一些数学属性和方法&#xff0c;可以对数字进行计算&#xff08;用于Number类型&#xff09;。 math和其他全局对象不同&#xff0c;它不是一个构造器&#xff0c;math的所有方法和属性都是静态的&#xff0c;直接使用并传入…...

【C++】模板进阶

文章目录一、非类型模板参数1、非类型模板参数2、C11 中的 array 类二、模板的特化1、模板特化的概念2、函数模板特化3、类模板特化3.1 全特化3.2 偏特化三、模板的分离编译四、模板总结一、非类型模板参数 1、非类型模板参数 模板参数分为类型形参与非类型形参&#xff0c;类…...

三板斧解决leetcode的链表题

在《波奇学单链表》中我们提到单链表的两个特点单向性。头节点尾节点的特殊性导致分类讨论的情况。如何看单链表&#xff1f;让我们简化成下图cur表示当前节点&#xff0c;下图表示cur移动&#xff0c;圆圈表示值用哨兵卫节点(新的头节点)和把尾节点看成NULL来把头尾节点一般化…...

全生命周期的云原生安全框架

本博客地址&#xff1a;https://security.blog.csdn.net/article/details/129423036 一、全生命周期的云原生安全框架 如图所示&#xff1a; 二、框架说明 在上图中&#xff0c;我们从两个维度描述各个安全机制&#xff0c;横轴是开发和运营阶段&#xff0c;细分为编码、测试…...

【本地网站上线】ubuntu搭建web站点,并内网穿透发布公网访问

【本地网站上线】ubuntu搭建web站点&#xff0c;并内网穿透发布公网访问前言1. 本地环境服务搭建2. 局域网测试访问3. 内网穿透3.1 ubuntu本地安装cpolar3.2 创建隧道3.3 测试公网访问4. 配置固定二级子域名4.1 保留一个二级子域名4.2 配置二级子域名4.3 测试访问公网固定二级子…...

电脑怎么重装系统?教你轻松掌握这些方法

重新安装计算机系统有两种原因&#xff1a;一种是计算机系统可以正常使用&#xff0c;但是电脑比较卡&#xff0c;为了提高它的运行速度&#xff0c;所以想要通过重新安装系统来解决这个问题;另一种原因是计算机系统文件丢失&#xff0c;系统出现蓝屏&#xff0c;或者黑屏的情况…...

leetcode-每日一题-2379(简单,字符串)

久违的简单题......给你一个长度为 n 下标从 0 开始的字符串 blocks &#xff0c;blocks[i] 要么是 W 要么是 B &#xff0c;表示第 i 块的颜色。字符 W 和 B 分别表示白色和黑色。给你一个整数 k &#xff0c;表示想要 连续 黑色块的数目。每一次操作中&#xff0c;你可以选择…...

SLF4J日志框架在项目中使用

介绍 SLF4J全称“Simple Logging Facade for Java”&#xff0c;作为各种日志框架的简单门面。例如&#xff1a; java.util.logging、logback 、 reload4j等。只需要切换日志框架的jar包依赖就可以切换日志框架。 SLF4J支持的日志框架包含如下&#xff1a; log4j&#xff1a…...

Spark MLlib 模型训练

Spark MLlib 模型训练决策树随机森林GBDTSpark MLlib 开发框架下 : 监督学习 : 回归 (Regression) , 分类 (Classification) , 协同过滤 (Collaborative Filtering)非监督学习 : 聚类 (Clustering) 、频繁项集 (Frequency Patterns) 例子分类 : 算法分类 : 算法分类算法子分类…...

Python中变量的作用域精讲

文章目录前言一、局部变量二、全局变量前言 变量的作用域是指程序代码能够访问该变量的区域&#xff0c;如果超出该区域&#xff0c;再访问时就会出现错误。在程序中&#xff0c;一般会根据变量的 “有效范围” 将变量分为 “全局变量” 和 “局部变量”。 一、局部变量 局部变…...

数据仓库工程师的工作职责的相关介绍

1. BI 开发工程师的工作内容是什么&#xff1f; BI开发工程师&#xff08;Business Intelligence Developer&#xff09;是负责设计和开发企业级BI系统的专业人员。他们的主要工作是从多个数据源中提取、转换、加载和分析数据&#xff0c;以支持企业决策。以下是BI开发工程师的…...

ESP UART 介绍

1 UART 介绍 UART 是一种以字符为导向的通用数据链&#xff0c;可以实现设备间的通信。异步传输的意思是不需要在发送数据上添加时钟信息。这也要求发送端和接收端的速率、停止位、奇偶校验位等都要相同&#xff0c;通信才能成功。 1.1 UART 通信协议 一个典型的 UART 帧开始…...

第十三届蓝桥杯省赛Python大学B组复盘

目录 一、试题B&#xff1a;寻找整数 1、题目描述 2、我的想法 3、官方题解 4、另解 二、试题E&#xff1a;蜂巢 1、题目描述 2、我的想法 3、官方题解 三、试题F&#xff1a;消除游戏 1、题目描述 2、我的想法&#xff08;AC掉58.3%&#xff0c;剩下全超时&#x…...

linux入门---vim的配置

这里写目录标题预备知识如何配置vimvim一键配置预备知识 在配置vim之前大家首先得知道一件事就是vim的配置是一人一份的&#xff0c;每个用户配置的vim都是自己的vim&#xff0c;不会影响到其他人&#xff0c;比如说用户xbb配置的vim是不会影响到用户wj的&#xff0c;虽然不同…...

Python简写操作(for、if简写、匿名函数)

Python简写操作&#xff08;for、if简写、匿名函数&#xff09;1. for 简写1.1 一层 for 循环1.2 两层 for 循环2. if 简写3. for 与 if 的结合简写4. 匿名函数 lambda1. for 简写 举个例子&#xff1a; y [1, 2, 3, 4, 5, 6] result [(i * 2) for i in y] print(result)# …...

毕业设计常用模块之温湿度模块DHT11模块使用

DHT11是一款可以测量温度数据和湿度数据的传感器 产品特点 暖通空调、除湿器、农业、冷链仓储、测试及检测设备、消费品、汽车、自动控制、数据记录器、气 象站、家电、湿度调节器、医疗、其他相关湿度检测控制 外形尺寸 第3管脚&#xff1a;NC 是没有用的 典型电路 通信方式…...

Cadence Allegro 导出Design Rules Net Shorts Check(DRC)Report报告详解

⏪《上一篇》   🏡《上级目录》   ⏩《下一篇》 目录 1,概述2,Design Rules Net Shorts Check(DRC)Report作用3,Design Rules Net Shorts Check(DRC)Report示例4,Design Rules Net Shorts Check(DRC)Report导出方法4.1,方法14.2,方法2...

第 46 届世界技能大赛浙江省选拔赛“网络安全“项目C模块任务书

第46届世界技能大赛浙江省选拔赛"网络安全"项目C模块&#xff08;夺旗行动&#xff08;CTF&#xff09;挑战&#xff09;第46届世界技能大赛浙江省选拔赛"网络安全"项目C模块第一部分 WEB第二部分 CRYPTO第三部分 REVERSE第四部分 MISC第五部分 PWN第46届世…...

C++:详解C++11 线程(一):MingGW 各版本区别及安装说明

MingGW 各版本区别一&#xff1a;MinGW、MinGW-w64 简介二&#xff1a;MinGW 各版本参数说明三&#xff1a;下载解压一&#xff1a;MinGW、MinGW-w64 简介 MinGW&#xff08;全称为 Minimalist GNU for Windows&#xff09;&#xff0c;它实际上是将经典的开源 C 语言编译器 G…...

第十二章 ArrayList和 LinkedList的区别

ArrayList&#xff1a;基于动态数组&#xff08;自动扩容&#xff09;&#xff0c;连续内存存储&#xff0c;由于底层是数组&#xff0c;适合使用下标进行访问&#xff0c;但扩容一直都是数组的缺点&#xff0c;所以使用尾插法进行扩容可以有效提高扩容效率。还有就是创建Array…...

案例06-复用思想的接口和SQL

目录 一&#xff1a;背景介绍 二&#xff1a;思路&方案 三&#xff1a;过程 1.Controller层接口的复用 2.Mapper层sql语句的复用 四&#xff1a;总结 一&#xff1a;背景介绍 我们在开发项目的过程中非常容易出现的一种现象就是用什么我就直接写什么&#xff0c;就像我…...

【Java学习笔记】17.Java 日期时间(2)

前言 本章继续介绍Java的日期时间。 Calendar类 我们现在已经能够格式化并创建一个日期对象了&#xff0c;但是我们如何才能设置和获取日期数据的特定部分呢&#xff0c;比如说小时&#xff0c;日&#xff0c;或者分钟? 我们又如何在日期的这些部分加上或者减去值呢? 答案…...

【学习Docker(八)】Docker Canal的安装与卸载

座右铭&#xff1a;《坚持有效输出&#xff0c;创造价值无限》 最近想了解下canal&#xff0c;自行搭建并完成数据同步。经过了几天的踩坑之旅&#xff0c;今天终于搭建成功了。 环境&#xff1a;canalv1.1.5、MySQL8.0、JDK1.8 安装MySQL 创建存放目录 mkdir /docker-localm…...

python的django框架从入门到熟练【保姆式教学】第三篇

在前两篇博客中&#xff0c;我们介绍了Django框架的模型层和数据库迁移功能。本篇博客将重点介绍Django的视图层&#xff08;View&#xff09;&#xff0c;并讲解如何创建视图函数和URL路由。 视图层&#xff08;View&#xff09; Django的视图层是Django应用程序的另一个核心…...

Open3D(C++) Ransac拟合球体(详细过程版)

目录 一、算法原理1、计算流程2、参考文献二、代码实现三、结果展示一、算法原理 1、计算流程 空间球方程: ( x − a ) 2 + ( y − b...

Antlr Tool与antlr runtime的版本一致性问题

1. 意外的问题 在学习Antlr4的visitor模式时&#xff0c;使用IDEA的Antlr插件完成了Hello.g4文件的编译&#xff0c;指定的package为com.sunrise.hello 使用visitor模式遍历语法解析树&#xff0c;遍历过程中打印hello语句 public class HelloVisitorImpl extends HelloBaseVi…...

嵌入式中CAN测试自动化方法分析

can的基础知识 CAN是什么? CAN 是 Controller Area Network 的缩写(以下称为 CAN),是 ISO*1 国际标准化的串行通信协议在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统被开发了出来。由于这些系统之间通信所用的数据类…...

基于c++、opencv、cuda、Visual Studio编程

一、前言 opencv自带的支持的cuda的函数不少,但是不一定够用,而且已经支持的函数有些还不是十分的完善。所以更多的时候还需要编写自己的kernel以进行加速自定义处理。如果基于opencv进行计算机视觉相关开发工作,那么熟悉c++、opencv、cuda编程是避免不了的环节。 二、准备工…...

MATLAB——DFT(离散傅里叶变换)

题目1&#xff1a; 已知有限长序列x(n)为&#xff1a; x(n)[0,1,2,3,4,5,6,7,8,9]&#xff0c;求x(n)的DFT和IDFT。要求 1&#xff09;画出序列傅里叶变换对应的|X(k)|和arg[X(k)]图形。 2&#xff09;画出原信号与傅里叶逆变换IDFT[X(k)]图形进行比较。 知识点&#xff1a; DF…...

高端Zynq ultrascale+使用GTH回环测试 提供2套工程源码和技术支持

这目录1、前言2、GTH 高速收发器介绍GTH 高速收发器结构参考时钟的选择和分配GTH 发送端GTH 接收端3、vivado工程详解4、上板调试验证5、福利&#xff1a;工程代码的获取1、前言 Xilinx系列FPGA内置高速串行收发器&#xff0c;配有可配置的IP方便用户调用&#xff0c;按照速度…...

入门(Createing a scene)

这一部分将对three.js来做一个简要的介绍 首先将开始搭建一个场景&#xff0c;其中包含一个正在旋转的立方体 梦开始的地方 在开始使用threeJS之前&#xff0c;我们需要创建一个HTML文件来显示它&#xff08;将下列HTML代码保存为你电脑上的一个HTML文件然后在你的浏览器中打…...

Unity入门精要03---透明效果

本节知识架构 1.渲染顺序与渲染队列 如果采用了透明度混合即要是实现半透明效果&#xff0c;那么就要关闭深度写入&#xff0c;那么此时渲染顺序就会变得非常非常重要&#xff0c;不然会出现不正确的遮挡效果。具体的分析可见书中解释 一句话概括就是因为没有写入深度&#xf…...

一文解码:如何在人工智能热潮下实现产业“智”变

近期由ChatGPT有关人工智能的话题引发了全民热议&#xff0c;在这股子浪潮下&#xff0c;讨论最多的话题就是ChatGPT的出现会为我们带来怎样的技术变革&#xff1f;是否会改变我们目前的生产方式&#xff1f;对于未来人工智能技术的发展&#xff0c;我们该如何客观看待&#xf…...

webshell管理工具-菜刀的管理操作

什么是webshell Webshell是一种运行在Web服务器上的脚本程序&#xff0c;通常由黑客使用来绕过服务器安全措施和获取对受攻击服务器的控制权。Webshell通常是通过利用Web应用程序中的漏洞或者弱密码等安全问题而被植入到服务器上的。 一旦Webshell被植入到服务器上&#xff0…...

dl----算法常识100例

1.depthwise卷积&&Pointwise卷积 depthwise与pointwise卷积又被称为Depthwise Separable Convolution&#xff0c;与常规卷积不同的是此卷积极大地减少了参数数量&#xff0c;同时保持了模型地精度&#xff0c;depthwise操作是先进行二维平面上地操作&#xff0c;然后利…...

京东百亿补贴,不要把方向搞偏了

出品 | 何玺 排版 | 叶媛 我吐槽来了。 3月6日0时&#xff0c;京东正式加入百亿补贴战局。那么&#xff0c;京东百亿补贴力度如何&#xff1f;用户又有什么反馈&#xff1f;我们一起来看看。 01 京东百亿补贴实测 京东百亿补贴上线的第一天&#xff0c;玺哥就亲自进行了体…...

Java中的static与final关键字

一、static关键字 static修饰位置表示含义变量表示这是一个类变量&#xff0c;类加载时分配在堆中方法静态方法&#xff0c;不依赖于对象可直接通过类标识访问代码块静态代码块&#xff0c;只在类加载初始化阶段时执行一次内部类静态嵌套类&#xff0c;表示只是放在外部类的文…...

开学新装备 - 学生党是否该入手 MacBook

学生党是否该入手 macbook 这个问题&#xff0c;相信许多人在许多社区都有看到过类似讨论。只不过&#xff0c;许多讨论都掺杂了信仰、智商税、不懂、不熟悉未来需求等各种因素&#xff0c;导致内容空洞价值不大。这篇文章&#xff0c;抛开了所有非理性因素&#xff0c;详细的告…...