R语言中的导数计算.pdf_第1页
R语言中的导数计算.pdf_第2页
R语言中的导数计算.pdf_第3页
R语言中的导数计算.pdf_第4页
R语言中的导数计算.pdf_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

前言前言 高等数学是每个大学生都要学习的一门数学基础课 同时也可能是考完试后最容易忘记的一门知 识 我在学习高数的时候绞尽脑汁 但始终都不知道为何而学 生活和工作基本用不到 就算是在计 算机行业和金融行业 能直接用到高数的地方也少之又少 学术和实际应用真是相差太远了 不过 R 语言为我打开了一道高数应用的大门 R 语言不仅能方便地实现高等数学的计算 还可 以很容易地把一篇论文中的高数公式应用于产品的实践中 因为 R 语言我重新学习了高数 让生活中充满数学 生活会变得更有意思 本节并不是完整的高数计算手册 仅介绍了导数计算和偏导数计算的 R 语言实现 转载转载 http blog fens me r math derivative 目录目录 1 导数计算导数计算 2 初等函数的导数公式初等函数的导数公式 3 二阶导数计算二阶导数计算 4 偏导数计算偏导数计算 1 导数计算导数计算 导数 Derivative 是微分学的基本概念 用于计算函数的极值 导数的定义为 当函数 y f x 在 x0 的某个领域内有定义 当自变量 x 在 x0 处取得增加 x 点 x0 x 仍在该邻域内 时 相应的 函数取得增量 y f x0 x f x0 如果 y与 x 之比当 x 趋于 0 时的极限存在 则称函数 y f x 在点 x0 处可导 并称这个极限为函数 y f x 在点 x0 处的导数 记为 f x0 即 也记作 y x x0 dy dx x x0 或 df x dx x x0 通过 R 语言可以使用 deriv 函数直接进行导数的计算 比如要计算 y x 3 的导数 根据导数计 算公式 用于手动计算的变形结果为 y 3x 2 当 x 1 时 y 3 当 x 2 时 y 12 本节的系统环境 Win7 64bit R 3 1 1 x86 64 w64 mingw32 x64 64 bit 用 R 语言程序实现 代码如下 dx deriv y x 3 x dx 生成导数公式 expression value x 3 grad array 0 c length value 1L list NULL c x grad x 3 x 2 attr value gradient mode dx 查看 dx 变量类型 1 expression x eval dx 运行求导计算 1 1 8 原函数的计算结果 attr gradient 使用梯度下降法 导函数的计算结果 x 1 3 x 1 dx 3 1 2 3 2 12 x 2 dx 3 2 2 12 用 R 语言程序计算的结果 与我们手动计算的结果是一致的 但计算过程其实是有很大区别的 我们手动计算时是通过给定的导数计算公式 变成后完成的计算 而用计算机程序计算时 是使 用梯度下降法来计算一阶导数 是一种最优化的近似算法 对于手动计算导数时 如果函数比较 复杂而且比较难应用可变形的公式 那么手动计算就会有非常大的困难 而计算机程序的方法是 一般地导数计算方法 不会受到公式难于变形的影响 我们使用 deriv expr name 函数时通常要传 2 个参数 第一参数 expr 就是原函数公式 用 号 来分隔公式的两边 第二参数 name 用于指定函数的自变量 deriv 函数会返回一个表达式 expression 类型变量 再用 eval 函数运行这个表达式得到就可得到计算结果 如上面的代码实 现 如果希望以函数的形式调用计算公式 那么你还需要传第三个参数func 并让func参数为TRUE 参考下面的代码实现 计算正弦函数 y sin x 的导数 根据导数计算公式 用于手动计算的变形结果为 y cos x 当 x pi 时 y 1 当 x 4 pi 时 y 1 其中 pi 表示圆周率 dx deriv y sin x x func TRUE dx 生成导数公式的调用函数 function x value sin x grad array 0 c length value 1L list NULL c x grad x cos x attr value gradient mode dx 检查 dx 的类型 1 function dx c pi 4 pi 以参数作为自变量 进行函数调用 1 1 224606e 16 4 898425e 16 attr gradient x 导函数的计算结果 1 1 x pi dx cos pi 1 2 1 x 4 pi dx cos 4 pi 1 2 初等函数的导数公式初等函数的导数公式 对于基本的初等函数求导数 通过导数计算公式是可以直接手动完成计算的 下面为一元初等函 数的导数计算公式 函数 原函数 导函数 常数函数 y C y 0 幂函数 y x n y n x n 1 指数函数 y a x y a x ln a y exp 1 x y exp 1 x 对数函数 y log x base a y 1 x ln a a 0 且 a 1 x 0 y ln x y 1 x 正弦函数 y sin x y cos x 余弦函数 y cos x y sin x 正切函数 y tan x y sec x 2 1 cos x 2 余切函数 y cot x y csc x 2 1 sin x 2 正割函数 y sec x y sec x tan x 余割函数 y csc x y csc x cot x 反正弦函数 y arcsin x y 1 sqrt 1 x 2 反余弦函数 y arccos x y 1 sqrt 1 x 2 反正切函数 y arctan x y 1 1 x 2 反余切函数 y arccot x y 1 1 x 2 反正割函数 y arcsec x y 1 abs x x 2 1 反余割函数 y arccsc x y 1 abs x x 2 1 公式的注释 y 是原函数 x 是 y 函数的自变量 y 是 y 函数的导函数 C n a 为常数 ln 表示以自然常数 e 为底的对数 exp 1 表示自然常数 e log x base a 表示 以常数 a 为底的对数 sqrt 表示开平方 abs 表示绝对值 正割函数 sec 计算方法为 sec 1 cos x 余割函数 csc 计算方法为 csc 1 sin x 余切函数 cot 计算方法为 cot 1 tan x 注 以上公式不完全匹配于 R 语言函数 接下来 我们分别对这些一元初等函数进行一阶导数的计算 设 y 为原函数 x 是 y 函数的自变 量 且只有一个自变量 常数函数常数函数 计算 y 3 10 x 函数的导数 根据导数计算公式 用于手动计算的变形结果为 y 0 10 x 常 数项 3 的导数为 0 当 x 1 时 y 10 dx dx 1 传入自变量 并计算 1 13 原函数计算结果 y 3 10 1 13 attr gradient x 1 10 导函数计算结果 y 10 1 10 幂函数幂函数 计算 y x 4 函数的导数 根据导数计算公式 用于手动计算的变形结果为 y 4 x 3 当 x 2 时 y 32 dx dx 2 1 16 attr gradient x 1 32 导函数计算结果 y 4 x 3 4 2 3 32 指数函数指数函数 计算 y 4 x 函数的导数 根据导数计算公式 用于手动计算的变形结果为 y 4 x ln 4 当 x 2 时 y 22 18071 dx dx 2 1 16 attr gradient x 1 22 18071 导函数计算结果 y 4 x log 4 4 2 3 22 18071 计算 y exp 1 x 函数的导数 根据导数计算公式 用于手动计算的变形结果为 y exp 1 x 当 x 2 时 y y 7 389056 dx dx 2 1 7 389056 attr gradient x 1 7 389056 导函数计算结果 y exp 1 x exp 1 2 7 389056 对数函数对数函数 计算 y ln x 函数的导数 根据导数计算公式 用于手动计算的变形结果为 y 1 x 当 x 2 时 y 0 5 dx dx 2 1 0 6931472 attr gradient x 1 0 5 导函数计算结果 y 1 x 1 2 0 5 计算 y log2 x 函数的导数 根据导数计算公式 用于手动计算的变形结果为 y 1 x log 2 当 x 3 时 y 0 4808983 但用 R 语言编程时 只能计算以自然常数为底的对数的导数 对于原函数不是以自然常数为底 的对数 首先要变换成以自然常数为底的对数再进行导数计算 根据对数的换底公式 把以 2 为底的对数转换为以自然常数为底的对数 y log2 x log x log 2 dx dx 3 1 1 584963 attr gradient x 1 0 4808983 导函数计算结果 y 1 x log 2 1 3 log 2 0 4808983 正弦函数正弦函数 计算 y sin x 函数的导数 根据导数计算公式 用于手动计算的变形结果为 y cos x 当 x pi 时 y 1 其中 pi 表示圆周率 dx dx pi 1 1 224606e 16 attr gradient x 1 1 导函数计算结果 y cos x cos pi 1 余弦函数余弦函数 计算 y cos x 函数的导数 根据导数计算公式 用于手动计算的变形结果为 y sin x 当 x pi 2 时 y 1 dx dx pi 2 1 6 123032e 17 attr gradient x 1 1 导函数计算结果 y sin x sin pi 2 1 正切函数正切函数 计算 y tan x 函数的导数 根据导数计算公式 用于手动计算的变形结果为 y sec x 2 1 cos x 2 当 x pi 6 时 y 1 333333 dx dx pi 6 1 0 5773503 attr gradient x 1 1 333333 导函数计算结果 y 1 cos x 2 1 cos pi 6 2 1 333333 余切函数余切函数 计算 y cot x 函数的导数 由于 R 语言没有 cot 函数 所以根据三角公式我们动手变形原函 数为 y cot x 1 tan x 后再进行导数计算 根据导数计算公式 用于手动计算的变形结果为 y csc x 2 1 sin x 2 当 x pi 6 时 y 4 dx dx pi 6 1 1 732051 attr gradient x 1 4 导函数计算结果 y 1 sin x 2 1 sin pi 6 2 4 反正弦函数反正弦函数 计算 y asin x 函数的导数 根据导数计算公式 用于手动计算的变形结果为 y 1 sqrt 1 x 2 当 x pi 6 时 y 1 173757 dx dx pi 6 1 0 5510696 attr gradient x 1 1 173757 导函数计算结果 y 1 sqrt 1 x 2 1 sqrt 1 pi 6 2 1 173757 反余弦函数反余弦函数 计算 y acos x 函数的导数 根据导数计算公式 用于手动计算的变形结果为 y 1 sqrt 1 x 2 当 x pi 8 时 y 1 08735 dx dx pi 8 1 1 167232 attr gradient x 1 1 08735 导函数计算结果 y 1 sqrt 1 x 2 1 sqrt 1 pi 8 2 1 08735 反正切函数反正切函数 计算 y atan x 函数的导数 根据导数计算公式 用于手动计算的变形结果为 y 1 1 x 2 当 x pi 6 时 y 0 7848335 dx dx pi 6 1 0 4823479 attr gradient x 1 0 7848335 导函数计算结果 y 1 1 x 2 1 1 pi 6 2 0 7848335 3 二阶导数计算二阶导数计算 当我们对一个函数进行多次接连的求导计算 会形成高阶导数 一般的 函数 y f x 的导数 y f x 仍然是 x 的函数 我们就把 y f x 的导数叫做函数 y f x 的二 阶导数 记作 y 即 一阶导数的导数叫做二阶导数 二阶导数的导数叫做三阶导数 N 1 阶导数的导数叫做 N 阶导 数 习惯上把二阶以上的导数称之为高阶导数 比如 计算 y sin a x 函数的二阶导数导数 y 其中 a 为常数 根据导数计算公式 用于手动 计算的变形结果为一阶导数为 y a cos a x 对 y 再求导公式变形为 y a 2 sin a x 用 R 语言进行程序实现 a dx dx pi 3 计算一阶导数 1 0 8660254 attr gradient x 1 1 导函数计算结果 y a cos a x 2 cos 2 pi 3 1 dx dx pi 3 1 1 attr gradient x 1 3 464102 导函数计算结果 y a 2 sin a x 2 2 sin 2 pi 3 3 464102 上面二阶导数的计算 我们是动手划分为两次求导进行计算的 利用 deriv3 函数其实合并成一 步计算 dx dx pi 3 计算导数 1 0 8660254 attr gradient x 1 1 一阶导数结果 attr hessian x x 1 3 464102 二阶导数结果 我们再计算另外一个二阶导数 计算 y a x 4 b x 3 x 2 x c 其中 a b c 为常数 a 2 b 1 c 3 根据导数计算公式 用于手动计算的变形结果为一阶导数为 y 2 x 4 x 3 x 2 x 3 4 2 x 3 3 x 2 2 x 1 当 x 2 时 y 81 对 y 再求导公式变形为 y 3 4 2 x 2 2 3 x 2 当 x 2 时 y 110 dx dx 2 1 49 attr gradient x 1 81 一阶导数结果 attr hessian x x 1 110 二阶导数结果 这样就直接完成了二阶导数的计算 在 R 语言中二阶导数是可以直接求出的 想计算更高阶的 导数就需要其他的数学工具包了 4 偏导数计算偏导数计算 在一元函数中 我们已经知道导数就是函数的变化率 对于二元函数我们同样要研究它的 变化 率 然而 由于自变量多了一个 情况就要复杂的多 在数学中 一个多变量的函数的偏导数 就是它关于其中一个变量的导数而保持其他变量恒定 相对于全导数 在其中所有变量都允许变 化 偏导数的算子符号为 记作 f x 或者 f x 偏导数反映的是函数沿坐标轴正方向的变化率 在 向量分析和微分几何中是很有用的 在 xOy 平面内 当动点由 P x0 y0 沿不同方向变化时 函数 f x y 的变化快慢一般说来是不同的 因此就需要研究 f x y 在 x0 y0 点处沿不同方向的变化率 在这里我们只学习函数 f x y 在 x0y 平面沿着平行于 x0y 轴和平行于 y 轴两个特殊方位变动时 f x y 的变化率 x 方向的偏导 设有二元函数 z f x y 点 x0 y0 是其定义域 D 内一点 把 y 固定在 y0 而让 x 在 x0 有增量 x 相应地函数 z f x y 有增量 称为对 x 的偏增量 z f x0 x y0 f x0 y0 如果 z 与 x 之比当 x 0 时的极限存在 那么此极限值称为函数 z f x y 在 x0 y0 处对 x 的偏导数 partial derivative 记作 f x x0 y0 y 方向的偏导 函数z f x y 在 x0 y0 处对x的偏导数 实际上就是把y固定在y0看成常数后 一元函数z f x y0 在 x0 处的导数 同样 把 x 固定在 x0 让 y 有增量 y 如果极限存在那么此极限称为函数 z x y 在 x0 y0 处对 y 的偏导数 记作 f y x0 y0 同样地 我们可以通过 R 语言的 deriv 函数进行偏导数的计算 下面我们计算一个二元函数 f x y 2 x 2 y 3 x y 2 的偏导数 由于二元函数曲面上每一点都有无穷多条切线 描述这个函 数的导数就会相当困难 如果让其中的一个变量 y 取值为常数 那么就可以求出关于另一个自变 量 x 的偏导数了 即 f x 下面我们分别对 x y 两个自变量求偏导数 设变量 y 为常数 计算 x 的偏导数 f x 4 x 3 y 2 当 x 1 y 1 时 x 的偏导数 f x 4 x 3 y 2 7 设变量 x 为常数 计算 y 的偏导数 f y 1 6 x y 当 x 1 y 1 时

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论