Thanks again to everyone that replied. I looked at the examples, but to be honest I didn't really understand them completely, and I got a few error messages when I tried to run them. I have pd-extended installed, but maybe I'm missing some externals used by the examples. Anyway, I decided to go with plan B, and use another software package to generate sound files and then load them into PD. I'm using Octave, an open-source math program that is mostly compatible with Matlib. It has some built-in functions to read and write audio files (mono only), but I can generate audio files in just a few lines of code, like this:
x = linspace(0,2*pi,1024);
y = sin(cos(sin(x) * pi) * pi);
plot(x,y);
title('y = sin(cos(sin x) * pi) * pi)');
wavwrite(y,44100,16,'C:\\Data\\Octave\\sincossin.wav');
The first two lines generate the data (1024 samples in length), the next two lines draw a graph in a separate window, and the last line writes the data to a file. I really recommend it if you want to generate audio samples using math functions.