Lineare partielle Differentialgleichungen 1. Ordnung

Eine PDGL mit übersichtlicher, aber nicht trivialer Lösung

solu=DSolve[x (∂_x) u[x,y]+y (∂_y) u[x,y]==2u[x,y]+1,u[x,y],{x,y}]

Die Projektionen der charakteristischen Kurven auf die xy-Ebene sehen so aus:

solyx=DSolve[y'[x]==((y[x])/x),y[x],x]

projchar=Plot[Table[y[x]/.solyx[[1]]/.C[1]->c,{c,0,2,0.1}],{x,0,1},PlotRange->{0,1},AspectRatio->Automatic]

sol1=DSolve[{x'[t]==x[t],y'[t]==y[t],z'[t]==2z[t]+1},{x[t],y[t],z[t]},t]//Simplify

Hier kommen die charak. Kurven in voller Gestalt:

curves=Flatten[Table[{x[t],y[t],z[t]}/.sol1/.{C[1]->c1,C[2]->c2,C[3]->0.5},{c1,-2,1,0.2},{c2,0,1,0.2}],2];

chars=ParametricPlot3D[curves,{t,-2,3},PlotRange->{{0,1},{0,1},{0,1}},AxesLabel->{x,y,z},BaseStyle->FontSize->16]

Eine nicht ganz triviale Lösungsfläche

F=((1/(2((#)^2)))&);

uterm=u[x,y]/.solu/.C[1]->F//Simplify

Solve[uterm==0]

surface0=Plot3D[{uterm},{x,0,1},{y,0,1},PlotPoints->300,Mesh->None,Lighting->DirectionalLight[RGBColor[0.2,0.2,0],{0.5,0,1}]]

... und mit den charak. Kurven.

Show[chars,surface0,BoxRatios->Automatic]

Hier trifft diese Fläche die xy-Ebene: das ist dann KEINE projizierte charak. Kurve!

impleq=uterm==0

xycut=ContourPlot[impleq//Evaluate,{x,0,1},{y,0,1},ContourStyle->{Thickness[0.01],Red},PlotPoints->100,BaseStyle->FontSize->16]

Show[xycut,projchar]

soly=Solve[impleq,y]

soly/.x->0.2

tabx=Table[x,{x,0,1,0.1}];

taby=y/.soly[[2]]/.x->tabx

curvesf=Flatten[Table[{x[t],y[t],z[t]}/.sol1/.{C[1]->tabx[[i]],C[2]->taby[[i]],C[3]->0.5},{i,1,Length@tabx}],1];

Hier werden genau die charak. Kurven gezeigt, die in der Lösungsfläche liegen.

charsf=ParametricPlot3D[curvesf,{t,0,3},PlotRange->{{0,1},{0,1},{0,1}},AxesLabel->{x,y,z},BaseStyle->FontSize->16];

xycut3D=ParametricPlot3D[{t,(t^2),0},{t,0,1},PlotRange->{{0,1},{0,1},{0,1}},PlotStyle->{Thickness[0.015],Red},PlotPoints->100];

Show[charsf,surface0,xycut3D,BoxRatios->Automatic]

Eine zweite Lösungsfläche

((s^(-2))/2)/.Solve[((s-(1/4))/s)==y,s][[1]]/.y->s

F=(8(1-#)^2&);

uterm2=u[x,y]/.solu/.C[1]->F//Simplify

Solve[uterm2==0]

surface2=ParametricPlot3D[{t x,(x-(1/4)-0.005)t,(1/2)(t^2)-(1/2)},{x,0.5,1},{t,1,2},PlotPoints->300,Mesh->None,PlotRange->{{0,1},{0,1},{0,1}},AxesLabel->{x,y,z},Lighting->DirectionalLight[RGBColor[0,0.5,0],{1,0,1}],ColorFunction->Function[{x,y,z},White]]

xycutneu3D=ParametricPlot3D[{t,-(1/4)+t,0},{t,0.5,1},PlotRange->{{0,1},{0,1},{0,1}},PlotStyle->{Thickness[0.015],Green},PlotPoints->100]

die charak. Kurven gezeigt, die in der zweiten Lösungsfläche liegen

tabx2=Table[x,{x,0.5,1,0.1}]

taby2=tabx2-(1/4)

curvesf2=Flatten[Table[{x[t],y[t],z[t]}/.sol1/.{C[1]->tabx2[[i]],C[2]->taby2[[i]]-0.005,C[3]->0.5},{i,1,Length@tabx2}],1];

charsf2=ParametricPlot3D[curvesf2,{t,0,4},PlotRange->{{0,1},{0,1},{0,1}},AxesLabel->{x,y,z}];

Show[charsf,charsf2,surface0,surface2,xycut3D,xycutneu3D,AxesLabel->{x,y,z}]

Show[xycut,projchar,Plot[x-(1/4),{x,0.5,1},PlotStyle->{Thickness[0.01],Green}]]

weitere Bilder zum Text

projcharw=ParametricPlot3D[Table[{x,c,0},{c,0,1,0.2}],{x,0,1},PlotRange->{0,1},AspectRatio->Automatic,BaseStyle->FontSize->16,AxesLabel->{x,w,z}]

curvesw=Flatten[Table[{C[1](E^t),C[2],C[3](E^(2t))-(1/2)}/.{C[1]->c1,C[2]->c2,C[3]->0.5},{c1,-2,1,0.2},{c2,0,1,0.2}],1];

charsw=ParametricPlot3D[curves,{t,0,1},PlotRange->{{0,1},{0,1},{0,1}},AxesLabel->{"x","w","z"}]

surfacev=Plot3D[{(1/2)(((x^2)/(w^2))-1)},{x,0,1},{w,0,1},PlotPoints->300,Mesh->None]

xwcutneu3D=ParametricPlot3D[{t,t,0},{t,0,1},PlotRange->{{0,1},{0,1},{0,1}},PlotStyle->{Thickness[0.015],Red},PlotPoints->100]

Show[projcharw,charsw,surfacev,xwcutneu3D]