msgbartop
Just another weblog
msgbarbottom

27 Nov 09 Random Things

It’s been a while since the last update. Here’s a small update on what I’m thinking about various stuff.

Prototype

Gameplay is okay I guess. Nothing I would spent too much time on though. It looks a lot worse than GTA 4 though (same as Crackdown).

Resident Evil

Seems to be lots of fun and some nice graphics, too.

Red Faction: Guerrilla

Some weird texture filtering issues and the presentation doesn’t knock off my chair (terrain popping and other ugliness), but multiplayer is loads of fun with friends. Physics isn’t completely stable though. I played the game for one hour in MP with friends and there were quite a few cases where geometry dropped through the floor with enough pressure from above (after destroying a building).

Brüno

A bad and quite stupid movie (Ali G in Da House is probably the only movie I kinda like that stars Cohen). If you haven’t watched it already, don’t >_<

Shadow Complex

I bought shadow complex a few weeks ago and I have to say that it is an awesome game. I read somewhere that the developer used the Metroid series as inspiration and it shows. It’s really fun to play and quite addictive. The graphics are pretty awesome (it is using the Unreal 3 engine) and the whole presentation is pretty polished. It certainly is worth its 1200 gamerpoints

Summing Formulas

A month ago I was doing some exercises in an analysis book (Königsberger) and found a nice/interesting problem:

Prove that if we denote of the sum of the numbers 1 to n to the p-th power by  S_n^p = 1^p + 2^p + ... + n^p , then the following equation by Pascal holds:  (p+1) S_n^p + \binom{ p + 1 }{ 2 } S_n^{p-1} + \binom{ p + 1 }{ 3 } S_n^{p-2} + ... + S_n^0 = (n+1)^{p+1} - 1

It can be used to get recursively/iteratively get formulas for sums of higher powers of numbers.

This is interesting because the proof doesn’t need any advanced maths (like eg the Euler-MacLaurin formula, which can be used to show this, too).

You can download the proof and a few examples here.

Cheers

02 Aug 09 Semi-Conductor Optimization (Uni Project)

I’ve written my last exam yesterday (except for two oral exams in September), so now I have got some spare time before I start working on my Bachelor Thesis tomorrow and I want to use it to wrap up a few things.

During this term I took part in a course that was both a (research) project/presentation/lecture thing, which was fun but also a lot of work.
I’ve already written about one mathematical aspect of it in my post about Analysis, Cauchy-Schwarz and Reciprocal Sums.

The project was about optimizing semi-conductor wiring placement. We wrote a small paper about our findings and the work it was based one – you can look download it here.

We also created a self-running presentation that doesn’t contain any Maths at all but makes heavy use of Flash animations (which were exported to .gif manually, which was a huge pain in the ass, which I will never do again if possible) to visualize all the concepts and algorithms.

You can download a PowerPoint 2007 (.pptx) version here or one that works with PowerPoint 2003 here.

For the Student’s I sat down and wrote a small Flash application to show the algorithms at work. It’s not obvious how it works, so let me explain the major points:

  • On the right you have a number of panels that you can enlarge by clicking on the small button in the upper right of each panel.
  • The upper three panels show different views of the same dataset. They will all be updated as you run the algorithm step by step.
  • The fourth panel lets you change the number of wires and/or their activity.
  • The last panel shows the electrical field that is created by one active wire in the center. It was created using MatLAB. I’ve also uploaded the script here.

Abitag

Last but not least I’ve also uploaded the current version of all my .fla and .as files. You can download it here.

ActionScript is a nice language and you can quickly learn it using the available resources from Adobe.
While ActionScript 2.0 is arguably weird, ActionScript 3.0 is quite logical and it’s syntax is straight-forward and consistent, too. You can’t say that about the IDE (Flash CS4), which is braindead, but if you’re only interested in writing ActionScript code, FlashDevelop is an excellent and free alternative.

This is it for now, maybe I’ll play around with Flash some more another time.
Cheers,
Andreas

Tags: , , , ,

26 May 09 \epsilon Induction

