龙空技术网

一个社会人的微积分思维训练:如何求二维平面上一段曲线的长度?

关山乐2023 3361

前言:

现时大家对“c语言求长方形面积的函数解法代码”可能比较关心,大家都需要剖析一些“c语言求长方形面积的函数解法代码”的相关内容。那么小编也在网摘上搜集了一些对于“c语言求长方形面积的函数解法代码””的相关知识,希望姐妹们能喜欢,姐妹们一起来了解一下吧!

还记得大学里学习过的微积分吗?

微积分其实是一种包含着非常深刻哲学思想的思维方法。也是一种形而上学的逻辑思维与我们所能感知到的世界的联系方式。是用形而上学的方式来解构世界万物的方法论体现。

我们常说,人生的道路是曲折的。这段曲折的道路也是一段曲线。

很多人在面对人生的这段曲线的时候,都会有一种无力感,感觉毫无方向性和目的性,只能随着外物的摆布在人生的曲线上起起伏伏,却总也看不清前路的方向和目标。

我在以前的文章里常说,提高思维的维度,往往是解决问题的关键。而如何将高维度思维与低维度的实际结合起来,则是关键中的关键。

而微积分的思想,就为这种高维度思维与低维度实际的结合提供一个非常好的范例。

下图是一个非常简单在二维坐标系中的f(x)=x^2的函数曲线。如果我们想知道a点到b点的曲线长度,那么对于没有学习过微积分的人来说,几乎就是一个无法解答的问题。

想象一下,如果你的思维依然停留在在平面上用标尺一段段的去测量然后相加得出一个近似值,这种行为是不是很像你在要完成你的某个人生目标的时候,却找不到前进的路径,只能靠着近似的直觉,去一点点的靠近。

但是这个过程枯燥而漫长,甚至看不到终点,而且要想更加接近目标,只能付出更加多的机械式的劳动,极少有人能坚持下去。

如果你偷懒,测量的次数很少,那你离目标的距离就会非常远。

但是,如果你学习过微积分的话,就会知道求解这段距离的长度其实非常简单。

因为这段距离完全可以转换为某个函数G(X)的两个值G(b)与G(a)的减法运算。

也就是这段距离L=G(b)-G(a)。

但是最困难的就是如何转换。

在这里我们首先要用到的就是微分的思想。

如上图所示:二维平面中任何一段曲线的长度可以看成无数个小直角三角形斜边的长度相加,我们想象将一段曲线分割成N段。每一段曲线的长度dl都可以近似为一个直角三角形的斜边长度dl=sqrt(dx^2+dm^2)

而上面每段小斜边长度的计算公式中:dx与dm 所表达的意思都是参数发生变化后根据参数方程所导致的每个坐标产生的微小变化。dl则表示这两个坐标轴上微小的长度增量组成的直角三角形的微小斜边长度。

有了这个微小斜边长度的表达式我们就可以来做出一个关于这个曲线总长度的积分表达式:

符号∫,是一个积分符号,其代表的是一个非常抽象的概念:在a到b的区间内,对每一份无限小长度的dl进行相加。

这个概念是极度抽象的,因为对于我们的直觉来说,无数个无限小相加应该还是无限小。为了解释这种逻辑直觉的缪差,我们需要用图形想象(图形逼近的抽象思维)来让我们的大脑根据图形重新建立关于积分的概念。

学习过圆周率计算的同学,都知道割圆术。我们不断等分一个圆,其每个扇形所组成的图案就越来越接近一个矩形。

那么关于这个曲线距离,我们也可以假设有一条与这段曲线相同长度的直线,我们要做的就是将曲线不断的切割成小段,然后每段相连后,将一端与直线的一端固定在一起放置在这条直线上。随着切割分数的不断增加,这些条被切割后重新相连的曲线,与直线将越来越贴合,另外一端的两个端点也将不断地接近。

这样,一条二维平面曲线的长度,就可以转换为一个一维坐标上一条直线的长度问题。

