Ein Problem mit der numerischen Bewertung der Abdeckungswahrscheinlichkeit unter Verwendung von MATLAB
Ich versuche, einen komplizierten Überdeckungswahrscheinlichkeitsausdruck mit MATLAB unter Verwendung dieses Codes numerisch auszuwerten:
clc; clear; beta_dB=0; beta=10^(beta_dB/10); N=50; ra=4*10^3; h=120; alpha=2.5; m=2; x0=500; s_p= ra + x0; s_m= ra - x0; w_p =sqrt(s_p^2+h^2); w_m =sqrt(s_m^2+h^2); d=sqrt(ra^2+h^2); syms wa ua rr ss s= @(rr) m*beta*rr^(alpha); thetaa= acos((wa^2 + x0^2 - d^2)/(2*x0*sqrt(wa^2 - h^2))); phi= acos((x0^2 + d^2 - wa^2)/(2*x0*ra)); f_w1= (2*wa)/(ra)^2; F_w1= (wa^2 - h^2)/(ra)^2; f_w2= ((2*wa)/(pi*(ra)^2))*thetaa; F_w2= (((wa^2 - h^2)/(pi*(ra)^2))*(thetaa-(0.5*sin(2*thetaa)))) + ((1/pi)*(phi-(0.5*sin(2*phi)))); f_rr1= N*((1-subs(F_w1,wa,rr))^(N-1))*subs(f_w1,wa,rr); f_rr2= N*((1-subs(F_w2,wa,rr))^(N-1))*subs(f_w2,wa,rr); f_rr1fun=matlabFunction(f_rr1); f_rr2fun=matlabFunction(f_rr2); MGF_gammaL=(1+((ss*ua^(-alpha))/(m)))^(-m); for k=1:m D_MGF(k)=diff(MGF_gammaL,ss,k-1); end f_Ua11= subs(f_w1,wa,ua)/(1-subs(F_w1,wa,rr)); f_Ua21= subs(f_w2,wa,ua)/(1-subs(F_w1,wa,rr)); f_Ua22= subs(f_w2,wa,ua)/(1-subs(F_w2,wa,rr)); AaL1HAT= MGF_gammaL*f_Ua11; AaL2HAT= MGF_gammaL*f_Ua21; AaL1HATfun=matlabFunction(AaL1HAT); AaL2HATfun=matlabFunction(AaL2HAT); integAaL1HAT=@(rr,ss)integral(@(ua)AaL1HATfun(rr,ss,ua),rr ,w_m,'ArrryValued', true); integAaL2HAT=@(rr,ss)integral(@(ua)AaL2HATfun(rr,ss,ua),w_m, w_p,'ArrayValued', true); LAaLHAT= @(rr,ss) (integAaL1HAT(rr,ss)+ integAaL2HAT(rr,ss)).^(N-1); BaLHAT= MGF_gammaL*f_Ua22; BaLHATfun=matlabFunction(BaLHAT); integBaLHAT=@(rr,ss)integral(@(ua)BaLHATfun(rr,ss,ua),rr ,w_p,'ArrayValued', true); LBaLHAT=@(rr,ss)(integBaLHAT(rr,ss)).^(N-1); LAsum=0; for kk=1:m d_fA=@(rr,ss) diff(LAaLHAT(rr,ss),ss,kk-1); d_fA1=@(rr) d_fA(rr,s(rr)); LAsum= @(rr) (LAsum+ ((-1)^(kk-1)/factorial(kk-1))*d_fA1(rr)); end LAFinal= LAsum(rr); LBsum=0; for kk=1:m d_fB=@(rr,ss) diff(LAaLHAT(rr,ss),ss,kk-1); d_fB1=@(rr) d_fB(rr,s(rr)); LBsum= @(rr) (LBsum+ ((-1)^(kk-1)/factorial(kk-1))*d_fB1(rr)); end LBFinal= LBsum(rr); integrandaA=@(rr) LAFinal(rr).*f_rr1fun(rr); integrandaB=@(rr) LBFinal(rr).*f_rr2fun(rr); Pcova= int(integrandaA(rr), h, w_m)+ int(integrandaB(rr), w_m, w_p)
Beim Ausführen des Codes erhalte ich die folgende Fehlermeldung:
Error using integral (line 85) A and B must be floating-point scalars. Error in @(rr,ss)integral(@(ua)AaL1HATfun(rr,ss,ua),rr,w_m,'ArrryValued',true) Error in @(rr,ss)(integAaL1HAT(rr,ss)+integAaL2HAT(rr,ss)).^(N-1) Error in @(rr,ss)diff(LAaLHAT(rr,ss),ss,kk-1) Error in @(rr)d_fA(rr,s(rr)) Error in @(rr)(LAsum+((-1)^(kk-1)/factorial(kk-1))*d_fA1(rr))
Der Code sollte einen numerischen Wert ausgeben Pcova
, der in diesem speziellen Fall sein sollte 0.29
. Es scheint jedoch, dass MATLAB die Integrale in A und B nicht symbolisch lösen konnte, was die Differenzierung zu einer schwierigen Aufgabe machte. Ich habe verschiedene Wege ausprobiert, um diesen Fehler zu beheben, aber keiner hat funktioniert.
HINWEIS:
Ich weiß, dass der Ausdruck ziemlich kompliziert ist, aber aufgrund der Richtlinie kein Foto posten konnte. Ich habe jedoch versucht, Mathematica zu verwenden, um denselben Ausdruck auszuwerten, konnte es aber noch nicht. Ich habe eine Frage (mit einem Foto des zu bewertenden Ausdrucks) in Mathematica StackExchange gepostet, um Hilfe zu erhalten. Sie können es von hier aus ansehen .
0 Antworten auf die Frage
Verwandte Probleme
-
1
Simulink ist für Matlab wie _______ für Mathematica?
-
1
webMathematica ist für Mathematica wie _________ für Matlab
-
6
Wo ist meine Software in Linux installiert?
-
4
Wie kann die Ausführung eines Matlab-Programms beschleunigt werden?
-
1
Ändern Sie die Datei von .mat in .txt
-
1
MATLAB-Säulenumwicklung
-
1
Wie kann ich das Befehlsfenster von matlab in emacs verwenden?
-
2
So legen Sie den Remotecomputer so fest, dass Matlab über die Weiterleitung von ssh und x11 ausgefüh...
-
1
Unterscheidung zwischen a / b-Versionen von Matlab?
-
1
'ttest'-Funktion funktioniert in Matlab nicht