matlab integral积分矩阵维度不一致。
Show older comments
各位好,本人在用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)
Accepted Answer
More Answers (0)
Categories
Find more on Calculus in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!