R语言第二课(5)

2018-11-21 21:31

3 求矩阵行列式值:det( )

A<-matrix(c(1:8,0),nrow=3,ncol=3);A det(A)

[1] 27 ###结果

4 生成对角阵和对角运算

diag( ): v是一个向量时,diag(v)表示以v的元素为对角线的对角阵,M是一个矩阵时,diag(M)表示取M的对角线上的元素构成的向量 v<-c(1,4,5) diag(v)

M<-array(1:9,dim=c(3,3));M diag(M)

5矩阵范数norm( ):

norm(x, type = c(\

参数x为矩阵,type为字符串,表示计算范数的类型,\范数,\范数,

\为无穷大范数,等。 A<-matrix(c(1,3,2,4),ncol=2) norm(A)

[1] 6 ###结果

二 求解线性方程组

solve(a, b, tol, LINPACK = FALSE, ...)

参数a为方阵,b为向量或矩阵,默认值为单位矩阵,tol为精度要求,当小于精度时,认为矩阵a的各列线性相关,LINPACK为逻辑变量,判断是否使用LINPACK

包,默认值为FALSE.

例 求解线性方程组 AX=b,

,

A<- matrix(c(1:8,0),nrow=3,byrow=TRUE);b<-c(1,1,1)

x<-solve(A,b);x

三 非线性方程求根:uniroot( ) uniroot(f, interval, ...,

lower = min(interval), upper = max(interval), f.lower = f(lower, ...), f.upper = f(upper, ...),

extendInt = c(\ tol = .Machine$double.eps^0.25, maxiter = 1000, trace = 0)

参数f为需求根的函数,interval为包含方程根的初始区间,lower和upper分别为搜索区间的左右端点,默认值分别为interval的最小和最大,分别为左右端点的函数值,默认值由函数计算得到,tol为精度要求,maxiter最大迭代次数,默认值为1000。

例 求解非线性方程:x3-x-1=0 的根,初始区间为[1,2]. f<-function(x) x^3-x-1

uniroot(f,c(1,2)) ####等价:uniroot(f,lower=1,upper=2)

21

polyroot( )函数专为求多项式根: 格式:polyroot( z )

参数z为n维向量,是n-1阶多项式的系数: P(x)=z1+z2x+…+znxn-1

例:求多项式x3-x-1=0的全部根。 polyroot( c(-1,-1,0,1))

[1] -0.662359+0.5622795i -0.662359-0.5622795i 1.324718+0.0000000i ##结果

四. 求函数极值

1求一元函数极值 optimize( )或optimise( ) 格式:

optimize(f = , interval = , ..., lower = min(interval), upper = max(interval), maximum = FALSE, tol = .Machine$double.eps^0.25)

optimise(f = , interval = , ..., lower = min(interval), upper = max(interval), maximum = FALSE, tol = .Machine$double.eps^0.25)

参数f为求极值的函数,interval为向量,表示初始区间,…提供目标函数f的附加参数,lower 和upper分别表示搜索极值的左右端点,默认值由参数interval提供,maximum为逻辑变量,取值为FALSE(默认值)表示求极小, 为TRUE表示求极大,tol为精度要求。返回值为列表,有极小点(minimum)和目标函数值(objective)。

3

例 求一元函数f(x)=x-2x-3在区间[0,2]上的极小点。 f<-function(x) x^3-2*x-3 optimize(f,lower=0,upper=2)

$minimum ###结果 [1] 0.8164968 $objective [1] -4.088662

目标函数有附加参数: f(x)=(x-a)^2 , a=1/3. f<-function(x,a) (x-a)^2

optimize(f, interval=c(0,1), a=1/3) $minimum ###结果 [1] 0.3333333 $objective [1] 0

2求多元函数极值:nlm( ) 格式:

nlm(f, p, ..., hessian = FALSE, typsize = rep(1, length(p)), fscale = 1, print.level = 0, ndigit = 12, gradtol = 1e-6, stepmax = max(1000 * sqrt(sum((p/typsize)^2)), 1000),

22

steptol = 1e-6, iterlim = 100, check.analyticals = TRUE)

参数f为求极值的目标函数,p为初始参数,…提供目标函数f的附加参数,hessian为逻辑变量,取值为FALSE, 当取TRUE时f中包含梯度,steptol表示步长的

精度要求,iterlim最大迭代次数,默认值100。

函数返回值是一个列表,包含minimum极小值,estimate极小点的估计值,code编码,值为1或2时,表示当前点为最优点,值为3,4,5时表示当前点可能不是最优点,iterations迭代次数。

例 求min f(x)=100(x2-x12)2+(1-x1)2极小点,取初始点x(0)=(-1.2,1)T 解:

obj<-function(x) 100*(x[2]-x[1]^2)^2+(1-x[1])^2 nlm(obj,c(-1.2,1))

$minimum

[1] 3.973766e-12 $estimate

[1] 0.999998 0.999996 $gradient

[1] -6.539281e-07 3.335999e-07 $code [1] 1

$iterations [1] 23

四 数值积分

格式:integrate(f, lower, upper, ..., subdivisions = 100,

rel.tol = .Machine$double.eps^0.25, abs.tol = rel.tol, stop.on.error = TRUE, keep.xy = FALSE, aux = NULL)

参数f为被积函数,lower和 upper分别为积分的下限和上限,积分限可以为Inf(表示),…为被积函数的附加参数,subdivisions表示子区间的最大数目,rel.tol为所需的相对精度,abs.tol为所需的绝对精度,其它参数使用默认值。 例 求积分,积分区间[0,1] 解 f<-function(x) exp(-x^2) integrate(f,0,1)

0.74 68241 with absolute error < 8.3e-15 ###结果

23


R语言第二课(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:5、学会感恩内容

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

马上注册会员

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