Mathematica对函数表达式求导并设置为新的自定义函数
自定义函数
自定义函数需要注意亮点
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对函数表达式求导并设置为新的自定义函数相关推荐
- java求导数_OO_JAVA_表达式求导
OO_JAVA_表达式求导_第一弹 ---------------------------------------------------表达式提取部分 词法分析 首先,每一个表达式内部都存在不可 ...
- OO_2019_第一单元总结——表达式求导
一.基于度量的程序结构分析 首先给出Complexity metrics中参数的含义: ev(G):基本复杂度是用来衡量程序非结构化程度的,非结构成分降低了程序的质量,增加了代码的维护难度,使程序难于 ...
- oo第一次博客-三次表达式求导的总结与反思
一.问题回顾与基本设计思路 三次作业依次是多项式表达式求导,多项式.三角函数混合求导,基于三角函数和多项式的嵌套表达式求导. 第一次作业想法很简单,根据指导书,我们可以发现表达式是由各个项与项之间的运 ...
- sigmoid函数的求导过程
sigmoid函数的求导过程涉及"链式求导"和"自然指数"的求导.
- sigmoid函数、tanh函数、softmax函数及求导
sigmoid函数和tanh函数都是激活函数,接收一个输入,产生一个输出.这里的求导是对激活函数求导.而softmax函数是一个多输入多输出的激活函数,这里提到的求导是对经过softmax函数后进行交 ...
- 高等数学——复杂函数的求导方法
本文始发于个人公众号:TechFlow,原创不易,求个关注 上一篇文章我们复习了函数求导的定义和一些常见函数的导数,今天这篇文章我们回顾一下复杂函数的求导方法.先强调一下,今天的文章很重要,想要看懂机 ...
- 变限积分函数的求导(终极版神器)
变限积分函数的求导(终极版神器) 在一定程度上,我们可以将积分和求导当成互逆运算. 可是如果为变限积分也即在积分上下限中也存在变量的情况下,就不是简单地将积分号去掉这么简单了,该如何运算呢. 一般教辅 ...
- R语言attributes函数(获取属性、设置属性)、attr函数(改变一个属性)、structure函数(改变数据形状)实战
R语言attributes函数(获取属性.设置属性).attr函数(改变一个属性).structure函数(改变数据形状)实战 目录
- 《剑指offer》写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。...
弱菜刷题还是刷中文题好了,没必要和英文过不去,现在的重点是基本代码能力的恢复. [题目] 剑指offer 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. [思路] 直觉 ...
最新文章
- LLDB命令查看内存的分配历史
- 【剑指offer-Java版】28字符串的排列
- RabbitMQ学习总结(4)——分发任务在多个工作者之间实例教程
- 【Android】Apk安装方式
- windows写文件到ubuntu之samba
- sql 查询 tag_Askgit:给git增加个翅膀,用sql挖掘仓库的信息
- Codeforces Beta Round #22 (Div. 2 Only) E. Scheme(DFS+强连通)
- 小高考计算机知识点,小高考政治知识点总结.pdf
- 暴风影音 打开 avi 视频文件时 explorer 出错 关闭
- python破解qq空间访问权限_怎么利用爬虫爬取QQ空间中设置了权限的无法正常访问的内容?...
- HTML中绑定点击事件的方式
- 国际海运流程有哪些,国际海运物流哪家比较好
- Java培训后如何找工作?
- Jsonviewer2 for Notepad++ 64 bit/位
- Hadoop的学习笔记(Hive|pig|zookeeper|hbase)
- 2022年都在说软件测试饱和了,是真的吗?
- 《数字图像处理》读书笔记2:数字图像处理基础
- 一汽集团2019美国招聘活动即将开启!
- 输入某年某月某日,判断只一天是这一年的第几天?
- DLX 项目总结(Deluxe processor)
热门文章
- Python爬虫与Opencv结合,制作一款自己的拍照翻译程序!
- 程序员合同日期不到想辞职_“我又辞职了”
- Lawliet|Python学习笔记3——函数
- 好久不见,最近忙起来了
- 7-10 接话茬 (25 分)
- 如何对项目的研发团队年终绩效考核?
- 重温CSS3常见新特性的奥秘(个人总结)
- 人流量统计(opencv,caffe,dlib)
- 虚拟机增加磁盘空间后lv扩容详细流程,linux扩容根目录详细流程【openstack和VMware虚拟机方法同理】,centos重装系统lvm后不可用处理流程,2021尾声祝福送上。
- java双端队列工作密取,同步器皿、并发容器、阻塞队列、双端队列与工作密取...