Calculations 6

Clear["Global`*"]

friedmann=D[a[t],t]^2-8π/3  (krad/a[t]^4+kmatter/a[t]^3+kvacuum) a[t]^2+k

Where kvacuum, krad and kmatter represent the presence of dark energy, radiation, and matter respectively. 
For example:

Radiation model:

For  a positive curvature:

friedmann10p:=friedmann/.{krad->1,kmatter->0,kvacuum->0,k->+1}
sol10p=DSolve[{friedmann10p==0,a[1]==1},a[t],t]

For  zero curvature:

friedmann100:=friedmann/.{krad->1,kmatter->0,kvacuum->0,k->0}
sol100=DSolve[{friedmann100==0,a[1]==1},a[t],t]

For  a negative curvature:

friedmann10n:=friedmann/.{krad->1,kmatter->0,kvacuum->0,k->-1}
sol10n=DSolve[{friedmann10n==0,a[1]==1},a[t],t]

Something unusual happens here. Mathematica responds with two different interpolating functions, one for each sign of the derivate. Looking carefully at the arguments of the functions you can  see the first root corresponds to an expanding model, while the second root corresponds to a collapsing model. While the latter could be used to represent a “big crunch” model, we are here interested in the first one.

Graphics:

Plot[{a[t]/.sol10p[[2]],a[t]/.sol100[[2]],a[t]/.sol10n[[2]]},{t,0.85,5},PlotStyle->{Red,Black,Blue},AxesLabel->{"t(s)","a(t)"},PlotLabels->{"Positive","Zero","Negative"}]