WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Von Schraubenröhre/Linie Hauptkrümmungen und Tangentialebe

 

Luke610
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 16.01.22
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.01.2022, 18:16     Titel: Von Schraubenröhre/Linie Hauptkrümmungen und Tangentialebe
  Antworten mit Zitat      
Hallo alle zusammen,

ich habe ein Problem bei der Berechnung der Hauptkrümmung und der Tangetialebene einer Schraubenröhre welche entlang einer Schraubenlinie liegt.

Zu der Aufgabe zählen auch andere Berechnungen wie z.B. Fundamentalgrößen, Flächenelemente oder Volumen.

Diese waren auch kein Problem in Matlab.

Jedoch bin ich etwas überfragt bei der Berechnung der Hauptkrümmung und der Tangentialebene in Matlab. Auch die Einbeziehung/Umsetzung der Weingartenabbildung klappt nicht.

Ich bin für jeden Lösungsansatz Dankbar.

Hier der bisherige Code:
Code:

%%==================================Allgemein========================

clear all
clc
close all

syms r(t,theta)                                     %simbolische Variablendeklaration (Symbolic math toolbox)

a=1;                                                % geg. in Aufgabenstellung
h=a/(2*pi*2);                                       %
rho=a/10;

%%==================================Aufgabe1========================

k(t)=[a*cos(t);a*sin(t);h*t];                       % Berechnung Schraubenkurve
dk(t)=diff(k,t);                                    % Berechnung 1. Ableitung nach t
ddk(t)=diff(dk,t);                                  % Berechnung 2. Ableitung nach t

FT(t)=dk;                                           % Berechnung Begleitendes Dreibein
FB(t)=cross(dk,ddk);
FN(t)=cross(FB,FT);

%FB=simplify(FB);                                   % Vereinfachung von FB

eFT=FT/norm(FT);                                    % Berechnung Einheitsvektoren für Funktion r(t,theta)
eFN=FN/norm(FN);                                    % Vektor durch Vektorlänge teilen (Betrag)
eFB=FB/norm(FB);


r(t,theta)=rho.*(eFB.*sin(theta)-eFN.*cos(theta))+k;        %%Formel aus Aufgabe

tu=diff(r,t);                                       % Berechnung tu und tv   für Aufgabe 2 & 3
tv=diff(r,theta);                                   % Berechnung hier notwendig, da t im folgenden einen Wert bekommt
                                                    % Partielle Ableitung nach r oder theta    


tmin=0;                                            
tmax=1.5/h;
thetamin=0;
thetamax=2*pi;

t = linspace(tmin,tmax,300);                        %300 Werte für t berechnen
theta = linspace(thetamin,thetamax,36);             % alle 10°


[T,Theta]=meshgrid(t, theta);                       %% Generiert x- und y-Matrizen für dreidimensionales Plotten --> man erhält alle möglichen Paarungen


rplot=r(T,Theta);                                   %% Wertematrix berechnen

rx=cell2sym(rplot(1));                              %% Wertecell in Sym umwandeln
ry=cell2sym(rplot(2));
rz=cell2sym(rplot(3));

%subplot(1,2,1);                                    %% in einer Figure Plotten
figure(1);                                          %% mehrere Figure erstellen
plot3(rx,ry,rz,"b");
hold on
grid on
xlabel('x');
ylabel('y');
zlabel('z');
title('Röhre entlang einer Schraubenkurve');


kplot=k(t);                                         %% t extra gewählt, da k nur von t abhängig ist, T wäre die Matrix für Theta und T

kx=cell2sym(kplot(1));                              %% in kplot wurden die Werte als Cell abgespeichert, diese sind nicht so nicht plotbar
ky=cell2sym(kplot(2));
kz=cell2sym(kplot(3));

%subplot(1,2,2);
figure(2);
axis equal
plot3(kx,ky,kz,"r");
hold on
grid on
xlabel('x');
ylabel('y');
zlabel('z');
title('Schraubenkurve');

%%==================================Aufgabe 2==============================

E=norm(tu.*tu);                 % S. 150 Binomi Fundamentalgrößen
F=norm(tu.*tv);
G=norm(tv.*tv);

%%==================================Aufgabe 3==============================
 
dA=norm(cross(tu,tv));          %skalares Flächenelement                  
dA1=sqrt(E*G-F^2);
 
%%==================================Aufgabe 6==============================
 
dAFkt=matlabFunction(dA);
 
A=integral2(dAFkt,tmin,tmax,thetamin,thetamax);

Aalt=3*2*pi*sqrt(a^2+h^2)*2*pi*rho;                                          %% SB 134 / 32 (3 Windungen durchlaufen!!)
 
LSchraube = 2*pi*sqrt(a*a+h*h);
VSchraube = a*a*pi*LSchraube;
 


Vielen Dank an alle Antworten schonmal vorab Smile
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 16.01.2022, 18:46     Titel:
  Antworten mit Zitat      
Hallo.

wo genau ist das Problem? Welche Formeln versuchst du umzusetzen, welche Fehler oder unerwartete Verhalten treten auf? "klappt nicht" ist keine hilfreiche Problembeschreibung ;)

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Luke610
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 16.01.22
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.01.2022, 12:59     Titel:
  Antworten mit Zitat      
Hey, vielen dank für den Hinweis.

Ich habe mich an den Tangentialebenen versucht. Es funktioniert auch insofern das mir diese für die Schraubenlinie geplottet werden. Allerdings weiß ich nicht wie ich diese jetzt auf die Schraubenröhre beziehen kann.

Hier der Code, Tangentialebenen Berechnung Abschnitt Aufgabe 5.

Die Hauptkrümmungen habe ich versucht mit Hilfe der ersten und zweiten Fundamentalgröße und dessen Matrix zu berechnen. Über diese wollte ich die Weingartenabbildung bestimmen, durch die Multiplikation der zweiten mit der Invertierten Matrix der ersten.
Aus der Weingartenabbildung hatte ich dann Woraus ich wiederum vor Eigenwerte zu bestimmen welches dann die Hauptkrümmung ist.

Der Code dafür läuft allerdings nicht sehr sehr lange und kommt eigentlich zu keinem Ende. Ich habe ihn unten separat angefügt.

Code:

%%==================================Allgemein========================

clear all
clc
close all

syms r(t,theta)                                     %simbolische Variablendeklaration (Symbolic math toolbox)

a=1;                                                % geg. in Aufgabenstellung
h=a/(2*pi*2);                                       %
rho=a/10;

%%==================================Aufgabe1========================

k(t)=[a*cos(t);a*sin(t);h*t];                       % Berechnung Schraubenkurve
dk(t)=diff(k,t);                                    % Berechnung 1. Ableitung nach t
ddk(t)=diff(dk,t);                                  % Berechnung 2. Ableitung nach t

FT(t)=dk;                                           % Berechnung Begleitendes Dreibein
FB(t)=cross(dk,ddk);
FN(t)=cross(FB,FT);

%FB=simplify(FB);                                   % Vereinfachung von FB

eFT=FT/norm(FT);                                    % Berechnung Einheitsvektoren für Funktion r(t,theta)
eFN=FN/norm(FN);                                    % Vektor durch Vektorlänge teilen (Betrag)
eFB=FB/norm(FB);


r(t,theta)=rho.*(eFB.*sin(theta)-eFN.*cos(theta))+k;        %%Formel aus Aufgabe

tu=diff(r,t);                                       % Berechnung tu und tv   für Aufgabe 2 & 3
tv=diff(r,theta);                                   % Berechnung hier notwendig, da t im folgenden einen Wert bekommt
                                                    % Partielle Ableitung nach r oder theta    


tmin=0;                                            
tmax=1.5/h;
thetamin=0;
thetamax=2*pi;

t = linspace(tmin,tmax,300);                        %300 Werte für t berechnen
theta = linspace(thetamin,thetamax,36);             % alle 10°


[T,Theta]=meshgrid(t, theta);                       %% Generiert x- und y-Matrizen für dreidimensionales Plotten --> man erhält alle möglichen Paarungen


rplot=r(T,Theta);                                   %% Wertematrix berechnen

rx=cell2sym(rplot(1));                              %% Wertecell in Sym umwandeln
ry=cell2sym(rplot(2));
rz=cell2sym(rplot(3));

%subplot(1,2,1);                                    %% in einer Figure Plotten
figure(1);                                          %% mehrere Figure erstellen
plot3(rx,ry,rz,"b");
hold on
grid on
xlabel('x');
ylabel('y');
zlabel('z');
title('Röhre entlang einer Schraubenkurve');


kplot=k(t);                                         %% t extra gewählt, da k nur von t abhängig ist, T wäre die Matrix für Theta und T

kx=cell2sym(kplot(1));                              %% in kplot wurden die Werte als Cell abgespeichert, diese sind nicht so nicht plotbar
ky=cell2sym(kplot(2));
kz=cell2sym(kplot(3));

%subplot(1,2,2);
figure(2);
axis equal
plot3(kx,ky,kz,"r");
hold on
grid on
xlabel('x');
ylabel('y');
zlabel('z');
title('Schraubenkurve');

%%==================================Aufgabe 2==============================

E=norm(tu.*tu);                 % S. 150 Binomi Fundamentalgrößen
F=norm(tu.*tv);
G=norm(tv.*tv);

%%==================================Aufgabe 3==============================
 
dA=norm(cross(tu,tv));          %skalares Flächenelement                  
dA1=sqrt(E*G-F^2);
 
%%====================================================Aufgabe 5=====================

n=9;                                                                         %% Anzahl Tagentialebenen
                                               
dt=(tmax-tmin)/(n-1);                                                        %% Schrittweite berechnen

m=1; tdrei=tmin;                                                             %% Laufvariable
                                       

xT=(1:n); yT=(1:n); zT=(1:n);                                                %% Anfangswerte (Ort)
uT=(1:n); vT=(1:n); wT=(1:n);                                                %% Richtungswerte (Richtung)


xB=(1:n); yB=(1:n); zB=(1:n);
uB=(1:n); vB=(1:n); wB=(1:n);

while tdrei <= tmax                                                          %% While Schleife für Vektorenberechnung (Dreibein)
    xyz=k(tdrei);
    uvw=eFT(tdrei);                                                          %%   Tangentenvektor
   
    xT(m)=xyz(1);
    yT(m)=xyz(2);
    zT(m)=xyz(3);
   
    uT(m)=uvw(1);
    vT(m)=uvw(2);
    wT(m)=uvw(3);
   
       
    uvw=eFB(tdrei);                                                         %% Binormalenvektor
   
    xB(m)=xyz(1);
    yB(m)=xyz(2);
    zB(m)=xyz(3);
   
    uB(m)=uvw(1);
    vB(m)=uvw(2);
    wB(m)=uvw(3);
   

    tx1=xT(m)+0.3*uT(m)+0.3*uB(m);                                                        %% Berechnen der Eckpunkte der Rechtecke
    tx2=xT(m)-0.3*uT(m)-0.3*uB(m);                                                        %% mit Tagentialvektor und Binormalenvektor

    ty1=yT(m)+0.3*vT(m)+0.3*vB(m);
    ty2=yT(m)-0.3*vT(m)-0.3*vB(m);

    tz1=zT(m)+0.3*wT(m)+0.3*wB(m);
    tz2=zT(m)-0.3*wT(m)-0.3*wB(m);

    tx = [tx1 tx1 tx2 tx2]                                                  %Vektorn mit x,y,z Korrdinaten der Eckpunkte
    ty = [ty1 ty1 ty2 ty2]
    tz = [tz1 tz2 tz2 tz1]
    fill3(tx,ty,tz,1)                                                       %Plotten der Tagentialebenen
    m=m+1;
    tdrei=tdrei+dt;
end



legend('Schraubenkurve','Tangentenvektor','Hauptnormalenvektor','Binormalenvektor');

%%==================================Aufgabe 6==============================
 
dAFkt=matlabFunction(dA);
 
A=integral2(dAFkt,tmin,tmax,thetamin,thetamax);

Aalt=3*2*pi*sqrt(a^2+h^2)*2*pi*rho;                                          %% SB 134 / 32 (3 Windungen durchlaufen!!)
 
LSchraube = 2*pi*sqrt(a*a+h*h);
VSchraube = a*a*pi*LSchraube;

 


Aufgabe Hauptkrümmungen bestimmen, der Code gehört eigentlich ebenfalls in den zuvor genannten code. Allerdings habe ich diesen herauskopiert damit das obige Beispiel lauffähig ist.

Code:


en=cross(tu,tv);

L=norm(en.*tu2)
M=norm(en.*tuv2)
N=norm(en.*tv2)


F1=[E F;F G]
F2=[L M;M N]

F1Inv=inv(F1)



W=F1Inv.*F2               %Weingartenabbildung

W(1,1)

HK=eig(W)
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.01.2022, 13:53     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Der Code dafür läuft allerdings nicht sehr sehr lange und kommt eigentlich zu keinem Ende.

Bei mir läuft der Code zwar lange, aber bis zum integral2-Aufruf fehlerfrei durch. Dort müssen alle Grenzen numerisch sein, tmax ist aber symbolisch.

Die lange Laufzeit dürfte durch das (zu) viele Arbeiten mit symbolischen Variablen kommen. Spätestens beim Einsetzen von Werten würde ich auf numerisch wechseln.

Wenn, dann sollte man die Parameter auch symbolisch definieren, vor allem h:
Code:
a=sym(1);                                                % geg. in Aufgabenstellung
h=a/(2*sym(pi)*2);                                       %
rho=a/10;


Zitat:
Allerdings weiß ich nicht wie ich diese jetzt auf die Schraubenröhre beziehen kann.

Kannst du die Frage konkretisieren?

Der untere Code verwendet dann tu2, etc. und ist dadurch nicht lauffähig.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.