Solving Time Delay Integral?
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi,
When trying to integrate this guy:
fD= @(r) (1/(1-rs/r)).*((1-((b^2)./(r.^2)).*(1-(rs/r))).^(-1/2)-1);
I get the error:
Error using /
Matrix dimensions must agree.
Error in @(r)(1/(1-rs/r)).*((1-((b^2)./(r.^2)).*(1-(rs/r))).^(-1/2)-1)
Error in integralCalc/iterateScalarValued (line 315)
fx = FUN(t);
Error in integralCalc/vadapt (line 133)
[q,errbnd] = iterateScalarValued(u,tinterval,pathlen);
Error in integralCalc (line 84)
[q,errbnd] = vadapt(@AToInfInvTransform,interval);
Error in integral (line 88)
Q = integralCalc(fun,a,b,opstruct);
Error in Bolometric_Flux (line 42)
t=integral(fD,R,Inf);*
This is the full code. Matlab can solve the commented out integral (f) but for some reason it won't work for (fD).
for k=1:length(a);
b=(R/(sqrt(1-u)))*sin(a(k));
%f= @(r) (1./r.^2).*(1/(b(k).^2)-(1./r.^2).*(1-(rs./r))).^(-1/2); %light bending integrand
fD= @(r) (1/(1-rs/r)).*((1-((b^2)./(r.^2)).*(1-(rs/r))).^(-1/2)-1); %time delay integrand
t=integral(fD,R,Inf);
%triangle_phi(i)=2*pi*h*triangle_t(i);
end
R,u and rs are defined in the code.
0 Kommentare
Antworten (1)
Rebecca Krosnick
am 23 Dez. 2015
How is rs defined? If it is not a scalar, then the error is caused by
1/(1-rs/r)
You cannot divide the scalar "1" by a matrix. You instead need to use element-wise division like you have elsewhere in your code. Specifically, the code would instead be:
1./(1-rs/r)
Otherwise, to troubleshoot the issue, break down your definition of fD into variables. Define a variable for each matrix, and then compare the dimensions of the matrices to ensure they are appropriate for each /, ./, and .* operation.
0 Kommentare
Siehe auch
Kategorien
Mehr zu Matrix Computations finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!