Sök:

CWEB programs

In this section a set of the CWEB programs I have written over the years can be found. CWEB is a dialect of literate programming which I find very convenient for the writing of my more complex programs, as it allows me to write a neatly documented record of the algorithms in plain TeX meanwhile also implementing them using my favourite programming language, ANSI-C. Unless you are already familiar with the concept of literate programming, you may benefit from reading the introduction first.

Estimating the fractal (Hausdorff) dimension of curves in the plane

Detta datorprogram beräknar uppskattningar av den fraktala dimensionen av kurvor i det två dimensionella planet, genom användande av den så kallade »box-counting»-algoritmen. I »box-counting»-algoritmen uppskattas den fraktala dimensionen av en kurva i domänen {xy : xmin ≤ x ≤ xmax, ymin ≤ y ≤ ymax} av ett rutnät av kvadrater, var och en av horisontal dimension (xmax - xmin) / 2m och vertikal dimension (ymax - ymin) / 2m, som superponeras ovanpå grafen för ett mängd heltal m. Genom att räkna det totala antalet Nm av sådana kvadrater som behövs för att täcka hela kurvan för ett givet m (härav termen »box counting»), erhålls uppskattningen Dm av den fraktala dimensionen D (eller Hausdorff-dimensionen) som Dm = ln(Nm)/ln(2m). Denna procedur kan upprepas ett flertal gånger, med Dm → D alltefter m→∞ för fraktala kurvor. För finita fraktaler (eller snarare pseudo-fraktaler) genererade av datorer, en viss gräns på m är nödvändig för att förhindra trivial konverens mot Dm → 1. Utöver rena numeriska beräkningar genererar programmet även grafer visande distribueringen av elementen som används i uppskattningen, i form av MetaPost-kod som kan post-processas av andra program.

Mer »

Simulating the electrodynamics of nonlinear magneto-optical Bragg gratings

Datorprogrammet MagBragg beräknar spektra i reflektion och transmission för ickelijärt magneto-optiska Bragg-gitter, i en en-dimensionell geometri där materialparametrarna hos gittret varierar endast i en Cartesisk koordinat. Programmet MagBragg simulerar även propagationen av det elektromagnetiska fältet associerat med ljuset som traverserar det magneto-optiska gittret, och beräknar den spatiala distributionen av de optiska fälten i en linjär såväl som icke-linjär optisk regim. Algoritmen i detta datorprogram baseras på den semi-analytiska teori som publicerades i Phys. Rev. Lett. 96, 063902 (2006). Programmet MagBragg är skrivet i CWEB.

Mer »

Simulating the Wiener process in D dimensions.

The WIENER program computes a series of floating-point numbers corresponding to a Wiener process in D dimensions. The program relies on the random number generator as proposed by Donald Knuth in The Art of Computer Programming, Volume 1 – Fundamental Algorithms, (Addison-Wesley, Boston, 1998), generating numbers which are fed into the Box–Muller transform to generate the normal distribution associated with the Wiener process. Besides providing a simulator of the Wiener process, the WIENER program can also be used in a "lock-in" mode with zero expectation value for each data point, providing a pretty good random number generator for large series of stochastic data, not relying on the (rather poor) generators available in standard C libraries. The WIENER program does not solve any problem per se, but is merely to be considered as a generator of statistical data to be used by other applications in modeling of physical, chemical or financial processes.

Mer »

The Savitzky-Golay smoothing filter

The SGFilter computer program provides a stand-alone implementation of the Savitzky-Golay smoothing filter. This filter was originally proposed in 1964 by Abraham Savitzky and Marcel Golay as an algorithm of recovering feature characteristics from noisy spectra, overcoming the drawbacks of simpler noise-reduction techniques such as running averages. The work-around presented by Savitzky and Golay for avoiding distortion of peaks or features in their spectral data is essentially based on the idea to perform a linear regression of some polynomial individually for each sample, followed by the evaluation of that polynomial exactly at the very position of the sample. While this may seem a plausible idea, the actual task of performing a separate regression for each point easily becomes a very time-consuming task. However (and this is the key point in the Savitzky-Golay algorithm), the coefficients involved in the actual regression may be computed once and for all in an early stage, followed by performing a convolution of the discretely sampled input data with the coefficient vector.

Mer »

Creating Encapsulated PostScript (EPS) images of arrayed data

Givet en matris av flyt-tal sparade i en ordinär ASCII-kodad textfil, skapar datorprogrammet EpsImg en gråskale-bild av matrisen med dess element som specifikation för intensiteten hos pixel-elementet i bilden. Den genererade bilden sparas av programmet som Encapsulated PostScript (EPS). Givetvis finns det andra sätt att i Encapsulated PostScript generera motsvarande bilder av uppmätta eller simulerade data, till exempel genom att använda image()-funktionen i MATLAB. Icke desto mindre är det ofta en fördel att istället använda ett fristående program, eftersom det enkelt kan inkorporeras i skripts för exekvering i batch. Utöver detta har naturligtvis EpsImg fördelen att vara gratis. EpsImg är skrivet i programspråket CWEB. Eftersom det dock är riktat mot generering av Encapsulated PostScript, så är programmet listat under kategorin PostScript. Mer...

Mer »

Generating TeX source code for the typesetting of labels for digital video tapes

Datorprogrammet DvLabel genererar TeX-kod för typsättning av etiketter för digitalvideo-kassetter (DV-format, vanligen använt i video-kameror). Programmet DvLabel är huvudsakligen avsett att användas i en interaktiv mod, men via parametrar specificerade via kommando-raden kan det även anropas i batch-mod. Jag fick ursprungligen idén till detta program från PostScript-koden i audio-tape.ps, skriven av Jamie Zawinski. audio-tape.ps är ett lysande exempel på hur man med en vanlig text-editor kan skriva ett enkelt PostScript-program, som genom att skickas till en skrivare med PostScript-tolkning resulterar i en utskrift, i detta fall etiketter för kassett-spelare, DAT eller DV. Detta blir dock aningen stökigt eftersom koden måste editeras inför varje ändring eller ny kassett, och för en novis i PostScript-programmering blir detta lätt mycket omständigt. Det fristående programmet DvLabel syftar till att undvika dessa problem, eftersom användaren endast behöver skriva in texten och helt undviker PostScript-koden bakom formatteringen. DvLabel är skrivet i CWEB.

Mer »

Tillbaka till föregående sida

Lämna ett meddelande

Ditt namn:

Din epost-adress: (obligatorisk)

Meddelande:

Generated by ::emailform::

Senast modifierad Wednesday 15 Feb 2023
Denna sajt är XHTML 1.0 Strict