Skip to main content
2 of 2
added 340 characters in body; added 21 characters in body

As suggested by others, the books by Apostol, Marcus, Washington, Neukirch, Frohlich and Taylor, should do a good job covering the theory, and some examples. But if you want explicit examples, you will probably have to work those out yourself (as pointed out by KConrad). Use Sage!

You can download Sage for free at www.sagemath.org

The functions specific to Number Fields are listed here:

http://www.sagemath.org/doc/reference/sage/rings/number_field/number_field.html

Look also here for extended functionality:

http://www.sagemath.org/doc/reference/lfunctions.html

In particular, if K is a number field, K.zeta_function() is the Dedekind zeta function of K and K.zeta_coefficients(n) returns the first n coefficients of the Dedekind zeta function of this field as a Dirichlet series.

Here is an example of code to compute values of the Dedekind zeta function for a biquadratic field:

P.<x>=PolynomialRing(Integers());

K.<k>=NumberField([x^2+1,x^2-5]);

F.<f> = K.absolute_field();

Z=F.zeta_function();

Then

Z(1.0000000000001) returns 4.74937139529845e12, since there is a simple pole at $s=1$, and F.zeta_coefficients(100) returns

[1, 0, 0, 1, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3]

You can also try Z.taylor_series(a,k) to obtain the first k coefficients of the Taylor series for Z(z) around z=a. In this case, Z.taylor_series(2,10) returns

1.20029545506816 - 0.392371605671893z + 0.466197993407214z^2 - 0.476088948200672z^3 + 0.474236081878810z^4 - 0.473954466352746z^5 + 0.474527990929374z^6 - 0.474871501779465z^7 + 0.474954910327522z^8 - 0.474952153099398*z^9 + O(z^10)

Edit to add: You may also want to check that the analytic class number formula works:

RR = Reals();

2^(F.signature()[0])(2RR(pi))^(F.signature()[1])*F.class_number()*F.regulator()/(len(F.roots_of_unity())*sqrt(F.discriminant()))

returns 0.474937034646450

and Z(1.00000000000001)*(1.00000000000001 - 1) = 0.474935594750836 ... close enough!