全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
15653 9
2011-08-07
x是一个包含49个数的数组 ,我想画出函数q,请问错在哪里?求高手指导!

ps其中T DT是已经定义好的函数

z=numeric(length(x))
q<-function(z)  1/49/0.1143*.075*sum((1-(T(z)-T(x))^2)*DT(z))

curve(q,from=10000,n=101)


Error in xy.coords(x, y, xlabel, ylabel, log) :
  'x' and 'y' lengths differ
In addition: Warning message:
In T(z) - T(x) :
  longer object length is not a multiple of shorter object length




二维码

扫码加我 拉你入群

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

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

全部回复
2011-8-8 03:49:29
你的z的数值已经固定为49了,所以你的函数只有一个点。
二维码

扫码加我 拉你入群

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

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

2011-8-8 08:14:02
qoiqpwqr 发表于 2011-8-8 03:49
你的z的数值已经固定为49了,所以你的函数只有一个点。
> x
[1] 1371.00 7702.00 49.00 207.00 6655.00 206827.00
[7] 17064.00 4.00 72845.00 56545.00 2695.00 313.00
[13] 12498.00 24835.00 175254.00 2158500.00 602.00 2928.00
[19] 50984.00 593.00 6698.00 5075.00 44388.00 495.00
[25] 36935.00 23673.00 15179.00 281652.00 158713.00 77431.00
[31] 67388.00 25326.00 28433.00 32433.00 116355.00 460273.00
[37] 125209.00 184164.00 47380.00 146792.00 148449.00 14774.40
[43] 466041.00 94959.27 262810.80 79962.00 201922.06 85949594.00
[49] 273782.00
> T<-function(x){
+ m=44388
+ a=0.6714
+ c=0.0263
+ ((x+c)^a-c^a)/((x+c)^a+(m+c)^a-2*c^a)
+ }
>
>
> DT<-function(x){
+ m=44388
+ a=0.6714
+ c=0.0263
+ a*(x+c)^(a-1)*((m+c)^a-c^a)/((x+c)^a+(m+c)^a-2*c^a)^2
+ }
>
>
>
> q1<-function(z) 1/49/0.1143*.075/(0.75/0.1143-(1-3*T(z)^2-3*T(z))/4*0.1143^3)*sum((1-(T(z)-T(x))^2)*DT(z))
>
> q2<-function(z) 1/49/0.1143*.075/(0.75/0.1143*(1-T(z))-(1-3*T(z)^3)/4*0.1143^3+0.5)*sum((1-(T(z)-T(x))^2)*DT(z))
>
> q3<-function(z) 1/49/0.1143*.075*sum((1-(T(z)-T(x))^2)*DT(z))
>
> area=function(t) {
+ if(x<2104) area<-q1
+ else if (x>=2104&x<=936883) area<-q2
+ else area<-q3
+ }
> curve(area,0,10000000)
Error in xy.coords(x, y, xlabel, ylabel, log) :
'x' and 'y' lengths differ
In addition: Warning message:
In if (x < 2104) area <- q1 else if (x >= 2104 & x <= 936883) area <- q2 else area <- q3 :
the condition has length > 1 and only the first element will be used


万分感谢!那请问现在错误怎么改?。。。不知道哪个length不对。。。
二维码

扫码加我 拉你入群

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

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

2011-8-8 11:27:48
area=function(t) {
if(x<2104) area<-q1
else if (x>=2104&x<=936883) area<-q2
else area<-q3
}
变量名不对,变量为x,x是个vector,所以循环语句判断x中元素的大小,修改以后的area为
area=function(x) {
for(i in length(x)){
   if(x[i]<2104) area<-q1
   else if ((x[i]>=2104)&&(x[i]<=936883)) area<-q2
   else area<-q3
   }
}
请验证
二维码

扫码加我 拉你入群

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

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

2011-8-8 11:31:39
不过画出来来是条直线,不知道什么含义
二维码

扫码加我 拉你入群

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

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

2011-8-8 19:26:16
额,多谢楼上两位,但是应该不是这样的。。。

q1 q2 q3是关于z多项式的函数,x是一维数组,仅仅是把它代入到q1 q2 q3式子里面

所以最后分段函数应该是分段连续的,我不知道怎么改。。。

另外顺便问下https://bbs.pinggu.org/forum.php? ... p;page=1#pid2304633
错在哪里?这个简单许多但同样错误。。。
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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