R的极客理想-中学数学 导数 概率 连续分布-R语言(7)

2019-04-21 18:39

# 创建数据点

> x<-seq(-5,5,by=0.01) > y<-f1(x,a,b)

> df<-data.frame(x,y)

# 用ggplot2来画图

> g<-ggplot(df,aes(x,y))

> g<-g+geom_line(col='red') #红色直线

> g<-g+geom_point(aes(result$root,0),col=\点 > g<-g+geom_hline(yintercept=0)+geom_vline(yintercept=0) #坐标轴 > g<-g+ggtitle(paste(\> g

4.2 一元二次方程

一元二次方程:a*x^2+b*x+c=0,设a=1,b=5,c=6,求x?

> f2 <- function (x, a, b, c) a*x^2+b*x+c > a<-1;b<-5;c<-6

> result <- uniroot(f2,c(0,-2),a=a,b=b,c=c,tol=0.0001) > result$root [1] -2

把参数带入方程,用uniroot()函数,我们就解出了方程的一个根,改变计算的区间,我们就可以得到另一个根。

> result <- uniroot(f2,c(-4,-3),a=a,b=b,c=c,tol=0.0001) > result$root [1] -3

方程的两个根,一个是-2,一个是-3。

由于uniroot()函数,每次只能计算一个根,而且要求输入的区间端值,必须是正负号相反的。如果我们直接输入一个(-10,0)这个区间,那么uniroot()函数会出现错误。

> result <- uniroot(f2,c(-10,0),a=a,b=b,c=c,tol=0.0001)

Error in uniroot(f2, c(-10, 0), a = a, b = b, c = c, tol = 1e-04) : 位于极点边的f()值之正负号不相反

这应该是uniroot()为了统计计算对一元多次方程而设计的,所以为了使用uniroot()函数,我们需要取不同的区别来获得方程的根。 以图形展示方程:y = x^2 + 5*x + 6

# 创建数据点

> x<-seq(-5,1,by=0.01) > y<-f2(x,a,b,c) > df<-data.frame(x,y)

# 用ggplot2来画图

> g<-ggplot(df,aes(x,y))

> g<-g+geom_line(col='red') #红色曲线

> g<-g+geom_hline(yintercept=0)+geom_vline(yintercept=0) #坐标轴 > g<-g+ggtitle(paste(\> g

我们从图,并直接的看到了x的两个根取值范围。 4.3 一元三次方程

一元二次方程:a*x^3+b*x^2+c*x+d=0,设a=1,b=5,c=6,d=-11,求x?

> f3 <- function (x, a, b, c,d) a*x^3+b*x^2+c*x+d > a<-1;b<-5;c<-6;d<--11

> result <- uniroot(f3,c(-5,5),a=a,b=b,c=c,d=d,tol=0.0001) > result$root [1] 0.9461458

如果我们设置对了取值区间,那么一下就得到了方程的根。 以图形展示方程:y = x^2 + 5*x + 6

# 创建数据点

> x<-seq(-5,5,by=0.01) > y<-f3(x,a,b,c,d) > df<-data.frame(x,y)

# 用ggplot2画图

> g<-ggplot(df,aes(x,y))

> g<-g+geom_line(col='red') # 3次曲线

> g<-g+geom_hline(yintercept=0)+geom_vline(yintercept=0) #坐标轴 > g<-g+ggtitle(paste(\> g

4.4 二元一次方程组

R语言还可以解二次的方程组,当然计算方法,其实是利用于矩阵计算。 假设方程组:是以x1,x2两个变量组成的方程组,求x1,x2的值

以矩阵形式,构建方程组

# 左矩阵

> lf<-matrix(c(3,5,1,2),nrow=2,byrow=TRUE)

# 右矩阵

> rf<-matrix(c(4,1),nrow=2)

# 计算结果

> result<-solve(lf,rf) > result [,1] [1,] 3 [2,] -1

得方程组的解,x1, x2分别为3和-1。

接下来,我们画出这两个线性方程的图。设y=X2, x=X1,把原方程组变成两个函数形式。

# 定义2个函数

> fy1<-function(x) (-3*x+4)/5 > fy2<-function(x) (-1*x+1)/2

# 定义数据

> x<-seq(-1,4,by=0.01) > y1<-fy1(x) > y2<-fy2(x)

> dy1<-data.frame(x,y=y1,type=paste(\> dy2<-data.frame(x,y=y2,type=paste(\> df <- rbind(dy1,dy2)

# 用ggplot2画图

> g<-ggplot(df,aes(x,y))

> g<-g+geom_line(aes(colour=type,stat='identity')) #2条直线 > g<-g+geom_hline(yintercept=0)+geom_vline(yintercept=0) #坐标轴 > g

我们看到两条直线交点的坐标,就是方程组的两个根。多元一次方程,同样可以用这种方法来解得。

通过R语言,我们实现了对于初等数学的各种计算,真的是非常方便!下一篇文章将介绍,用R语言来解决高级数学中的计算问题。

前言

高等数学是每个大学生都要学习的一门数学基础课,同时也可能是考完试后最容易忘记的一门知识。

我在学习高数的时候绞尽脑汁,但始终都不知道为何而学。生活和工作基本用不到,就算是在计算机行业和金融行业,能直接用到高数的地方也少之又少,学术和实际应用真是相差太远了。

不过,R语言为我打开了一道高数应用的大门,R语言不仅能方便地实现高等数学的计算,还可以很容易地把一篇论文中的高数公式应用于产品的实践中。 因为R语言我重新学习了高数,让生活中充满数学,生活会变得更有意思。 本节并不是完整的高数计算手册,仅介绍了导数计算和偏导数计算的R语言实现。 目录 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的极客理想-中学数学 导数 概率 连续分布-R语言(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:煤矿通风机设备安装工程施工组织设计#河南

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: