全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1195 5
2019-04-10
如何一次性定义多个函数(根据给定的整数n,定义n个函数),这些函数可由前面的函数表示(如图片所示):
<br>
定义:P1(x),P2(x),P3(x),...,Pn(x)
1554896816418649.jpeg
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2019-4-11 21:19:33
参考下吧
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2019-4-13 10:11:21
zhou1_20 发表于 2019-4-11 21:19
参考下吧
非常感谢您的回答!这样将函数计算结果存放起来,后续直接使用很方便。
根据正交多项式的使用特点,我稍稍做了修改,修改后代码如下:
ite_fun2=function(n,m){
  #n:数据维数;m:正交多项式最高项次数
  x <- c(1:n)
  p=matrix(NA,nrow = n,ncol = m+1)
  p[,1]=1;p[,2]=x-mean(x)
  p[,3]=p[2]^2-(n^2-1)/12
  for (k in 3:m) {
    p[,k+1]=p[,2]*p[,k]-(k^2*(n^2-k^2))/(4*(4*k^2-1))*p[,k-1]
  }
  return(p)
}
再次向您表示感谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2019-4-13 10:11:43
zhou1_20 发表于 2019-4-11 21:19
参考下吧
非常感谢您的回答!这样将函数计算结果存放起来,后续直接使用很方便。
根据正交多项式的使用特点,我稍稍做了修改,修改后代码如下:
ite_fun2=function(n,m){
  #n:数据维数;m:正交多项式最高项次数
  x <- c(1:n)
  p=matrix(NA,nrow = n,ncol = m+1)
  p[,1]=1;p[,2]=x-mean(x)
  p[,3]=p[2]^2-(n^2-1)/12
  for (k in 3:m) {
    p[,k+1]=p[,2]*p[,k]-(k^2*(n^2-k^2))/(4*(4*k^2-1))*p[,k-1]
  }
  return(p)
}
再次向您表示感谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2019-4-13 11:36:29
zhou1_20 发表于 2019-4-11 21:19
参考下吧
再向您请教一个问题:
代码中for循环:
for (k in 3:m) {
    p[,k+1]=p[,2]*p[,k]-(k^2*(n^2-k^2))/(4*(4*k^2-1))*p[,k-1]
  }
是否可以使用sapply函数替代。
我试验了多种方式:

但都不能完成以上for循环的功能。
在查看sapply函数帮助文件时,我发现这么一段:
Simplification in sapply is only attempted if X has length greater than zero and if the return values from all elements of X are all of the same (positive) length. If the common length is one the result is a vector, and if greater than one is a matrix with a column corresponding to each element of X.
代码sapply中的x=3:m,x每个元素公共长度为1,一次sapply只能返回一个向量,所以产生了上述图片中的错误,请问是这个原因吗?应如何去解决上面的问题呢?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2019-4-13 11:39:16
sapply(3:m,function(k){
+   p[,k+1]=p[,2]*p[,k]-(k^2*(n^2-k^2))/(4*(4*k^2-1))*p[,k-1]
+ })
            [,1] [,2] [,3]
[1,]  44.196429   NA   NA
[2,]  34.375000   NA   NA
[3,]  24.553571   NA   NA
[4,]  14.732143   NA   NA
[5,]   4.910714   NA   NA
[6,]  -4.910714   NA   NA
[7,] -14.732143   NA   NA
[8,] -24.553571   NA   NA
[9,] -34.375000   NA   NA
[10,] -44.196429   NA   NA

sapply(3:m,function(k){
+   re=p[,2]*p[,k]-(k^2*(n^2-k^2))/(4*(4*k^2-1))*p[,k-1]
+   return(re)
+ })
            [,1] [,2] [,3]
[1,]  44.196429   NA   NA
[2,]  34.375000   NA   NA
[3,]  24.553571   NA   NA
[4,]  14.732143   NA   NA
[5,]   4.910714   NA   NA
[6,]  -4.910714   NA   NA
[7,] -14.732143   NA   NA
[8,] -24.553571   NA   NA
[9,] -34.375000   NA   NA
[10,] -44.196429   NA   NA
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群