>> y=double(vpa(int(x.^(2.42869-1).*exp(-x),0,10),5));
??? Error using ==> sym.double at 29
DOUBLE cannot convert the input expression into a double array.
If the input expression contains a symbolic variable, use the VPA function instead.
>> y=double(vpa(int(x.^(2.5-1).*exp(-x),0,10),5));
>>
哪位高手知道为什么2.42869 带入计算 就有问题 2.5 就没问题。。多谢
matlab 调试
答案:1 悬赏:0
解决时间 2021-02-02 12:27
- 提问者网友:野性
- 2021-02-02 02:23
最佳答案
- 二级知识专家网友:风格单纯
- 2021-02-02 03:44
int厚的函数要有显式表达式初等函数vpa才有用,不然vpa是废材
2.5时,int后是显式的,而2.42869就没有显式了,int后只不过是另一种表达式,而实际上并没有积分出来,vpa后是没有任何作用的,double对于syms表达式作用当然会错,matlab中符号运算只有对于可运算的才有实际意义,比如solve解5次以上含参数代数方程,解了当没有解,又如dsolve解非线性微分方程,都是徒劳
见下:
int(x.^(2.5-1).*exp(-x),0,10)
ans =
(3*pi^(1/2)*erf(10^(1/2)))/4 - (23*10^(1/2))/(2*exp(10))
>> int(x.^(2.42869-1).*exp(-x),0,10)
ans =
- ((3217123875813977*10^(965324062128729/2251799813685248))/2251799813685248 + 10^(3217123875813977/2251799813685248))/exp(10) - (3105567088172068973424231445233*igamma(965324062128729/2251799813685248, 10))/5070602400912917605986812821504 - limit(- exp(-x)*(3217123875813977/2251799813685248*x^(965324062128729/2251799813685248) + x^(3217123875813977/2251799813685248)) - 3105567088172068973424231445233/5070602400912917605986812821504*igamma(965324062128729/2251799813685248, x), x = 0, Right)
所以不行
想算出来也不是难事
int(x.^(alpha-1).*exp(-x),0,beta)
=gammainc(beta,alpha)*gamma(alpha)
直接算就行
>> gammainc(10,2.5)*gamma(2.5)
ans =
1.3277
>> gammainc(10,2.42869)*gamma(2.42869)
ans =
1.2645
2.5时,int后是显式的,而2.42869就没有显式了,int后只不过是另一种表达式,而实际上并没有积分出来,vpa后是没有任何作用的,double对于syms表达式作用当然会错,matlab中符号运算只有对于可运算的才有实际意义,比如solve解5次以上含参数代数方程,解了当没有解,又如dsolve解非线性微分方程,都是徒劳
见下:
int(x.^(2.5-1).*exp(-x),0,10)
ans =
(3*pi^(1/2)*erf(10^(1/2)))/4 - (23*10^(1/2))/(2*exp(10))
>> int(x.^(2.42869-1).*exp(-x),0,10)
ans =
- ((3217123875813977*10^(965324062128729/2251799813685248))/2251799813685248 + 10^(3217123875813977/2251799813685248))/exp(10) - (3105567088172068973424231445233*igamma(965324062128729/2251799813685248, 10))/5070602400912917605986812821504 - limit(- exp(-x)*(3217123875813977/2251799813685248*x^(965324062128729/2251799813685248) + x^(3217123875813977/2251799813685248)) - 3105567088172068973424231445233/5070602400912917605986812821504*igamma(965324062128729/2251799813685248, x), x = 0, Right)
所以不行
想算出来也不是难事
int(x.^(alpha-1).*exp(-x),0,beta)
=gammainc(beta,alpha)*gamma(alpha)
直接算就行
>> gammainc(10,2.5)*gamma(2.5)
ans =
1.3277
>> gammainc(10,2.42869)*gamma(2.42869)
ans =
1.2645
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