Computer science
This page contains various programs, algorithms and data structures
that I have made in connection with numerical mathematics,
linear algebra, computation theory and other various topics.
Robotics
Picking a uniformly distributed random direction in 3D space
Choosing a random direction, uniformly distributed on a sphere in 3D-space
is essential to many algorithms in robotics. This Mathematica notebook
shows the naive/incorrect approach and a simple correct approach based upon
Gaussian distributions.
dist2.nb
Linear Algebra
Basale lineær algebra i Mathematica
Et par enkle eksempler på hvordan matrixoperationer fungerer i
Mathematica. Blev lavet i forbindelse med en skriftlig eksamen i
lineær algebra.
MM02 notebook
Numerical Algorithms
Cholesky Factorization
Mathematica function for performing Cholesky factorization
of a skew-symmetric matrix. A good example of how to compile
a Mathematica function for faster execution.
choleskyfact.nb
Gradient in two variables
gradient2vars.nb
Richardson extrapolation and error estimation
Functions for performing Richardson extrapolation.
Useful for speeding up most numerical algorithms and
estimating the numerical error.
richard.nb
Secant-method
This is the classical secant-method of finding the root
of a function.
secantfindroot.nb
Steepest Descent Min/Max-value solver
Steepest descent method using the gradient to find the maximum
or minimum value of a function. Dependant on the secant method and gradient found above.
steepestdescent.nb
Network communications
Simple threaded webserver in Java
A small and simple webserver written in Java. Listens
for incoming connections on port 1300 and spawn new threads for
serving the HTTP contents.
WebServer.java
HttpRequest.java
Test of a basic stop-and-wait link-layer protocol
This is a basic example of a stop-and-wait protocol using
postive and negative acknowledgements to get reliable
link-layer data transfer. The source was intended
as a test on a PC before moving on to development on a AM186ER
microcontroller.
ndl.h
ndl.c
Operating Systems
Basic test of classic forking on Linux
A very simple test of multiple threads, accessing the
same variable with the problems it gives.
forking.c
Test of POSIX threading, semaphores using commandline interpreter
This is an interactive test of acquiring/releasing
semaphores in a multithreaded environment. The user can
acquire/release semaphored variables through an interactive
interpreter.
semaphoring.c