楼主: veronicalq
3945 7

[问答] 急!急!如何以矩阵每一个元素为积分上限分别求积分 [推广有奖]

  • 0关注
  • 0粉丝

已卖:1份资源

大专生

43%

还不是VIP/贵宾

-

威望
0
论坛币
4276 个
通用积分
0
学术水平
1 点
热心指数
2 点
信用等级
1 点
经验
837 点
帖子
38
精华
0
在线时间
46 小时
注册时间
2009-12-9
最后登录
2015-7-27

楼主
veronicalq 发表于 2014-6-24 15:36:11 |AI写论文
30论坛币
问题如上,
现有一个i*j矩阵h,以h的每一个元素为积分上限,求积分,并且结果也存在一个i*j的矩阵中
假设i为100,j为50
for (i in 1:100){
  for (j in 1:50){

Ef <- integrate(dnorm,-Inf, h[i,j], mean=0, sd=2)

j <- j+1}
i <- i+1
}
问题,是不是Ef变成一个向量了?如何让其结果为 i*j 的矩阵呢?问题很简单,求大神指导菜鸟

最佳答案

关键词:For 如何

沙发
lww1993 发表于 2014-6-24 15:36:12
Ef<-matrix(0,nrow=500,ncol=50)
for (i in 1:100){
  for (j in 1:50){
    Ef[i,j]<-integrate(dnorm,-Inf, h[i,j])
}
}

藤椅
lww1993 发表于 2014-6-25 18:15:11
integrate(dnorm,-Inf, h[i,j], mean=0, sd=2)表达式好像不对

板凳
lww1993 发表于 2014-6-25 18:15:45
可能你要自己写被积函数表达式

报纸
veronicalq 发表于 2014-6-26 11:26:07 来自手机
lww1993 发表于 2014-6-25 18:15
integrate(dnorm,-Inf, h, mean=0, sd=2)表达式好像不对
这个积分表达式还是对的,是对正太分布密度函数求积分,这个正太分布函数均值为0,方差是2,之所以这么定义,是后面还有计算方差会一改变。这个积分可以算出来结果,就是单个结果而已。明白了对Ef矩阵的定义要在循环前,我定义在循环内了!晚上回家尝试运行下!马上给分、现在在车上,今天一天在外面!非常感谢!

地板
veronicalq 发表于 2014-6-27 11:38:31
运行了一下,打印出来的ef矩阵是0矩阵啊,数值都是0,为什么计算数值代不进去呢?

7
veronicalq 发表于 2014-6-27 13:21:12
lww1993 发表于 2014-6-25 18:15
可能你要自己写被积函数表达式
谢谢楼上,
出现错误提示被替换的项目不是替换值长度的倍数~是不是还是数值和矩阵元素之间关系不能这么替换啊

8
veronicalq 发表于 2014-6-27 14:32:56
特别特别开心,长久以来困扰的问题终于被解决了~其实没有那么复杂,R也不是像C那么低级的语言!
R里有一个命令 apply
就是可以运用自己的公式对数组或者矩阵的每一个元素进行这个矩阵的计算!
fi2 <- function(x){
integrate(dnorm, -Inf, x, mean = 0, sd = 2)$value
}
Ef<- apply(h,c(1,2), fun)

很简单!就解决了!

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 19:50