ΕΠΙΣΤΡΟΦΗ
Υλοποίηση μέσω γλώσσας Wolfram στο WLJS Notebook .
Διαφορικές εξισώσεις
Clear["Global`*"]
eq = y'[t] + t^2 y[t] == 1
init = y[0] == 1
Ακριβής επίλυση
sol = DSolve[{eq, init}, y[t], t] // Flatten
ySol[t_] := Evaluate[y[t] /. sol]
ySol[t]
Plot[ySol[t], {t, 0, 10}]
Αριθμητική επίλυση
Nsol = NDSolve[{eq, init}, y[t], {t, 0, 10}];
yNsol[t_] := Evaluate[y[t] /. Nsol]
yNsol[2]
Plot[yNsol[t], {t, 0, 10}]
Συναρτήσεις Green
Clear["Global`*"]
ODE = -D[p[t] *u'[t], t] + q[t] *u[t] == f[t]
init1 = a1 u[a] + a2 u'[a] == 0
init2 = b1 u[b] + b2 u'[b] == 0
(*Πρέπει p>0*)
p[t_] := 1
q[t_] := -2
a = 0;
b = 1;
a1 = 1;
a2 = 0;
b1 = 1;
b2 = 0;
ODE
init1
init2
GreenFunction[{ODE[[1]], init1, init2}, u[t], {t, a, b}, ξ] // Simplify
g[t_, ξ_] := Evaluate[%]
g[t, ξ]
f[t_] := t^2
ySol[t_] := Integrate[f[ξ]*g[t, ξ], {ξ, a, b}]
ySol[t]
Refine[ySol[t], t > a && t < b] // Simplify
DSolve[{ODE, init1, init2}, u[t], t] // Simplify
1/2 (1 - t^2 + Csc[Sqrt[2]] Sin[Sqrt[2] (-1 + t)]) - 1/2 (1 - t^2 - Cos[Sqrt[2] t] + Cot[Sqrt[2]] Sin[Sqrt[2] t]) // FullSimplify
Ανάπτυγμα σε ιδιοσυναρτήσεις
Ακριβείς ιδιοτιμές/ιδιοσυναρτήσεις
Clear["Global`*"]
ODE = a[x]*y''[x] + b[x]*y'[x] + c[x]*y[x] == f[x]
a[x_] := 2
b[x_] := -1
c[x_] := 0
L = 2 Pi;
n0 = 4;
{eigV, eigF} =
DEigensystem[{ODE[[1]], DirichletCondition[y[x] == 0, True]},
y[x], {x, 0, L}, n0]
w[x_] := 1/Abs[a[x]] Exp[Integrate[b[x]/a[x], x]]
w[x]
f[x_] := x^2
yn = Table[Integrate[w[x]*f[x]*Evaluate[eigF[[n]]], {x, 0, L}]/(eigV[[n]]*Integrate[w[x]*Evaluate[eigF[[n]]]^2, {x, 0, L}]), {n, 1, n0}]
yAp[x_] := Evaluate[Sum[yn[[j]]*eigF[[j]], {j, 1, n0}] ]
yAp[x]
yAp[2] // N
sol = NDSolve[{ODE, DirichletCondition[y[x] == 0, True]},
y[x], {x, 0, L}];
ySol[x_] := y[x] /. sol[[1]]
Plot[{ySol[x], yAp[x]}, {x, 0, L}, PlotLegends -> Automatic]
Προσεγγιστικές ιδιοτιμές/ιδιοσυναρτήσεις
Clear["Global`*"]
ODE = a[x]*y''[x] + b[x]*y'[x] + c[x]*y[x] == f[x]
init1 = y[0] == 0
init2 = y[L] == 0
a[x_] := 2
b[x_] := x
c[x_] := 3
L = 2 Pi;
n0 = 30;
{eigV, eigF} = NDEigensystem[{ODE[[1]], init1, init2}, y[x], {x, 0, L}, n0];
eigV
w[x_] := Evaluate[1/Abs[a[x]] Exp[Integrate[b[x]/a[x], x]]]
w[x]
w[2]
f[x_] := 2
yn = Table[NIntegrate[w[x]*f[x]*Evaluate[eigF[[n]]], {x, 0, L}]/(eigV[[n]]*NIntegrate[w[x]*Evaluate[eigF[[n]]]^2, {x, 0, L}]), {n, 1, n0}]
yAp[x_] := Evaluate[Sum[yn[[j]]*eigF[[j]], {j, 1, n0}] ]
yAp[2]
yn[2]
sol = NDSolve[{ODE, init1, init2}, y[x], {x, 0, L}];
ySol[x_] := y[x] /. sol[[1]]
Plot[yAp[x], {x, 0, L}, PlotLegends -> Automatic]
Plot[ySol[x], {x, 0, L}]
Plot[{ySol[x], yAp[x]}, {x, 0, L}, PlotLegends -> "Expressions"]
Χωρίς συνάρυηση βάρους
Clear["Global`*"]
ODE1 = a[x]*y''[x] + b[x]*y'[x] + c[x]*y[x] == f[x]
init1 = y[0] == 0
init2 = y[L] == 0
a[x_] := 2
b[x_] := x
c[x_] := 3
L = 2 Pi;
(*SLoperator = ODE1[[1]]/a[x] Exp[Integrate[b[x]/a[x],x]]*)
newF[x_] := Exp[Integrate[b[t]/a[t], {t, 0, x}]] f[x]/a[x]
ODE = Exp[Integrate[b[x]/a[x], x]] y''[x] + Exp[Integrate[b[x]/a[x], x]] b[x]/a[x]*y'[x] + Exp[Integrate[b[x]/a[x], x]] c[x]/a[x]*y[x] ==
Exp[Integrate[b[x]/a[x], x]] f[x]/a[x]
n0 = 3;
{eigV, eigF} = NDEigensystem[{ODE[[1]], DirichletCondition[y[x] == 0, True]}, y, {x, 0, L}, n0];
(*Simplify[ODE[[1]]/Exp[Integrate[b[x]/a[x],x]]]*)
DEigensystem[{ODE[[1]], DirichletCondition[y[x] == 0, True]}, y, {x, 0, L}, n0];
eigF[[2]][5]
Plot[eigF[[2]][x], {x, 0, L}]
f[x_] := x^2
(*(f[x]*Exp[Integrate[b[x]/a[x],x]]*eigF[[n]][x])/a[x]*)
yn[n_] :=
NIntegrate[ Exp[Integrate[b[x]/a[x], x]] f[x]/a[x]*eigF[[n]][x], {x, 0, L}]/(eigV[[n]]*NIntegrate[eigF[[n]][x]^2, {x, 0, L}])
For[i = 1, i <= n0, i++, Print[i, ")", yn[i]]]
yn[2]
yAp[x_] := Sum[yn[j]*eigF[[j]][x], {j, 1, n0}]
yAp[2]
yn[2]
sol = NDSolve[{ODE1, init1, init2}, y[x], {x, 0, L}];
ySol[x_] := y[x] /. sol[[1]]
Plot[yAp[x], {x, 0, L}, PlotLabel -> "yAp"]
Plot[ySol[x], {x, 0, L}, PlotLabel -> "ySol"]
Plot[{ySol[x], yAp[x]}, {x, 0, L}, PlotLegends -> "Expressions"]
Static web notebook
Author kkoud
Created Sun 12 Oct 2025 14:11:37
Outline
Κώστας Κούδας | © 2025