用R语言实现一个求导的简单例子
2014-11-21 10:07
253 查看
在学习导数的时候,老师都会这样解释,假设y=f(x),对点(x0,y0)的求导过程如下:
设dx是一个很小的数
=> y0+dy=f(x0+dx)
=> dy=f(x0+dx)-y0
则在这一点的导数a=dy/dx
这样假设的前提是dx很小,所以x0至(x0+dx)很短,可以近似为一条直线,则dy/dx可以看成是点(x0,y0)和点(x0+dx,y0+dy)连成直线的斜率
因此关于某个点的导数,其意义也可以解释成在该点的变化率
下面用R语言实现一个简单例子:
假设:y=1/x,求点(1,1)的导数
x<-seq(0,3,by=0.0001)
y<-1/x ##生成模拟数据
d_point<-data.frame(x,y)
x0<-1
y0<-1/x0 ##点(1,1)
dx=0.0001 ##dx很小
dy<-1/(x0+dx)-y0
a<-dy/dx ##导数
b<-y0-a*x0 ##直线与y抽的截距
library(ggplot2) ##画图
p<-ggplot(subset(d_point,y<=3),aes(x,y))
p+geom_line()+geom_abline(intercept=b, slope=a,linetype=2)+geom_point(data=data.frame(x=1,y=1),aes(colour="red"))
##结果:
设dx是一个很小的数
=> y0+dy=f(x0+dx)
=> dy=f(x0+dx)-y0
则在这一点的导数a=dy/dx
这样假设的前提是dx很小,所以x0至(x0+dx)很短,可以近似为一条直线,则dy/dx可以看成是点(x0,y0)和点(x0+dx,y0+dy)连成直线的斜率
因此关于某个点的导数,其意义也可以解释成在该点的变化率
下面用R语言实现一个简单例子:
假设:y=1/x,求点(1,1)的导数
x<-seq(0,3,by=0.0001)
y<-1/x ##生成模拟数据
d_point<-data.frame(x,y)
x0<-1
y0<-1/x0 ##点(1,1)
dx=0.0001 ##dx很小
dy<-1/(x0+dx)-y0
a<-dy/dx ##导数
b<-y0-a*x0 ##直线与y抽的截距
library(ggplot2) ##画图
p<-ggplot(subset(d_point,y<=3),aes(x,y))
p+geom_line()+geom_abline(intercept=b, slope=a,linetype=2)+geom_point(data=data.frame(x=1,y=1),aes(colour="red"))
##结果:
相关文章推荐
- 一个实现了ViewPart和EditroPart的简单RCP例子
- 一个简单实现多条件查询的例子
- 拦截器概述及其简单实现的一个例子
- 一个Go语言接口和多操作系统实现的简单例子
- 一个简单的内存池实现的例子
- 一个简单的Spring实现的例子
- 一个简单的jQuery插件ajaxfileupload实现ajax上传文件例子
- 用socket.io实现WebSocket的一个简单例子
- 一个简单的VCard实现例子
- 使用CXF框架实现webservice的一个简单例子
- 一个C#实现的最简单的委托例子
- 今天的问题:一个简单的例子,请帮我解开“接口实现Java‘隐藏实现细目’”的迷惑。
- 用java实现一个简单的序列化的例子
- 关于JbpmCenter和Mule整合实现一个审核的简单例子
- 一个简单实现多条件查询的例子
- 一个在程序中实现plugin机制的简单例子
- 在windows 下用C实现的一个多播的简单例子。
- SQL2000 存储过程中实现递归的一个简单例子
- 在windows 下用C实现的一个多播的简单例子
- extJs+json实现的一个登陆验证的简单例子