Induction over natural numbers is a standard tool in Mathematics. But what about doing induction over real numbers´? The structure is different and it’s not immediately clear what is meant, so let me clarify it.

Let P(v) be a proposition that we want to show for all  v \in \mathbb{R}^+_0 .

Then we can use the following “induction principle” to prove it:

 \exists \epsilon \in \mathbb{R}^+
 \text{a)} \forall u \in \left [0,\epsilon \right ]: P(u)
 \text{b)} \left( \forall u \in \left  [0, v - \epsilon \right ]: P(u) \right ) \Rightarrow P(v) ´

It’s easy to show that this is a correct way to prove it. I’ll use induction over natural numbers to prove it :-)

Let  I_k := \left [k \cdot \frac \epsilon 2, (k+1) \cdot \frac \epsilon 2 \right ] .
Then let’s show by induction over  k that  \text{(*)} \forall u \in I_k: P(u) :

Base:

From a) it follows that (*) already holds for I_0 and I_1.

Induction Step ( k \ge 2 ):

If (*) holds for  I_0, ..., I_{k-1}, then it obviously holds for all  u \in \left [ 0, k \cdot \frac \epsilon 2 \right ].

Fix  v \in I_k , then  v \le (k+1) \cdot \frac \epsilon 2 \Leftrightarrow v - \epsilon \le (k-2) \cdot \frac \epsilon 2 < k \cdot \frac \epsilon 2 \right . With b) it follows that P(v) holds.

That is,  P(v)  \forall v \in I_k .

#

It should be possible to show that you can generalize this to:

 \exists \epsilon \in \mathbb{R}^+
 \text{a)} \forall u \in \left [0,\epsilon \right ]: P(u)
 \text{b)} \left( \forall u \in \left  [\psi(v), \phi( v ) \right ]: P(u) \right ) \Rightarrow P(v)
with  \phi( v ):  \mathbb{R}^+ \to \mathbb{R}^+_0 ,  \psi( v ): \mathbb{R}^+ \to \mathbb{R}^+_0 and  \psi(v) \le \phi(v) < v .

Tags: ,

07 May 09 Analysis, Cauchy-Schwarz and Reciprocal Sums

Konkrete Analysis

First I want to share some solutions for the exercises of a Maths book. The book is called Konkrete Analysis by Folkmar Bornemann and is written in German as are my solutions for some of the exercises. (I think I cover about 70% of all exercises in the book and pretty much every easy one :-) )

I don’t claim that my solutions are correct and there are probably quite a few (uncorrected) mistakes, but right now I haven’t been able to find any other openly available solutions. Although the book claims to be easily readable without attending the lectures of Professor Bornemann, I doubt that it is possible to do so successfully without being able to do the exercises and while doing so being able to get help or look at possible solutions to find new ideas.

I did all the exercises as way to prepare myself for the exam (it was very successful alas probably not in the most time efficient way), so it also contains solutions for old exams (but those are appended at the end and probably not interesting at all).

You can download the PDF konkrete-analysis-solutions here.

Cauchy-Schwarz and a Problem

The book is quite useful though as was the lecture “Analysis for Computer Scientists” which was based on the book (or vice-versa) and it is probably the single one lecture that has taught most since I started attending Computer Science at university.

One of the many topics (we covered a lot which was one of the nice things) was inequalities and the useful things you can do with them. Especially the Cauchy-Schwarz inequality turns out to be quite useful while pretty basic:

 <a,b> \leq ||a|| \cdot ||b|| with  <a,b> = || a || \cdot || b || when  \exists \lambda: a = \lambda b

Interestingly enough this can already yield results that are quite difficult to obtain otherwise. For example we can easily prove lower or upper bounds that is the existence of a maximum or minimum by applying it.

First we obtain a lower or upper bound (for the right or the left side respectively) and then we can use the equality case to prove the existence of the a minium or maximum.

For example, let’s take a look at this problem:

We have  x \in \mathbb{R}^n, 0 < x, \sum_{i=1}^n {x_i} = 1 and want to minimize  \sum_{i=1}^n { \frac 1 x } .
We simply set  a_i := \sqrt{x_i}, b_i := \sqrt{ \frac 1 x_i } .

