# Kapitel_02_c:
# Komponententransformationen für Vektoren und Tensoren
# © 2015  Friedrich U. Mathiak,
# mathiak@mechanik-info.de
# 
> restart: with(LinearAlgebra): 
# Beispiel 2-8: 
# Wir entwerfen eine Maple-Prozedur zur Komponententransformation von Vektoren.
> Proc_Calc_07:=proc(R::Matrix,a::Vector,flag::integer)
> #----------------------------------------------------------------
# #  Eingabe:
# #          R: Matrix des Transformationstensors 
# #          a: Zu transformierende Vektorkomponenten 
> 
> #       flag: Zeiger
> #             flag = 0: Die Zahlenwerte des Vektors a 
> #                       sind auf die Ausgangsbasis bezogen
> #             flag = 1: Die Zahlenwerte des Vektors a 
> #                       sind auf die gedrehte Basis bezogen 
> #  Ausgabe:
> #             Transformierte Vektorkomponenten        
> #----------------------------------------------------------------
> global a0,a1;
> description "Komponententransformation eines Vektors";
> if flag = 0 then
>   a1:=simplify(LinearAlgebra[Transpose](R).a);
>   print(`Vektor-Komponenten in der gedrehten Basis, a1 = `,a1);
> elif flag = 1 then
>   a0:=simplify(R.a);
>   print(`Vektor-Komponenten in der Ausgangsbasis, a0  = `,a0);
> else
>  print("Die Variable flag muss 0 oder 1 sein");
>  return;
> end if;
> end proc:
# Laut Aufgabenstellung ist die Matrix des Transformationstensors
> R:=Matrix([[1/2,0,1/2*sqrt(3)],[1/4*sqrt(3),1/2*sqrt(3),-1/4],[-3/4,1/2,1/4*sqrt(3)]]);
# Die Komponenten des Vektors a sind im Ausgangsbasissystem gegeben, damit ist flag = 0 zu setzen.
> a:=Vector([3,6,2]); flag:=0;
> Proc_Calc_07(R,a,flag);
# Sollen umgekehrt die Komponenten des im gedrehten Basissystem gegebenen Vektors a hinsichtlich des Ausgangsbasissystem ermittelt werden, dann ist  
> a:=a1; flag:=1;
> Proc_Calc_07(R,a,flag);
# Beispiel 2-9:
# Wir entwerfen eine Maple-Prozedur zur Komponententransformation von Tensoren.
> Proc_Calc_08:=proc(T::Matrix,A::Matrix,flag::integer)
> #-----------------------------------------------------------------------
> #  Eingabe:
# #          T: Matrix des Transformationstensors 
# #          A: Zu transformierende Matrix-Komponenten 
> 
> #       flag: Zeiger
> #             flag = 0: Die Zahlenwerte des Tensors S 
> #                       sind auf die Ausgangsbasis bezogen
> #             flag = 1: Die Zahlenwerte des Tensors S
> #                       sind auf die gedrehte Basis bezogen
> #  Ausgabe:
> #             Transformierte Matrix-komponenten  
> #-----------------------------------------------------------------------
> global A0,A1;
> description "Komponententransformation der Matrix eines Tensors";
> if flag = 0 then
>   A1:=simplify(LinearAlgebra[Transpose](T).S.T);
>   print(`Matrix-Komponenten in der gedrehten Basis, A1 = `,A1);
> elif flag = 1 then
>   A0:=simplify(T.S.LinearAlgebra[Transpose](T));
>   print(`Matrix-Komponenten in der Ausgangsbasis, A0  = `,A0);
> else
>  print("Die Variable flag muss 0 oder 1 sein");
>  return;
> end if;
> end proc:
# Laut Aufgabenstellung sind
> R:=1/9*Matrix([[1,-4,8],[8,4,1],[-4,7,4]]);
> S:=Matrix([[1,2,8],[2,4,1],[8,1,4]]); flag:=0;
> Proc_Calc_08(R,S,flag);
> S:=A1; flag:=1;
> Proc_Calc_08(R,S,flag);
# 
