数学中差分和微分的详细和应用


微分的定义 ( ̄︶ ̄)↗

  • 什么是微分:🤗

    • 古典的微积分学中,微分被定义为变化量的线性部分,在现代的微积分定义中,微分被定义为将自变量的改变量映射到变化量的线性部分的线性映射,这个映射也被称为切映射。给定的函数在一点的微分如果存在,就一定是唯一的。
  • 什么是差分:😫(还有一个兄弟)

    • 差分又名差分函数或差分运算,是数学中的一个概念。它将原函数\(f(x)\) 映射到$f(x+a)-f(x+b) $差分运算,相应于微分运算,是微积分中重要的一个概念。差分的定义分为前向差分和逆向差分两种。(尤其是在工科实践中,差分的应用不亚于对微分的使用)。

      在社会经济活动与自然科学研究中,我们经常遇到与时间\(t\)有关的变量,而人们往往又只能观察或记录到这些变量在离散的\(t\)时的值。

      对于这类变量,如何去研究它们的相互关系,就离不开差分与差分方程的工具。微积分中的微分与微分方程的工具,事实上来源于差分与差分方程.因此差分与差分方程更是原始的客观的生动的材料。

  • 归根结底,科学只是一种工具,科学源于生活实践又需要落地于实践,正如微分和差分的关系一样,讲到这里微分的定义是什么已经不重要了,你就把它当成自变量只变化了一点的时候,函数值的微笑变化就好了。👍

微分的几何意义(*  ̄3)(ε ̄ *)

  • 几何意义:
    • 微分的几何意义就是:直角三角形的高\(dy\)等于正切值(斜率导数即\(f'(x)\))乘以该三角形的底边\(dx\)。把这些微分即微小的\(dy\)累积起来就得到三角形的高或着说得到了函数值的本身即\(y=f(x)\)。微分是函数改变量的线性主要部分。微积分的基本概念之一。
    • QQ截图20211116191211
    • 上图中的\(dy\)就代表了微分😁,而△\(y\)代表的是差分😫,书中这里也叫△\(y\)增量

微分的基本公式和运算法则ヾ(*)))

  • 微分的基本公式和运算法则和导数的基本运算一致

    • 如果觉得这里总结的有不全面的,可以去参考上一期潇婷姐姐写的《高等数学——导数运算法则》

    • 导数运算法则

    • 打不开的小伙伴可以进公众号自行浏览

      A 公众号二维码
      南理工乐学空间
      相关的运算 计算方法
      加法减法 直接提出法
      乘法除法 一项不动,另一项动
      三角函数 现成的公式
      复合函数 链式求导法则

利用微分进行近似计算 😢(这部分会了就通关了)

  • 例题:近似计算\(e^{1.006}\)的值:

  • 解:

    • \(f(x)=e^x\) ,则\(f’(x)=e^x\)

      \(\lim_{x\rightarrow1} f(1.006)=f(1)+f'(1)(1.006-1)\)

      ​ $ =e+0.006*e$

      \(=2.7346\)

本篇文章会同步到博客博文,博客地址:https://www.cnblogs.com/tinierZhao/

学习这部分内容的一些建议

  • 首先作为微分,其实从正常的理解顺序来说,这一章应当是放在导数的前面去讲的(所谓导数其实就是微商😶)
  • 其次,这一部分的内容核心思想就是两部分
    • 一些基本求导公式的记忆
    • 复合函数
      • 链式求导法则
      • 微分的形式不变性
  • 多刷题永远是学好数学的利器

一个关于差分的延伸ヾ(•ω•`)o

  • 微分和差分的核心思想在于变化量,当我们研究变化量的时候,不管这个数本身多大或者是多么小,只要他和前面(后面)的数没有什么区别,或者区别不大。我们都可以将其进行忽略:

    • 例如股票的买卖收益,跟当前的实际价格无关,只跟你买入卖出的价差有关

    • 速度的大小和位移无关,只跟单位时间的位移有关

  • Hi~ o( ̄▽ ̄)ブ 相信你们理解的已经很好了,接下来再来一道题目:

  • 注:单纯题目,值班时间仍然按照学导值班表正常执行

    • 现在本科生学业指导中心的正常值班计划为:
      • 每周五天,一天五大节课,每个学导一天最多只安排一次值班,并且非工作时间不可以逗留。
    • 天意哥哥为了让大家可以在这里方便自习,想了一种新的方法,允许学导们可以在这里任意逗留。
    • 比如我的值班时间是周一晚上第五大节,但是我周一在学导中心待了一天,从第一大节到第五大节
    • 为了方便表示我们将一周的 5天*5大节课时进行编号 周一第一大节\(index=0\),周五最后一大节\(index=24\)
    • 我刚才的值班时间记作[\(index=0\)\(index=4\)] (上上行的黑体字)
  • 问题:现在一周过去了,在已知22位值班学导的值班时间的情况下,我能否设计一个简单的计算方案,查看一下过去一周,某一天具体某一节课,有几个学导正在值班呢?(不学C++同学可以跳过,直接看后面的核心原理即可)

    //利用差分数组,实现对区间问题的简化分析
    typedef struct Guidance
    {
    	char pName[20];    //每个学导的姓名
    	int dutyTime[][2];  //存储学导们的值班的时间,因为一周不止一次值班
    	struct Guidance* next;
    
    }GuiStu, * GuiLink;
    
    void InitList(GuiStu*& head)   //初始化信息
    {
    	.....
    		head = (GuiStu*)malloc(sizeof(GuiStu));
    	.....
    		for (int i = 0; i < 22; i++)  //22个学导
    		{
    			......   //依次链接上即可
    		}
    }
    
    void CalculTime(GuiStu*& copyHead)
    {
    	if (copyHead == NULL)
    	{
    		return;    //递归中止
    	}
    	else
    	{
    		DiffSolve(arrayToTalTime,copyHead);
    		.......
    		copyHead = copyHead->next;
    		CalculTime(copyHead);   //递归调用
    	}
    }
    
    void DiffSolve(int arrayTotalTime[], GuiStu*& copyHead)
    {
    	int length = sizeof(copyHead->dutyTime);  //值班的次数
    	int start = 0;    //开始值班时间
    	int end = 0;     //值班结束时间
    	for (int i = 0; i < length; i++)
    	{
    		start = *(copyHead->dutyTime + i)[0];
    		end = *(copyHead->dutyTime + i)[1];
    		arrayTotalTime[start] += 1;
    		arrayTotalTime[end + 1] -= 1;
    	}
    }
    
    int main()
    {
    	int arrayToTalTime[22] = { 0 };
    	.......
    }
    

    注:由于是高数推送,具体实现就不再进行展示了,这里想给大家分享的核心还是在于关注变化量可以大大简化问题。

  • 不学C++的同学可以直接看这一部分:(^∀^●)ノシ

    • 现在有一串数据比如[0,0,0,0,0,0,0,0,0,0],初始都为零
      • 现在想在第2个位置到第5个位置都加5,可以怎么实现呢?
    • 方案1:
      • 依次在第2到第5的位置加上1
      • [0,1,1,1,1,0,0,0,0,0]
    • 方案2:
      • 只记录数列中的变化(差分)😁
      • 鉴于2和5是边界,我们可以这样考虑:
        • 1——>2的过程和5——>6的过程发生了一次变化,其余位置都和上一个位置同步。
        • 于是我们采用一种新的记录方法
          • [0,1,0,0,0,-1,0,0,0,0]
      • 最后将数据进行逐个累加就实现了还原(微分和积分的逆运算)
  • 这两个题的数据量都不是很大,如果数据量大的情况,方案2效率远远高于方案1。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM