晓查 发自 凹非寺 
量子位 报道 | 公众号 QbitAI

以快速简洁闻名Julia,本身就是为计算科学的需要而生。用它来学习微积分再合适不过了,而且Julia的语法更贴近实际的数学表达式,对没学过编程语音的初学者非常友好。

最近,来自纽约斯塔顿岛学院的数学系教授John Verzani编写了一份微积分与Julia的教程,里面常见的微积分概念和图像演示都有,比课本更生动直观,每个章节后还附习题供读者巩固知识。

虽然很多学校在使用Mathematica、Maple等数学软件在进行教学,但是Julia的优势是完全开源和免费

准备工作

在使用教程之前,我们先给Julia安装Plots包,这是用来绘制函数图像的扩展包。此外还要安装SymPy科学计算库等其他软件包。

using PkgPkg.add("Plots")Pkg.add("SymPy")Pkg.add("Roots")Pkg.add("ForwardDiff")Pkg.add("ImplicitEquations") PkgPkg.add("Plots")Pkg.add("SymPy")Pkg.add("Roots")Pkg.add("ForwardDiff")Pkg.add("ImplicitEquations")

安装完以上的扩展包,就可以绘制函数图像了。我们简单绘制0到2π范围的正弦函数图像:

using Plotsplot(sin, 0, 2pi)

Julia支持输入特殊数学符号,具体的方法是斜杠\后紧跟符号的LaTeX名称,然后按下Tab键,就能输出特殊字符。比如:

θ = 45; v₀ = 200

输入θ的方法是\theta[tab],输入v₀的方法是v\_0[tab]。

导数

完成了Julia部分的基本教学后,下面就是微积分的基本概念了。

先回顾一下导数的定义,从函数图像上来看,导数就是函数割线斜率的极限,当割线上两点合并成一点时,它就变为切线。

其实就是求下面的极限:

Julia集成了求极限的功能,对于正弦函数sin(x)而言,求它的导数就是[sin(x+h)-sin(x)]/h在h趋于0时的极限

using SymPylimit((sin(x+h) - sin(x))/ h, h, 0)limit((sin(x+h) - sin(x))/ h, h, 0)

通过以上方法求得sin(x)在x=0处的导数为1,绘制成函数图像就是:

f(x) = sin(x)c = 0tl(x) = f(c) + 1 * (x - c)plot(f, -pi/2, pi/2)plot!(tl)sin(x)c = 0tl(x) = f(c) + 1 * (x - c)plot(f, -pi/2, pi/2)plot!(tl)

导数的应用

1、牛顿法

通过切线逐步逼近,求方程的近似解。

2、洛必达法则求极限

写成Julia语言:

using SymPya,x = symbols("a, x", positive=true, real=true)f(x) = sqrt(2a^3*x - x^4) - a * (a^2*x)^(1//3)g(x) = a - (a*x^3)^(1//4) SymPya,x = symbols("a, x", positive=true, real=true)f(x) = sqrt(2a^3*x - x^4) - a * (a^2*x)^(1//3)g(x) = a - (a*x^3)^(1//4)

上面的表达式过于复杂,是0/0的未定式,对分子f(x)和分母g(x)分别分别求导:

fp, gp = subs(diff(f(x),x), x=>a), subs(diff(g(x),x), x=>a)

得到结果

(-4*a/3, -3/4)

所以极限值为16a/9

积分

定积分就是求函数曲线下包围面积:

上图展示了求定积分的方法:把函数下方图形分割成若干个长条,随着长条越分越细,这些长条的面积之和就越来越接近曲线下包围的面积。

为了求函数f(x)=x2在[0,1]区间里的定积分的近似值,我们把整个区域划分成50000份:

a, b = 0, 1f(x) = x^2n = 50_000xs = a:(b-a)/n:bdeltas = diff(xs)      cs = xs[1:end-1] sum(f(cs[i]) * deltas[i] for i in 1:length(deltas))f(x) = x^2n = 50_000xs = a:(b-a)/n:bdeltas = diff(xs)      cs = xs[1:end-1] sum(f(cs[i]) * deltas[i] for i in 1:length(deltas))

最后求得结果为:

0.3333233333999998

显然用这种方法求定积分太过复杂,这就需要引入不定积分的概念。不定积分是已知导数f’(x)求原函数f(x)。

定积分与不定积分由牛顿-莱布尼兹公式联系起来:

积分的应用

学会了积分以后,教程里给出了它的几个实际应用案例:

1、求曲线长度

求解f(x)=x2在[0,1]这段区间里的弧长,实际上求积分。

先求不定积分:

using SymPy@vars xF = integrate(sqrt(1 + (2x)^2), x) SymPy@vars xF = integrate(sqrt(1 + (2x)^2), x)

F(1)-F(0)就是所求弧长:

2、求体积

求体积的方法是把物体“切”成一圈圈的米其林,每一圈的体积加起来就是总体积。

将直线x/r+y/h=1绕着y轴旋转一周,得到一个底面直径为r,高度为h的圆锥体。

using SymPy@vars r h x yR = r*(1 - y/h)integrate(pi*R^2, (y, 0, h))@vars r h x yR = r*(1 - y/h)integrate(pi*R^2, (y, 0, h))

最后求得体积:

教程中还有很多其他基本概念,由于篇幅较长,我们就不一一介绍了,感兴趣的朋友可以去博客中进一步学习。

原文地址:
https://calculuswithjulia.github.io/

活动推荐

2019人工智能与机器学习创新峰会旨在发现全球互联网领域在人工智能、大数据、互联网架构等领域的创新工程和杰出团队,整合国际最佳技术实践,构建行业案例研究智库,助力企业在AI时代转型升级。点击上方图片查看详情

加入社群

量子位AI社群开始招募啦,量子位社群分:AI讨论群、AI+行业群、AI技术群;

欢迎对AI感兴趣的同学,在量子位公众号(QbitAI)对话界面回复关键字“微信群”,获取入群方式。(技术群与AI+行业群需经过审核,审核较严,敬请谅解)

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态

喜欢就点「好看」吧 !

用Julia学习微积分:这有一份高赞数学教程 | 附习题+代码相关推荐

  1. 【五】 C语言基础知识学习回顾 | 一篇搞定C语言基础 | 内附详细代码以及注释

    一 .C语言学习第一天 1.1 编写C语言代码:hello.c #include<stdio.h> #include<stdlib.h> //调用system系统函数需要包含的 ...

  2. 如何走近深度学习人脸识别?你需要这篇超长综述 | 附开源代码

    作者丨葛政 学校丨早稻田大学硕士生 研究方向丨深度学习,计算机视觉 个人博客丨Xraft.Lab 相信做机器学习或深度学习的同学们回家总会有这样一个烦恼:亲朋好友询问你从事什么工作的时候,如何通俗地解 ...

  3. 【智能优化算法】基于分段权重和变异反向学习的蝴蝶优化算法求解单目标优化问题附matlab代码

    1 简介 针对原始蝴蝶优化算法容易陷入局部最优解,收敛速度慢及寻优精度低等问题,提出分段权重和变异反向学习的蝴蝶优化算法.通过飞行引领策略来矫正邻域内蝴蝶的自身飞行,降低盲目飞行,增强算法跳出局部最优 ...

  4. 【深度学习】知乎高赞:深度学习如何调参?

    深度学习如何调参?看看高赞的回答: 高赞回答一 作者:Towser 链接:https://www.zhihu.com/question/41631631/answer/862075836 总结一下我遇 ...

  5. 干货 | 吴恩达亲自为这份深度学习专项课程精炼图笔记点了赞!(附下载)

    来源:机器之心.AI有道 本文约7500字,建议阅读10+分钟. 本文整理了深度学习基础.卷积网络和循环网络的学习笔记,附下载哦~ [ 导读 ]吴恩达在推特上展示了一份由 TessFerrandez ...

  6. Julia学习(1)——入门

    Julia学习(1)--入门 如何打印 变量如何赋值 如何注释 基本数学语法 ref: learn julia in Y mins, Julia By Example , jula wiki book ...

  7. 00后大学生在数学真理阳光下学习微积分

    在上世纪30年代,著名数学家哥德尔证明了模型论紧致性定理.紧接着,1960年,美国数学家鲁宾逊依据哥德尔紧致性定理,创立了现代微积分.这就是数学真理的阳光. 2018年高考,今天结束了.速许多00后考 ...

  8. 00后学习微积分,推荐访问袁萌专栏

    事实表明,自2012年11月起,袁萌连续发表微积分科普文章达2000余篇,是国内微积分科普第一人. 微积分有两种,一是菲氏极限论微积分,二是现代模型论微积分,两者是不同时代的数学理论. 考虑到,00后 ...

  9. JULIA学习材料合集

    julia语言最近火的一比,整理了一套学习资料给你们,一共六本合集,一起打包下载 <Beginning Julia Programming> <Beginning Julia Pro ...

最新文章

  1. H - Fibonacci POJ - 3070 (矩阵快速幂)
  2. 同济大学某计算机博士感叹:找工作太难,连简历关都过不去!
  3. flex布局的盒子模型
  4. 在线报名竞赛网站java源码_我用Java写出了一个QQ!可在线聊天(附源码)~
  5. 电脑组装DIY ≈☆ 菜鸟入门步步学 ☆≈(图文)
  6. libsvm java下载_一个基于LIBSVM(JAVA)的股票预测demo
  7. win7 iis php5.3,win7 下安装 iis7.5+php5.3的配置方法(图文)
  8. [裴礼文数学分析中的典型问题与方法习题参考解答]5.1.24
  9. linux系统的总父目录,Linux虚拟文件系统-资料路径名的解析(2)-回退父目录
  10. 市政管理学(试题及答案)汇总
  11. android 地址选择下载,选择走开下载-选择走开(吃饭位置选择)下载v1.0.4 安卓版-西西软件下载...
  12. CSDN问答标签技能树(一) —— 基本框架的构建
  13. ASPX一句话木马详细分析
  14. Prettier + Vetur 进行Vue2项目代码格式化
  15. python 编程基础案例
  16. WEB方面面试题详解
  17. loss曲线震荡(模型不收敛、acc震荡)
  18. 自定义Camera系列之:SurfaceView + Camera
  19. spss连接至远程计算机,通过远程连接打开SPSS产品时,收到许可证错误信息。从本地打开同一产品时没有错误。...
  20. 关于python-scrapy框架爬取微博转发的信息

热门文章

  1. 四大领域全面发力,腾讯云构筑全链路开发者服务体系
  2. 阿里飞猪曝杀熟;贾跃亭“没有抛弃”恒大;百度起诉搜狗浏览器劫持流量 | 极客头条...
  3. Google AI “作恶”,4000 员工抗议,十余人失望辞职!
  4. 跟 05 后拼年龄?算了,11 岁的他都成比特币专家了
  5. 字节跳动面试真题:java实现远程控制
  6. 复工复产三个一内容_节后复工安全生产三个一
  7. Vue3.x 推荐使用 mitt.js
  8. 测试交友软件哪个最好用,陌陌与比邻你觉得哪个好用?陌陌比邻两大交友软件对比...
  9. php定时备份mysql,Windows服务器中PHP+MySQL设置定时备份
  10. ios开发 多人语音聊天_客户端实现(iOS)