0
Dl
의 로그를 플롯하려면 에 대해 log(z)
을 사용합니다. z = 1:100
에 대해이 작업을 수행하려고 시도하지만 Dl
에 대해서만 1 개의 숫자 만 반환합니다.행렬에 출력을 제공하는 기능을 얻는 데 문제가 있습니다.
% Log(Dl) versus Log(Redshift)
m = 1;
d = 0;
z = linspace(1,100,1);
Dl = zeros(1,100);
for z = 1:100
[Dl,Da] = Cosmological(m,d,z);
end
y = log(Dl);
x = log(1:100);
plot(x,y)
어리석은 또는 쓸모없는 코드 줄에 사과드립니다. 나는 프로그래밍하기가 매우 쉽습니다. 나는 다음과 같이 작성을 위해 호출되는 함수 cosmological
(하지만 오류가 없는지 그렇게 필요하지 않을 수있다, 난 그냥 경우에 게시하도록하겠습니다) :
function [Dl,Da] = Cosmological(m,d,z)
f = @(x)1./((1+x).*((m.*(1+z)-m+d.*((1+x).^(-2))-d+1).^(.5)));
q = integral(f,0,z); % Integral part equations for Dl
if m+d==1 % flat universe condition
Dl=c/H0.*(1+z)*q;
elseif m+d<1 %positive spatial curvature universe condition
Dl=c/H0*(1-m-d)^(-1/2)*(1+z)*sinh((1-m-d)^.5).*q;
else % negative spatial curvature universe condition
Dl=c/H0*(1-m-d)^(-1/2)*(1+z)*sin((1-m-d)^.5).*q;
end
Da = Dl/(1+z)^2; %Angular diameter distance function
end