自定义函数

自定义函数需要注意亮点
1、最好使用 := 而非 =
2、定义时等式左端函数变量有下划线,被称为“空白”

Wolfram 系统变换规则最强有力的方面或许是它们不仅能用于表达式,而且能用于模式(patterns). 模式是一个诸如f[t_] 这样的包含下划线的表达式. 下划线可以代表任何表达式. 这样,对 f[t_] 的变换规则将变换具有任何 自变量的函数 f. 注意,作为对照,对不带有下划线的 f[x] 的变换规则只变换表达式 f[x],而对诸如 f[y] 等表达式没有任何作用.
当用户定义一个函数,例如 f[t_]:=t^2 时,所做的事情是告诉 Wolfram 系统,在任何可能的时候,自动使用变换规则f[t_]->t^2.
(引自MMA教程“函数的变换规则”)

定义函数后可以对变量赋值,也可以作图

f2[t_] := t^3
f2[3]
f2[a]
Plot[f2[t], {t, 0, 3}]

对函数表达式求导

这个操作相对简单,直接用 D[f,x]D[f,{x,n}],分别代表求偏导数和高阶导数。
下面给出例子

f[x_] := x^5 + 6 x
D[x^5 + 6 x, x]
D[f[x], x]
D[f[t], t]

运行结果为

将求导结果存为新的自定义函数

有的时候希望能把求导的结果存为一个新的自定义函数,以方便后期使用。
一个直观但是错误的方法是

从上图看出,g[t]的结果似乎没问题,但g[3]的结果就不太对了。
这里的原因在于 给x赋值时原函数f里的x也被赋值了
查看 f 和 g 可以发现g并不是一个独立的函数,而是要先把变量代入f,然后再求导。所以对于g[2]而言,就相当于求 D[f(2),2],这就不合理了。
下面提供了4个方案,其中前两个方案感觉最优。

解决方案1

在自定义函数时一般习惯用 :=,而此处恰恰改用 = 就能解决问题。即

f[x_] := x^5 + 6 x
g[x_] = D[f[x], x]
g[t]
g[2]

结果如下

解决方案2

使用Block(块)

Block[{x,y,...},expr] ,意为指定用符号 x、y、… 的局部值计算 expr.

f[x_] := x^5 + 6 x
g[x_] = Block[{t}, t = x; D[f[t], t]];   (*注意这里用的是=*)
g[t]
g[2]

结果如下

解决方案3

与上一解决方案类似,注意这里用的是 :=

f[x_] := x^5 + 6 x
g[x_] := Block[{result}, result = D[f[t], t] /. {t -> x}; Return[result]];
g[t]
g[2]

解决方案4

既然问题的原因在于x的赋值上,那么就改变变量名。
但这样的缺点就在于函数多了那自变量名也多了。

f[x_] := x^5 + 6 x
g[xx_] := D[f[x], x] /. x -> xx
g[t]
g[2]

结果如下

Mathematica对函数表达式求导并设置为新的自定义函数相关推荐

  1. java求导数_OO_JAVA_表达式求导

    OO_JAVA_表达式求导_第一弹 ---------------------------------------------------表达式提取部分 词法分析 ​ 首先,每一个表达式内部都存在不可 ...

  2. OO_2019_第一单元总结——表达式求导

    一.基于度量的程序结构分析 首先给出Complexity metrics中参数的含义: ev(G):基本复杂度是用来衡量程序非结构化程度的,非结构成分降低了程序的质量,增加了代码的维护难度,使程序难于 ...

  3. oo第一次博客-三次表达式求导的总结与反思

    一.问题回顾与基本设计思路 三次作业依次是多项式表达式求导,多项式.三角函数混合求导,基于三角函数和多项式的嵌套表达式求导. 第一次作业想法很简单,根据指导书,我们可以发现表达式是由各个项与项之间的运 ...

  4. sigmoid函数的求导过程

    sigmoid函数的求导过程涉及"链式求导"和"自然指数"的求导.

  5. sigmoid函数、tanh函数、softmax函数及求导

    sigmoid函数和tanh函数都是激活函数,接收一个输入,产生一个输出.这里的求导是对激活函数求导.而softmax函数是一个多输入多输出的激活函数,这里提到的求导是对经过softmax函数后进行交 ...

  6. 高等数学——复杂函数的求导方法

    本文始发于个人公众号:TechFlow,原创不易,求个关注 上一篇文章我们复习了函数求导的定义和一些常见函数的导数,今天这篇文章我们回顾一下复杂函数的求导方法.先强调一下,今天的文章很重要,想要看懂机 ...

  7. 变限积分函数的求导(终极版神器)

    变限积分函数的求导(终极版神器) 在一定程度上,我们可以将积分和求导当成互逆运算. 可是如果为变限积分也即在积分上下限中也存在变量的情况下,就不是简单地将积分号去掉这么简单了,该如何运算呢. 一般教辅 ...

  8. R语言attributes函数(获取属性、设置属性)、attr函数(改变一个属性)、structure函数(改变数据形状)实战

    R语言attributes函数(获取属性.设置属性).attr函数(改变一个属性).structure函数(改变数据形状)实战 目录

  9. 《剑指offer》写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。...

    弱菜刷题还是刷中文题好了,没必要和英文过不去,现在的重点是基本代码能力的恢复. [题目] 剑指offer 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. [思路] 直觉 ...

最新文章

  1. LLDB命令查看内存的分配历史
  2. 【剑指offer-Java版】28字符串的排列
  3. RabbitMQ学习总结(4)——分发任务在多个工作者之间实例教程
  4. 【Android】Apk安装方式
  5. windows写文件到ubuntu之samba
  6. sql 查询 tag_Askgit:给git增加个翅膀,用sql挖掘仓库的信息
  7. Codeforces Beta Round #22 (Div. 2 Only) E. Scheme(DFS+强连通)
  8. 小高考计算机知识点,小高考政治知识点总结.pdf
  9. 暴风影音 打开 avi 视频文件时 explorer 出错 关闭
  10. python破解qq空间访问权限_怎么利用爬虫爬取QQ空间中设置了权限的无法正常访问的内容?...
  11. HTML中绑定点击事件的方式
  12. 国际海运流程有哪些,国际海运物流哪家比较好
  13. Java培训后如何找工作?
  14. Jsonviewer2 for Notepad++ 64 bit/位
  15. Hadoop的学习笔记(Hive|pig|zookeeper|hbase)
  16. 2022年都在说软件测试饱和了,是真的吗?
  17. 《数字图像处理》读书笔记2:数字图像处理基础
  18. 一汽集团2019美国招聘活动即将开启!
  19. 输入某年某月某日,判断只一天是这一年的第几天?
  20. DLX 项目总结(Deluxe processor)

热门文章

  1. Python爬虫与Opencv结合,制作一款自己的拍照翻译程序!
  2. 程序员合同日期不到想辞职_“我又辞职了”
  3. Lawliet|Python学习笔记3——函数
  4. 好久不见,最近忙起来了
  5. 7-10 接话茬 (25 分)
  6. 如何对项目的研发团队年终绩效考核?
  7. 重温CSS3常见新特性的奥秘(个人总结)
  8. 人流量统计(opencv,caffe,dlib)
  9. 虚拟机增加磁盘空间后lv扩容详细流程,linux扩容根目录详细流程【openstack和VMware虚拟机方法同理】,centos重装系统lvm后不可用处理流程,2021尾声祝福送上。
  10. java双端队列工作密取,同步器皿、并发容器、阻塞队列、双端队列与工作密取...