Riemann-Problem
# Riemann-Problem

Als Riemann-Problem (nach Bernhard Riemann (1826–1866)) wird in der Analysis ein spezielles Anfangswertproblem bezeichnet, bei dem die Anfangsdaten als konstant definiert werden, bis auf einen Punkt, in dem sie unstetig sind.
Riemann-Probleme sind hilfreich für das Verständnis hyperbolischer partieller Differentialgleichungen, da in ihnen alle Phänomene wie Schocks, Verdichtungsstöße oder Verdünnungswellen auftauchen. Es sind auch für komplizierte nichtlineare Gleichungen wie die Euler-Gleichungen der Strömungsmechanik exakte Lösungen konstruierbar, was nicht für beliebige Anfangsdaten möglich ist.
In der numerischen Mathematik tauchen Riemann-Probleme in natürlicher Weise in Finite-Volumen-Verfahren zur Lösung von Erhaltungsgleichungen auf. Dort werden die Riemann-Probleme approximativ mittels sogenannter Riemann-Löser angegangen.

## Erhaltungsgleichung

Als wichtige hyperbolische partielle Differentialgleichung kann man Erhaltungsgleichungen des folgenden Typs betrachten:
    ${\begin{aligned}\partial _{t}U+\partial _{x}F(U)&=0\\U(x,0)&=U_{0}(x)\end{aligned}}$
Dabei gilt $U\colon \mathbb {R} \times \mathbb {R} ^{+}\to \mathbb {R} ^{n}$ und $F\colon \mathbb {R} ^{n}\to \mathbb {R} ^{n}$.
Beim Riemann-Problem gilt für den Anfangswert:
    ${\begin{aligned}U_{0}(x)={\begin{cases}U_{L},\quad x<0\\U_{R},\quad x>0\end{cases}}\end{aligned}}$
für $U_{L},U_{R}\in \mathbb {R} ^{n}$.

### Linearer Fluss

Für den linearen Fluss
    ${\begin{aligned}F(U)=AU,\quad A\in \mathbb {R} ^{n\times n}\end{aligned}}$
lässt sich die analytische Lösung berechnen. Für ein hyperbolisches Problem ist die Matrix $A$ stets diagonalisierbar:
    $TAT^{-1}=\Lambda =\operatorname {diag} (\lambda _{1},\dotsc ,\lambda _{n})$
mit einer Basistransformationsmatrix $T\in \mathbb {R} ^{n\times n}$.
Mit der Transformation $W:=T^{-1}U$ kann man die PDGL entkoppeln:
    ${\begin{aligned}&\left\lbrace {\begin{aligned}\partial _{t}U+A\partial _{x}U&=0\\U(x,0)&=U_{0}(x)\end{aligned}}\right.\\\Leftrightarrow &\left\lbrace {\begin{aligned}\partial _{t}W+\Lambda \partial _{x}W&=0\\W(x,0)&=W_{0}(x):=T^{-1}U_{0}(x)\end{aligned}}\right.\end{aligned}}$
Entkopplung bedeutet in diesem Fall, dass in der $i$-ten Zeile der PDGL nur noch Ableitungen von $W_{i}$ vorkommen.
Jede einzelne Gleichung entspricht einer linearen, skalaren Transportgleichung und somit ist die Lösung einfach zu bestimmen:
    $W_{i}(x,t)=(W_{0})_{i}(x-\lambda _{i}t).$
Rücktransformation ergibt nun die gesuchte Lösung:
    $U(x,t)=TW(x,t).$
Man kann die Lösung auch anders erhalten, indem man den Sprung der Anfangswerte in der neuen Basis darstellt:
    $U_{R}-U_{L}=\sum _{j=1}^{n}\alpha _{j}t_{j}\quad {\text{mit }}\alpha _{j}\in \mathbb {R} ,$
wobei die $t_{j}\in \mathbb {R} ^{n}$ die Eigenvektoren von $A$ sind (also: $T=(t_{1},\dotsc ,t_{n})$). Nun ist die Lösung so gegeben:
    $U(x,t)=U_{L}+\sum _{\lambda _{j}<{\frac {x}{t}}}\alpha _{j}t_{j}=U_{R}-\sum _{\lambda _{j}>{\frac {x}{t}}}\alpha _{j}t_{j}$