R语言实验三 下载本文

内容发布更新时间 : 2024/5/7 2:11:34星期一 下面是文章的全部内容请认真阅读。

8.一元函数极值

f<-function(x) x^3-2*x-5 # 定义函数

optimize(f,lower=0,upper=2) # 返回值 : 极小值点和目标函数

f<-function(x,a) (x-a)^2 # 定义含有参数的函数

optimize(f,interval=c(0,1),a=1/3) # 在函数中输入附加参数

9.多元函数极值 (1)

obj <-function (x){ # 定义函数

F<-c(10*(x[2]-x[1]^2),1-x[1]) # 视为向量 sum (F^2) } # 向量对应分量平方后求和 nlm(obj,c(-1.2,1))

(2)

fn<-function(x){ # 定义目标函数

F<-c(10*(x[2]-x[1]^2), 1-x[1]) t(F)%*%F } # 向量的内积

gr <- function(x){ # 定义梯度函数 F<-c(10*(x[2]-x[1]^2), 1-x[1])

J<-matrix(c(-20*x[1],10,-1,0),2,2,byrow=T) #Jacobi 矩阵 2*t(J)%*%F } # 梯度

optim(c(-1.2,1), fn, gr, method=\

最优点 (par) 、最优函数值 (value)

10.梯形求积分公式

(1)求积分程序: (trape.R)

trape<-function(fun, a, b, tol=1e-6){ # 精度为 10 -6

N <- 1; h <- b-a ; T <- h/2 * (fun(a) + fun(b)) # 梯形面积 repeat{h <- h/2; x<-a+(2*1:N-1)*h; I <-T/2 + h*sum(fun(x)) if(abs(I-T) < tol) break; N <- 2 * N; T = I }; I}

(2)

source(\调用函数 f<-function(x) exp(-x^2) trape(f,-1,1)

(3)常用求积分函数

f<-function(x)exp(-x^2) # 定义函数 integrate(f,0,1) integrate(f,0,10) integrate(f,0,100)

integrate(f,0,10000) # 当积分上限很大时,结果出现问题 integrate(f,0,Inf) # 积分上限为无穷大

ft<-function(t) exp(-(t/(1-t))^2)/(1-t)^2 # 对上述积分的被积函数 e 2 作变量代换 t=x/(1+x) 后的函数

integrate(ft,0,1) # 与上述计算结果相同,且精度较高

第二部分、教材例题:

1.随机抽样

(1)等可能的不放回的随机抽样:

> sample(x, n) 其中x为要抽取的向量, n为样本容量

(2)等可能的有放回的随机抽样:

> sample(x, n, replace=TRUE)

其中选项replace=TRUE表示有放回的, 此选项省略或replace=FALSE表示抽样是不放回的

sample(c(\sample(1:6, 10, replace=T)

(3)不等可能的随机抽样:

> sample(x, n, replace=TRUE, prob=y)

其中选项prob=y用于指定x中元素出现的概率, 向量y与x等长度 sample(c(\成功\失败\sample(c(1,0), 10, replace=T, prob=c(0.9,0.1))

2.排列组合与概率的计算 1/prod(52:49) 1/choose(52,4)

3.概率分布

qnorm(0.025) #显著性水平为5%的正态分布的双侧临界值 qnorm(0.975)

1 - pchisq(3.84, 1) #计算假设检验的p值

2*pt(-2.43, df = 13) #容量为14的双边t检验的p值

4. limite.central( )的定义

limite.central <- function (r=runif, distpar=c(0,1), m=.5,

s=1/sqrt(12),

n=c(1,3,10,30), N=1000) { for (i in n) {

if (length(distpar)==2){

x <- matrix(r(i*N, distpar[1],distpar[2]),nc=i) }

else {

x <- matrix(r(i*N, distpar), nc=i) }

x <- (apply(x, 1, sum) - i*m )/(sqrt(i)*s)

hist(x,col=\ ylim=c(0,max(.4, density(x)$y))) lines(density(x), col=\

curve(dnorm(x), col=\ if( N>100 ) {

rug(sample(x,100)) }

else { rug(x) } } }

5.直方图

x=runif(100,min=0,max=1) hist(x)