各位好,本人在用integral计算积分时,积分公式中涉及幂次运算,编译的时候一直提示矩阵维度必须一致,由于matlab不熟悉无法定位具体是表达式哪里出现问题,请各位帮忙看看。谢谢!
下面是运行代码以及错误信息
clear
clc
T = 50;
m =1;
t1 = 40;
t = 20;
mu30 = 0.9748;
tau30 = 0.02;
beta1 = 1;
beta2 = 4;
n =10;
tau = 30;
U = t1;
fb = @(z) power(z/(z+2),log(mu30)/log(z/(z+1)))-power(z/(z+1),2*log(mu30)/log(z/(z+1)))-power(tau30,2);
b = double(vpa(solve(fb)))
a = log(mu30)/log(b/(b+1))
xbeta = @(beta) power(t1,beta)+(n-m)*power(T,beta);
fd1 = @(beta) power(beta,m).*power(tau,a*beta).*power(U,beta-1);
fd2 = @(beta) power(xbeta(beta)+b*power(tau,beta),m+a);
Idata = double(vpa(integral(@(beta)fd1(beta)./fd2(beta),beta1,beta2)))
fr1 = @(beta) power(beta,m).*power(tau,a*beta).*power(U,beta-1)
fr2 = @(beta) power(xbeta(beta)+b*power(tau,beta)+power(t,beta),m+a)
r1 = vpa(integral(@(beta)fr1(beta)./fr2(beta),beta1,beta2)/Idata)
fpr1 = 1/(gamma(m+a)*Idata)
fpr2 = @(r) power(log(1./r),m+a-1)./r
fpr3 = @(beta,r) power(beta,m).*power(tau,a*beta).*power(U,beta-1).*power(r,(xbeta(beta)+b*power(tau,beta))/power(t,beta))./power(t,beta*(m+a))
fpr3 = @(r) integral(@(beta) fpr3(beta,r),beta1,beta2)
fpr = @(r) fpr1.*fpr2(r).*fpr3(r)
mu1 = integral(@(r) r.*fpr(r),0,1)
----------------------------------------------------------
错误信息
矩阵维度必须一致。
出错 Untitled5>@(beta,r)power(beta,m).*power(tau,a*beta).*power(U,beta-1).*power(r,(xbeta(beta)+b*power(tau,beta))/power(t,beta))./power(t,beta*(m+a))
出错 Untitled5>@(beta)fpr3(beta,r)
出错 integralCalc/iterateScalarValued (line 323)
fx = FUN(t).*w;
出错 integralCalc/vadapt (line 132)
[q,errbnd] = iterateScalarValued(u,tinterval,pathlen);
出错 integralCalc (line 75)
[q,errbnd] = vadapt(@AtoBInvTransform,interval);
出错 integral (line 88)
Q = integralCalc(fun,a,b,opstruct);
出错 Untitled5>@(r)integral(@(beta)fpr3(beta,r),beta1,beta2)
出错 Untitled5>@(r)fpr1.*fpr2(r).*fpr3(r)
出错 Untitled5>@(r)r.*fpr(r)
出错 integralCalc/iterateScalarValued (line 314)
fx = FUN(t);
出错 integralCalc/vadapt (line 132)
[q,errbnd] = iterateScalarValued(u,tinterval,pathlen);
出错 integralCalc (line 75)
[q,errbnd] = vadapt(@AtoBInvTransform,interval);
出错 integral (line 88)
Q = integralCalc(fun,a,b,opstruct);
出错 Untitled5 (line 29)
mu1 = integral(@(r) r.*fpr(r),0,1)

 Réponse acceptée

gcstsuxy
gcstsuxy le 21 Mai 2023

0 votes

仅供参考
clear
clc
T = 50;
m =1;
t1 = 40;
t = 20;
mu30 = 0.9748;
tau30 = 0.02;
beta1 = 1;
beta2 = 4;
n =10;
tau = 30;
U = t1;
syms z
fb = power(z/(z+2),log(mu30)/log(z/(z+1)))-power(z/(z+1),2*log(mu30)/log(z/(z+1)))-power(tau30,2);
b = double(vpasolve(fb));
a = log(mu30)/log(b/(b+1));
xbeta = @(beta) power(t1,beta)+(n-m)*power(T,beta);
fd1 = @(beta) power(beta,m).*power(tau,a*beta).*power(U,beta-1);
fd2 = @(beta) power(xbeta(beta)+b*power(tau,beta),m+a);
Idata = double(vpa(integral(@(beta)fd1(beta)./fd2(beta),beta1,beta2)));
fr1 = @(beta) power(beta,m).*power(tau,a*beta).*power(U,beta-1);
fr2 = @(beta) power(xbeta(beta)+b*power(tau,beta)+power(t,beta),m+a);
r1 = vpa(integral(@(beta)fr1(beta)./fr2(beta),beta1,beta2)/Idata);
fpr1 = 1/(gamma(m+a)*Idata);
fpr2 = @(r) power(log(1./r),m+a-1)./r;
fpr3 = @(beta,r) power(beta,m).*power(tau,a*beta).*power(U,beta-1).*power(r,(xbeta(beta)+b*power(tau,beta))/power(t,beta))./power(t,beta*(m+a));
fpr3 = @(r) integral(@(beta) fpr3(beta,r),beta1,beta2);
fpr = @(r) fpr1.*fpr2(r).*fpr3(r);
mu1 = integral(@(r) r.*fpr(r),0,1,'ArrayValued',true)

Plus de réponses (0)

Catégories

En savoir plus sur 数学 dans Centre d'aide et File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!