Ritzova metoda		( pro Lu=f )

http://en.wikipedia.org/wiki/Walter_Ritz

definice operátoru L,   pravé strany f,   intervalu (a, b)   a   funkcionálu Φ

L[u_]:=-D[u,{x,2}]+u
f[x_]=-x;
a=0;
b=1;
Φ[u_]:=Integrate[L[u]*u-2*f[x]*u,{x,a,b}]

volba bázových funkcí

VN={x(x-1),x^2(x-1),x^2(x-1)^2}

n=Length[VN];
gr1=Show[Table[Plot[VN[[i]],{x,a,b},PlotRange->All,PlotLabel->"bázové funkce (Subscript[v, i])",AxesLabel->{"x","y"}],{i,1,n}]]

gr2=ListPlot[Table[Φ[VN[[i]]],{i,1,n}],PlotLabel->"hodnoty funkcionálu Φ v bázových funkcích (Subscript[v, i])",AxesLabel->{"i","Φ((Subscript[v, i]))"},PlotStyle->{PointSize[Large]}]

sestavení soustavy   A c = F

A = Table[Integrate[L[VN[[i]]]*VN[[j]],{x,a,b}],{i,1,n},{j,1,n}]

F=Table[Integrate[f[x]*VN[[i]],{x,a,b}],{i,1,n}]

řešení soustavy   A c = F

c=LinearSolve[A,F]

ListPlot[c,PlotLabel->"nalezené koeficienty (Subscript[c, i]) bázových funkcích (Subscript[v, i])",AxesLabel->{"i","(Subscript[c, i])"},PlotStyle->{Orange,PointSize[Large]}]

sestavení přibližného řešení úlohy   L u = f

up[x_]=Sum[c[[i]]VN[[i]],{i,1,n}]

gr3=Plot[up[x],{x,a,b},PlotLabel->"přibližné řešení \!(Subscript[u, p]) úlohy Lu=f",AxesLabel->{"x","y"},PlotStyle->{Thick,Orange}]

hodnota funkcionálu   Φ   v přibližném řešení   (Subscript[u, p])   (minimální hodnota)

minimum=Φ[up[x]]
N[minimum,16]

gr4=Plot[minimum,{x,0,n+1},PlotLabel->"hodnoty funkcionálu Φ v bázových funkcích (Subscript[v, i]) a v řešení (Subscript[u, p])",AxesLabel->{"i","Φ((Subscript[v, i]))"},PlotStyle->{Thick,Orange}];
Show[gr4,gr2,PlotRange->All]

Show[gr3,gr1,PlotRange->All,PlotLabel->"bázové funkce (Subscript[v, i]) a přibližné řešení (Subscript[u, p])"]

chyba přibližného řešení

chyba[x_]=FullSimplify[L[up[x]]-f[x]]

Plot[Abs[chyba[x]],{x,a,b},AxesLabel->{"x","y"},PlotLabel->"chyba přibližného řešení (Subscript[u, p])",PlotRange->All,PlotStyle->Red]