Severity: Warning
Message: fopen(/home/polpe/.phpsession/ci_session49d600effcb8625fbe953132cb508150f06037ac): failed to open stream: No space left on device
Filename: drivers/Session_files_driver.php
Line Number: 159
Backtrace:
File: /home/polpe/public_html/application/controllers/Main.php
Line: 17
Function: library
File: /home/polpe/public_html/index.php
Line: 315
Function: require_once
file: anal3_diffgeom_tenzor_polar_1.m author: Peter Polcz <ppolcz@gmail.com>
Created on 2017.08.08. Tuesday, 02:56:40
A polárkoordináták mögé odaképzeljuk a Descartes coordinátákat.
% r: sugar
% t: theta
syms x y z r t p real
Z = [ r ; t ];
R = [
r*cos(t)
r*sin(t)
];
$\vec Z_i$ bázisvektorok külön-külön számolva
Zr = diff(R,r)
Zt = diff(R,t)
Zr = cos(t) sin(t) Zt = -r*sin(t) r*cos(t)
Kovariáns $\vec Z_i$ bázisvektorok (oszloposan)
Z_i = jacobian(R,Z)
Z_i = [ cos(t), -r*sin(t)] [ sin(t), r*cos(t)]
Kovariáns $Z_{ij}$ metrika tenzor
Z_ij = simplify(Z_i'*Z_i)
Z_ij = [ 1, 0] [ 0, r^2]
Kontravariáns $Z_{ij}$ metrika tenzor
Zij = inv(Z_ij)
Zij = [ 1, 0] [ 0, 1/r^2]
Christoffel szimbólum $\Gamma_{ij}^k$
n = numel(Z);
Gamma = sym(zeros(n,n,n));
for k = 1:n % delta spans the variable labels over which symbols will be calculated
for j = 1:n
for i = 1:n
for m = 1:n
Gamma(i,j,k) = Gamma(i,j,k) + 0.5 * Zij(k,m) * ( ...
diff(Z_ij(m,i), Z(j)) + diff(Z_ij(m,j), Z(i)) - diff(Z_ij(i,j), Z(m)) ...
);
end
end
end
end
Gamma
Gamma(:,:,1) = [ 0, 0] [ 0, -r] Gamma(:,:,2) = [ 0, 1/r] [ 1/r, 0]
Először: kovariáns derivált számolása $\nabla_j V^i$, ahol $\vec V = V^1 \vec Z_r + V^2 \vec Z_\theta$.
syms r t p real
Z = [r ; t];
n = numel(Z);
Vi = [
sym('V1(r,t)')
sym('V2(r,t)')
];
diff(Vi,t)
Nabla_jVi = jacobian(Vi,Z);
for j = 1:n
for i = 1:n
for m = 1:n
Nabla_jVi(i,j) = Nabla_jVi(i,j) + ...
Gamma(j,m,i)*Vi(m);
end
end
end
Nabla_jVi
div_Vi = trace(Nabla_jVi)
ans = diff(V1(r, t), t) diff(V2(r, t), t) Nabla_jVi = [ diff(V1(r, t), r), diff(V1(r, t), t) - r*V2(r, t)] [ diff(V2(r, t), r) + V2(r, t)/r, diff(V2(r, t), t) + V1(r, t)/r] div_Vi = diff(V1(r, t), r) + diff(V2(r, t), t) + V1(r, t)/r
Tehát $\nabla_i V^i = \pdv{V^1(r,\theta)}{r} + \pdv{V^2(r,\theta)}{\theta} + \frac{V^1(r,\theta)}{r}$
Először kiszámítjuk a $\nabla_i \nabla_j F(r,\theta)$ második kontravariáns deriváltat. Majd ezt követően a $\Delta F(r,\theta)$-t is megkapjuk a következő módon: $\Delta F(r,\theta) = Z^{ij} \nabla_i \nabla_j F(r,\theta)$.
Általános függvény:
F = sym('F(r,t)');
Nabla_iNabla_jF = sym(zeros(n,n));
for i = 1:n
for j = 1:n
Nabla_iNabla_jF(i,j) = diff(F,Z(i),Z(j));
for k = 1:n
Nabla_iNabla_jF(i,j) = Nabla_iNabla_jF(i,j) - Gamma(i,j,k) * diff(F,Z(k));
end
end
end
LaplaceF = sym(0);
for i = 1:n
for j = 1:n
LaplaceF = LaplaceF + Zij(i,j) * Nabla_iNabla_jF(i,j);
end
end
expand(LaplaceF)
latex(ans)
ans = diff(F(r, t), r)/r + diff(F(r, t), t, t)/r^2 + diff(F(r, t), r, r) ans = \frac{\frac{\partial}{\partial r} F\!\left(r,t\right)}{r} + \frac{\frac{\partial^2}{\partial t^2} F\!\left(r,t\right)}{r^2} + \frac{\partial^2}{\partial r^2} F\!\left(r,t\right)
$\nabla F = \frac{\partial F}{\partial Z^j} Z^{ij} \vec Z_i$
Általános függvény:
F = sym('F(r,t)');
grad_Fi = sym(zeros(1,n));
grad_F = sym(zeros(n,1));
for i = 1:n
for j = 1:n
grad_Fi(i) = grad_Fi(i) + diff(F,Z(j)) * Zij(i,j);
end
grad_F = grad_F + grad_Fi(i) * Z_i(:,i)
end
grad_Fi
grad_F
grad_F = cos(t)*diff(F(r, t), r) sin(t)*diff(F(r, t), r) grad_F = cos(t)*diff(F(r, t), r) - (sin(t)*diff(F(r, t), t))/r sin(t)*diff(F(r, t), r) + (cos(t)*diff(F(r, t), t))/r grad_Fi = [ diff(F(r, t), r), diff(F(r, t), t)/r^2] grad_F = cos(t)*diff(F(r, t), r) - (sin(t)*diff(F(r, t), t))/r sin(t)*diff(F(r, t), r) + (cos(t)*diff(F(r, t), t))/r
pl.
F = sin(t) * exp(-r);
F = r;
subs(grad_Fi, 'F(r,t)', F)
subs(grad_F, 'F(r,t)', F)
ans = [ 1, 0] ans = cos(t) sin(t)
Kovariáns derivált számolása $\nabla_j V^i$, ahol $\vec V = V^1 \vec Z_r + V^2 \vec Z_\theta$, továbbá: $V^i = \begin{pmatrix} 1 \\ 0 \end{pmatrix}$, ezért $\vec V = \vec Z_r$
Vi = [
1
0
];
Nabla_jVi = jacobian(Vi,Z);
for j = 1:n
for i = 1:n
for m = 1:n
Nabla_jVi(i,j) = Nabla_jVi(i,j) + ...
Gamma(j,m,i)*Vi(m);
end
end
end
div_Vi = trace(Nabla_jVi)
div_Vi = 1/r
Kiszámoljuk a divergenciáját Descartes koordináta rendszerben is!
syms x y real
Zp = [x ; y];
Vi = [
x
y
] / sqrt(x^2 + y^2);
div_Vi = simplify(divergence(Vi,Zp))
div_Vi = 1/(x^2 + y^2)^(1/2)
End of the script.
pcz_dispFunctionEnd(TMP_MuIiKbocfQKqXbwtNPjz);
clear TMP_MuIiKbocfQKqXbwtNPjz