Then we get:

 \sum_{i=1}^n { a_i b_i } = \sum_{i=1}^n { \sqrt{ x_i } \frac 1 {\sqrt{ x_i }} } = \sum_{i=1}^n 1 = n
 \leq \sqrt{ \sum_{i=1}^n \sqrt{x_i}^2 } \sqrt{ \sum_{i=1}^n \frac 1 {\sqrt{x_i}^2} } = \sqrt { \sum_{i=1}^n x_i } \sqrt{\sum_{i=1}^n \frac 1 x_i } = 1 \cdot \sqrt{\sum_{i=1}^n \frac 1 x_i }

That is:  \sum_{i=1}^n \frac 1 x_i \geq n^2 .

Now we know an lower bound for the reciprocal sum.
To determine the minimal x vector, we remember to start with:

 a = \lamda b \Leftrightarrow \sqrt x_i = \lambda \frac 1 \x_i \Leftrightarrow x_i = \lambda

We use that with the constraint:  1 = \sum_{i=1}^n x_i = \sum_{i=1}^n \lambda = n \cdot \lambda ,
resulting in:  x_i = \lambda = \frac 1 n .

Generalization

The nice thing is you can go and generalize this finding to more interesting minimization problems as there also exist more advanced versions of the Cauchy-Schwarz inequality´ adding degrees of freedom to play around with´.

Thus it is possible to solve the following class of problems using a slightly more advanced Cauchy-Schwarz inequality:

 x,q \in \mathbb{R}^n; 0 < x, q
0 < \alpha, \gamma < \infty; \beta > 0
\large\sum_{i=1}^n {x_i}^\gamma = \beta
\large min \sum_{i=1}^n \frac {q_i} {x_i^\alpha}

by utilizing

\large \sum_{i=1}^n { a_i b_i } \le \sqrt[p]{ \sum_{i=1}^n a_i^p} \sqrt[p']{ \sum_{i=1}^n b_i^p'} with  \frac 1 p + \frac 1 {p'} = 1

Equality requires the same linear dependence condition as the normal Cauchy-Schwarz inequation.

I’ve only deduced the solution for  \gamma = 1 but it shouldn’t be difficult to adapt it once you get the idea how it works (it’s fairly straight forward).

You can find the whole deduction in the PDF “Minimum of a Generalized Reciprocal Sum”.

For completeness’ sake here are the results for an optimal solution  x^{*} :

\large x_i^{*} = \beta \cdot \frac { \sqrt[1 + \alpha]{q_i} }{\sum_{k=1}^n \sqrt[1 + \alpha]{q_k}}

\large \frac { \left (\sum_{i=1}^n \sqrt[1 + \alpha]{q_i} \right )^{1 + \alpha}} {\beta^\alpha} = \sum_{i=1}^n \frac {q_i} {x_i^{*}^\alpha}

Epilog

Coming up with the solution was actually a lot of fun and quite interesting because I didn’t know it was possible to deduce it this way nor did I know how to do it before. If you read the PDF, I think it’s quite nice how you can play around with the formulas and come up with new things from the Cauchy-Schwarz inequality.
If you are only interested in  x ^ {*} , you can shortcut everything by immediately skipping to the equality case once  p and  p' have been determined and solve for that.
I mainly wrote it all out because I wanted to make sure, that it actually was correct.

If it wasn’t for my Analysis lecture last term, I probably wouldn’t have found this.

Cheers,
Andreas

Tags: , , , ,

05 May 09 The Reverse Pigeonhole Principle

Everybody (I hope) knows about the pigeonhole principle.

In short it states that:

If  f: N \to M and  n:= \left | N \right | \leq \left | M \right | =: m , then there exists at least one  m_0 with  \left | f^{-1}\left ( m_0 \right ) \right | \geq \left \lceil \frac {n} {m} \right \rceil  .

For example, if we have n + 1 pigeons in only n pigeonholes, there is (at least) one pigeonhole that has at least two pigeons inside (thus the name).

One thing I haven’t seen mentioned anywhere yet (at least not with this name) is the reverse pigeonhole principle:

If  f: N \to M and  n  := \left | N \right | \leq \left | M \right |  =: m , then there exists at least one  m_0 \in M with  \left | f^{-1}\left ( m_0 \right ) \right | \leq \left \lfloor \frac {n} {m} \right \rfloor .

Again an example: if we have n + 1 pigeons (it’s valid up to 2n – 1) and n pigeonholes, then there exists (at least one) pigeonhole with at most one pigeon in it.

The proof for the reverse principle is simple:

Assume that for all  m_0 \in M :  \left | f^{-1}\left ( m_0 \right ) \right | > \left \lfloor \frac {n} {m} \right \rfloor, that is each such set contains at least  \left \lfloor \frac {n} {m} \right \rfloor + 1 elements, then from   \frac n m - 1 < \left \lfloor \frac {n} {m} \right \rfloor it follows that:

 n = \sum_{m_0 \in M} { \left | f^{-1} \left ( m_0 \right ) \right | \geq m \left ( \left \lfloor \frac {n} {m} \right \rfloor + 1 \right ) > m \cdot \frac n m = n  } .

This clearly is a contradiction, so the original assumption must have been wrong, which proves the reverse pigeonhole principle.

I haven’t seen this written down anywhere before and it’s useful to keep it in my mind on its own because it shortens some arguments, so I hope this might help someone :-)

On other news my LaTeX script is severly broken and I don’t know why :-|
For some reason it sometimes merges two LaTeX pieces into one because it forgets to echo the last ” after the title (which is impossible, of course..).
Cheers,
Andreas

Tags: ,

31 Jan 09 Seminar about Motion Retargeting

creatureanimationwbTwo weeks ago I had to give a presentation about Motion Retargeting, which I want to share with you now.
I created it due to me attending a seminar about the latest developments in Computer Graphics at university and my presentation was about the Siggraph ‘08 paper “Real-time Motion Retargeting to Highly Varied User-Created Morphologies” from Chris Hecker et al.
You can check it out on Chris Hecker’s homepage – his website also contains a bunch of other really cool articles and presentations from various conferences, so it certainly is worth taking a look at it.

I’ve also sifted through quite a lot of IK papers and lectures for my presentation to understand the later part about the IK solver in Spore and I’ve found a few links that are a nice read:

Ive created a huge PowerPoint presentation for my seminar  :-) It includes a few videos (thanks again to Chris Hecker for uploading them and replying to my emails incredibly fast ´) and two awesome IK solvers that I’ve implemented with VBA macros´ to show how CCD and Particle IK solvers work.

You can find a zip with all the videos and high resolution images here (includes both a PPT 2003 file and a 2007 file). I’ve also uploaded a small version without videos, macros as PPT 2003 file here, if you don’t feel like downloading the 23 MB .zip file.

Here’s a YouTube video of the two IK solvers:

http://www.vimeo.com/3021779

I’ve exported the code into an additional IK Playground presentation which contains just one slide and the two IK solvers with the setup you see in the video above. You can find the PPT 2003 version of it here and the 2007 one here.

I’ve zipped up the macros here if you want to use them in your own slides. I’ve also written a handy VBA form that allows one to edit everything more easily (the macros are hardly documented though, but if anyone really wants to use them and runs into problems – you can always drop me a line or two in a comment :) )

The IK Solver Tool Form

The IK Solver Tool Form

BTW I’m not sure you know about it´, but Blender contains an awesome video editor – the UI needs some time to get used to, but the online documentation has improved a lot and with it, it works like a charm. Blender also supports some pretty professional filters, so it’s going to be my video editing tool of choice from now on.

Cheers,
Andreas

Tags: , , , , , , ,

30 Jan 09 Logical Equivalence

It has taken me 3 months to finally solve this problem´.

Anyway – I proudly present:

(b \Rightarrow B_0) \land (\lnot b \Rightarrow B_1) \equiv \\ \equiv (\lnot b \lor B_0) \land (b \lor B_1) \equiv \\ \equiv (b \land B_0) \lor (\lnot b \land B_1) \lor (B_0 \land B_1) \equiv\\\equiv (b \land B_0) \lor (\lnot b \land B_1) \lor ((b \lor \lnot b) \land B_0 \land B_1)\equiv\\\equiv<br />
(b \land B_0) \lor (\lnot b \land B_1) \lor (b \land B_0 \land B_1) \lor (\lnot b \land B_0 \land B_1) \equiv \\ \equiv (b \land B_0) \lor (b \land B_0 \land B_1) \lor (\lnot b \land B_1) \lor (\lnot b \land B_0 \land B_1) \equiv\\ \equiv<br />
(b \land (B_0 \lor (B_0 \land B_1)) \lor (\lnot b \land (B_1 \lor (B_0 \land B_1)) \equiv \\ \equiv (b \land B_0) \lor (\lnot b \land B_1)

\o/,
Andreas

Tags: ,

10 Jan 09 Partial Integration and the Substitution Rule

I only want to write this down to have a place to look it up:

If we want to integrate \displaystyle{ \int_{a}^{b}{f'\left(x \right) g\left( x\right)} } , we can use:


  \displaystyle { (f \cdot g)'\left( x \right) & = f'\left(x \right)g\left(x \right) +  f\left(x \right)g'\left(x \right) } \\
 \displaystyle { \Leftrightarrow f\left(x \right)g\left(x \right) \big |_{a=x}^b } & = \displaystyle { \int_{a}^{b}{ f'\left(x \right)g\left(x \right) +  f\left(x \right)g' \left(x \right) } \, dx  } \\
\displaystyle { \Leftrightarrow \int_{a}^{b}{ f'\left(x \right)g\left(x \right) }\, dx } & \displaystyle { = f\left(x \right)g\left(x \right) |_{a=x}^b - \int_{a}^{b}{ f\left(x \right)g' \left(x \right) } \, dx }

And if we want to substitute a function in an integral:

<br />
{  \int_{g\left(a \right)}^{g\left(b \right)}{ f\left( x  \right) } \, dx = F \left ( g \left ( b \right ) \right ) - F \left ( g \left ( a \right ) \right ) = \left (F \circ g \right ) \left ( b \right ) - \left (F \circ g \right ) \left ( a \right ) = } \\<br />
= \int_{a}^{b}{ \left (F \circ g \right ) ' \left ( x \right )  } \, dx = \int_{a}^{b}{ f \left ( g  \left ( x \right ) \right )  } \, g' \left ( x \right ) \, dx<br />

(with  F \left ( x \right ) = \int^{x}{ f \left ( x \right )} \, dx)
or using a trick:

\int_{a}^{b}{f \left ( g \left ( x \right ) \right ) } \, dx = F \left ( b \right ) - F \left ( a \right ) = \left ( F \circ g \circ g^{-1} \right ) \left ( b \right ) - \left ( F \circ g \circ g^{-1} \right ) \left ( a \right ) = \\
= \left ( F \circ g^{-1} \right ) \left( g \left ( b \right ) \right ) - \left ( F \circ g^{-1} \right ) \left( g \left ( a \right ) \right ) =
\int_{g \left ( a \right )}^{g \left ( b \right )}{ \left ( F \circ g^{-1} \right ) ' \left ( x \right ) } \, dx = \\
= \int_{g \left ( a \right )}^{g \left ( b \right )}{ F' \left ( g^{-1} \left ( x \right ) \right ) \, g^{-1} ' \left ( x \right ) } \, dx =
 \int_{g \left ( a \right )}^{g \left ( b \right )}{ f \left ( g \left ( g^{-1} \left ( x \right ) \right ) \right ) \, g^{-1} ' \left ( x \right ) } \, dx = \\
= \int_{g \left ( a \right )}^{g \left ( b \right )}{ f \left ( x \right ) \, \frac{1}{g' \left ( g^{-1} \left ( x \right ) \right} } \, dx

(with  F \left ( x \right ) = \int^{x}{ f \left ( g \left ( x \right ) \right )} \, dx)

Tags: , ,