能做出这种想象的朋友们,我们接下来就可以做下一个推论:

由于每一段的近似长度dl,是可以利用函数关系严格进行计算的。所以再将问题映射到一维坐标轴的时候,也必然可以找出一个与之产生某种映射的函数。

这是数学逻辑上的必然性。

现在我们要做的就是如何推导出这个函数。在这里,我们就要用到非常形而上学的思维逻辑了,直到今天我们也无法知道当年的牛顿是如何想到要用这种办法来解决问题的。

因为这种办法根本不可能从实际生活经验中得到任何启发。

这种想法在正常人看来,或许只能是来自不可思议的灵感或者莫名的神启。牛顿将距离积分表达式的右侧表达式做了一次乘法运算,而且是在常人看来毫无意义乘了一个1

但这个1,牛顿是用dx/dx来表达的。于是表达式变成了这样:

再次利用幂运算进行拆解重构,就开始有了神奇的变换:

最终得到的表达式为:

也就是说,微小直角三角形的斜边长度,可以用这个公式来表达。

这个表达式从几何上来说,就是直角三角形斜边长度的计算公式C^2=A^2+B^2。

最终我们得到了这段距离的表达式:

问题到这里后,我们又面临着两个问题:

第一个是dm/dx是否存在着一个固定逻辑的函数表达式的问题。

第二个则是如何进行这个积分运算的问题。

我们必须先解决第一个问题。

而为了解答这个问题,我们就要来介绍微积分中一个非常重要的基础概念——导数。

所谓的导数,其几何概念,在二维平面上,可以理解为曲线上某个点对其上一个点变化趋势的大小。

其定义可以解释为:极微小的参数值改变量与其所导致的函数值改变量,后者与前者的比值。

其定义表达式为:函数F(X)的导数为 f’(x)=[F(x+dx)-F(x)]/dx;其中dx趋向于无穷小。其中的[F(x+dx)-F(x)]也可以表达为dF(X)。

对于二维平面上的直线来说,其任意一点的变化趋势都是一个常数,所以变化趋势也就变成了固定数值的直线斜率。

所以我们看到对于刚刚我们得到的曲线长度表达式中的dm/dx,就是原函数的导数。

那么怎么求原函数的导数呢?从导数的定义就可以看出,就是要求两个增量的比值在增量趋向于无穷小时候的极限,表达式如下(其中的f'(x)即为函数f(x)的导数):

所以,我们找到我们最初的函数来求一下这个函数y=x^2的导数:

其导数表达式为:

这个表达式在dx趋向于无穷小时候的极限非常容易求得为:2x。

也就是说f(x)=x^2的导数函数为f'(x)=2x。也就是说原曲线长度的表达式中的dm/dx=2x。

原曲线长度表达式就成为了这样子:

表达式写成这个样子之后,我们又发现了一个特别有趣的事情:

这个用来求曲线长度的表达式,其实也可以在另一个视角下,被认为是一个求无数个小矩形面积之和的表达式。这个面积之和,就是由区间[a,b]与函数曲线f(x)=sqrt(1+4x^2)所围合而成的面积(sqrt为根号),如下图所示:

所以,我们又把求曲线长度的问题转化为了一个求面积的问题。

那么如何求这个面积呢?

接下来,我们就要再次请出牛顿,让我们跟着牛顿的思路,解决一下这个问题。

首先到了这里,我们就要用到一个微积分中有一个重要的基础概念:积分中值定理。

积分中值定理原定义牵扯的概念非常多,我们这里仅仅针对:

这个函数来做说明:

如果观察函数的图形,我们可以做出这样的推论,一定存在一个在a与b之间的参数c,

使得函数值f(c)*(b-a)所表达的矩形面积(红色线框)等于函数曲线在b到a之间所围合的面积(蓝色线框)。

这就是对于连续函数定积分中值定理一种在二维平面上的几何描述。

关于定理的证明,我们就不赘述了。有兴趣的读者可去查阅相关资料。

有了这个定理之后,我们要做的就是利用这个定理,找到一个关于曲线在某个区域围合面积的函数公式。

在这里,天才的牛顿,又利用无与伦比又莫名其妙的想象力,做了一个常人无法理解为何会这么想的构想:

因为总能找到一个c指使得f(c)(b-a)=∫(a~b)f(x)dx,

那么我们就定义一个以积分上限b为变量的函数G(b)。其几何意义就是函数fx在区间【a,b】的面积。G(b)的表达式为:

当让b产生微小变量dx的时候,我们就可以对面积增量d(G(b))可以做如下表达:

这个面积增量就等于曲线f(x)在区间[b,b+dx]之间的面积。

那么这个面积根据中值定理,也一定存在一个在区间[b,b+dx]之中的数值d使得一下表达式成立:

接下来又是一个让大多数人无法理解牛顿为什么要这样做的时刻:牛顿将两边分别除以dx,并求dx趋近于0时候的极限,牛顿为什么要这样做,我们也无法理解,反正他就这么做了。然后得到的表达式如下:

对这个表达式进行仔细分析,我们发现了两件事情:

1、左侧的表达式,恰好是函数G(b)的求导数函数的表达式;

2、而右侧的表达式中,d这个参数是位于[b,b+dx]区间之中的,所以在dx取向于0的时候,d=b。所以可以得出右侧的求极限的结果就是f(b)

基于以上两点,我们发现,函数G(b)的导数就是f(d)

但是得到这个结论后,我们又有了另外一个问题,就是如何利用已知的导数函数来构造这个导数函数的原函数

事实上,我们遇到了一个非常难办的问题,我们能够靠着无限小趋向极限小的思维,来求出一个函数的有固定表达式的导数;但是我们却很难靠着导数,去反推出一个有着固定表达式的原函数。因为一旦我们采用了极限小的思维那就意味着函数中的某些量(信息)因为抽象化的极限小而丢失了。求导本身就是一个不可逆过程。

如何找出这些丢失的信息就成为了一个关键问题。

这个问题的解决实际上是依靠着对大量函数的求导,最终发现了导数和原函数之间的某种规律来解决的。

是的,没有任何论证过程,就是靠着对规律的总结得到的。求导过程的不可逆,至今也是微积分的一个悖论因为我们无法逻辑严密的从导数函数求出它的原函数我们只能通过经验总结,来根据导数构造原函数。

譬如f(x)=x^2的导数为f'(x)=2x;函数g(x)=x^2+4的导数也为f'(x)=2x。

那我们我们看一下求导公式:划重点:在求导公式

中有一些不随着x的变化而改变的项在进行减法运算的过程中,已经被消除掉了。我们用一个字母C来表征这些在求导过程中被消除掉的项量。F(x)来代表原函数中受x的变化而发生变化的项量

所以我们可以这样来构造原函数:G(x)=F(x)+C

根据我们原先对G(x)的定义,我们可以知道G(a)=0;

所以有G(a)=F(a)+C=0。所以C=-F(a);

所以我们终于得到了G(X)的表达式:G(x)=F(x)-F(a)

对于原来的求面积的表达式就可以进一步的拓展为:

而这个公式,也就是著名的牛顿-莱布尼茨公式;

对于这个公式需要做一些特别提醒:

1、G(x)是一个关于积分上限的不定积分函数。它是导数f(x)的含有与x非相关项的原函数

2、F(x)是函数f(x)的仅含有与x相关项的原函数

我们做进一步的分析,F(x)在几何上有什么意义。

因为F(x)中的每一项都与x相关,所以我们必然有F(0)=0,

F(a)所代表的意义就是从(0,a)区间与其导数函数f(x)所围合成的面积。

F(b)所代表的的意义就是(0,b)区间与其导数函数f(x)所围合成的面积。

举一个直观的例子如下图就是原函数F(x)=x^2与其导数函数f(x)=2x的函数曲线。大家可以随取几个数值点验证一下。

好了,推到完成牛顿莱布尼茨公式后,我们再回到最初我们的问题:求【a,b】区间内函数曲线F(x)的长度

在前面我们应得出了一个曲线长度的表达式:

根据牛顿莱布尼茨公式,我们只要求得关于函数f(x)=sqrt(1+4x^2)的一个只包含与x有关项的原函数F(x)就行。

求导是一个不可逆运算,本质上来说我们只能通过大量函数的求导运算来找到某个函数的原函数。然后总结出某些运算的规律。

总之我们找到了这个函数的原函数:

具体求这个不定积分的函数的过程可参见下图,有兴趣的同学可以自己研究一下:

好了,现在我们将函数f(x)=x^2以及其导数函数f'(x)=2x,以及其原函数(仅包含与x相关的项)的图像都在二维坐标系中画出来:

现在如果我们要知道曲线f(x)=x^2上任意一点到原点(0,0)的曲线长度,

我们就只要将这个点的x值,代入到

中便可以计算了。

譬如我要知道x=1的时候函数曲线上的这个点到原点的曲线长度,代入上式计算就可以得到:

长度≈1.479

现在,让我们舒缓下来,安静的回忆下我们的思维进程。我们大概分了这么几步:

1、对一个在平面上似乎无解的曲线长度问题,我们首先将这个问题重构为了一个用大量的小三角形斜边之和去无限逼近其长度的模型。

2、我们构造出了每个小三角形斜边长度表达式,并定义了一个叫做导数的概念

3、我们利用求极限的方式,的找到了每一个点的导数与原函数的关系

4、我们对每一个小三角形的斜边求积分,并将这个积分表达式转化成了一个面积积分的表达式。

5、将这个面积积分在二维平面上进行解析,发现了中值定理。并利用中值定理定义了一个有关面积积分的函数G(X)

6、对GX求导数,发现其导数正是“原来每个小三角形斜边长度的表达式去掉dX

7、根据函数导数的经验,我们构造了G(X)的表达式。并最终得出了牛顿莱布尼茨公式(定积分公式)

8、利用这个定积分公式,我们就能将曲线长度的问题,最终转变为简单的减法运算。

要知道,求曲线长度的问题,是一个在生产和生活中非常重要的问题。

任何一个曲边材料的裁切,都要涉及到计算曲边长度。

任何一发炮弹的弹道,也要涉及到其弹道路径长度的计算。

而对于我们很多人来说,可能一辈子都用不到使用微积分进行曲线长度的计算。但是我想说的是,在生活和工作中,当我们遇到了一些看似无法解决的问题的时候,我们不妨想想我们利用微积分解决问题时的思路。不要让固化的观点困住自己的思维。

有时候,我们也要有一点形而上学的微积分精神,试着将问题无限的切分细化,说不定就能逐渐发现一些神奇的规律,继而能将一些复杂的问题转换为简单的问题。

微积分的思想中充满了哲学性质的对立统一而又矛盾世界观。

其中的一个至今令人无法找到的逻辑的问题就是,如何用导数函数来逻辑严密的求出原函数。这个问题,从哲学上解释就是量变究竟是什么时候引发质变的?在量变产生质变的时候,又到底发生了什么样的逻辑因果律呢?

事实就是,这可能是人类永远都无法找到答案的问题。

正如如今的人工智能深度学习模型,在多层神经网络的黑箱内,人们已经无法解释人工智能最终产生的逻辑推理是如何做到的。

对于我们的思维也是如此,我们只有不懈的做大量的学习和思考,对问题不断地进行细化分析,我相信,总有一天,我们忽然莫名的会找到解决某些困难问题的方法。

这正是微积分教给我们的人生哲学!

要知道,牛顿的那本书原名叫做《自然哲学的数学原理》,当我们能够从思想和哲学的层面去理解数学的时候,很多问题都会呈现出一番新的模样!

标签: #c语言求长方形面积的函数解法代码