Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 15. 04. 2013 22:08

chipák
Příspěvky: 49
Reputace:   
 

Metoda konečných prvků Wolfram Mathematica

Zdravím, snažím se naprogramovat metodu konečných prvků ve Wolframu. Řeším diferencialni rovnici $u''=-\pi^2 \cos(\pi x)$ s okrajovými podmínkami $u(0)=1$ a $u(1)=-1$ na intervalu $(0,1)$.  Postupuju podle tohoto textu. A můj kód vypadá takto:


Clear[x, f, p, q];
n = 20; xt = Table[1/n i, {i, 1, n - 1}];
h = 1/n;
f[y_] := Pi^2 Cos[Pi y];
p[x_] := -1;
q[x_] := 0;
a0 = 1; al = -1; b0 = 0; bl = 0;
K = Table[0, {i, 1, n + 1}, {j, 1, n + 1}];
K[[1, 1]] = 1 + a0;
K[[2, 2]] = 1;
K[[1, 2]] = -1; K[[2, 1]] = -1;
K[[n + 1, n + 1]] = 1 + al;
K[[n, n]] = K[[n, n]] + 1; K[[n + 1, n]] = -1;
K[[n, n + 1]] = -1;
Do[K[[i, i]] = K[[i, i]] + 1 + q[xt[[i - 1]]];
  K[[i + 1, i + 1]] = K[[i + 1, i + 1]] + 1 + q[xt[[i]]];
  K[[i + 1, i]] = K[[i + 1, i]] - 1;
  K[[i, i + 1]] = K[[i, i + 1]] - 1, {i, 2, n - 1}];

F = Table[0, {i, 1, n + 1}];
F[[1]] = h/2 f[0] + b0;
F[[2]] = h/2 f[xt[[1]]];
F[[n + 1]] = h/2 f[1] + bl;
F[[n]] = F[[n]] + h/2 f[xt[[n - 1]]];
Do[F[[i]] = F[[i]] + h/2 f[xt[[i - 1]]];
  F[[i + 1]] = F[[i + 1]] + h/2 f[xt[[i]]], {i, 2, n - 1}];
F = F[[2 ;; n + 1]];
K = K[[2 ;; n + 1, All]];
F = F - 1*K[[All, 1]];
K = K[[All, 2 ;; n + 1]];
F = F[[1 ;; n - 1]];
K = K[[1 ;; n - 1, All]];
F = (F + 1*K[[All, n]]);
K = K[[All, 1 ;; n - 1]];
y = N[LinearSolve[K, F]];
y = Prepend[y, 1]; y = Append[y, -1];
xt = Prepend[xt, 0]; xt = Append[xt, 1];
ListLinePlot[Partition[Riffle[xt, y], 2]]

Výsledek nevypadá ani trochu jako kosinus. Sedím nad tím už dost dlouho a jsem přesvědčen, že tam bude špatně jenom nějaká blbost, za každou radu budu vděčný, děkuji.

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson