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

Lösung TM_Mathe Gelichungssystem, Übergangsbedingungen

 

Maxx_BMT
Forum-Fortgeschrittener

Forum-Fortgeschrittener



Beiträge: 75
Anmeldedatum: 09.10.13
Wohnort: Ilmenau
Version: R2011a, R2016a
     Beitrag Verfasst am: 31.07.2014, 09:51     Titel: Lösung TM_Mathe Gelichungssystem, Übergangsbedingungen
  Antworten mit Zitat      
Hallo liebes Forum,

ich habe ein Problem bei der Berechnung einer Balkenbiegung und wollte fragen ob mir dabei jemand behilflich sein kann.

Es geht um folgendes:
Ich habe sechs verschiedene Gleichungen und sechs verschiedene Konstanten die ich errechnen will. Diese bekomme ich durch meine Übergangs bzw. Randbedingungen. Nun wollte ich Matlab beibringen diese zu berechnen, da ich per Hand ungefähr auf Seite zehn bin und immernoch einen Fehler gemacht habe.

Die Formeln lauten wie folgt.


v1''(x)=1/(E*Izz)*F*x

v1'(x)=1/(E*Izz)*1/2F*x²+c1

v1(x)=1/(E*Izz)*1/6F*x³+c1*x+c2

v2''(x)=1/(E*Izz)*-F*a1

v2'(x)=1/(E*Izz)*-F*a1*x+c3

v2(x)=1/(E*Izz)*-F*a1*1/2*x²+c3x+c4

v3''(x)=1/(E*Izz)*(-F*a1-F*a2+F*x)

v3'(x)=1/(E*Izz)*(-F*a1*x-F*a2*x+1/2*F*x²)+c5


v3(x)=1/(E*Izz)*(-1/2*F*a1*x²-1/2*F*a2*x²+1/6*F*x³)+c5*x+c6

Die Übergangs- bzw. Randbedingungen lauten:

v1(0) = 0

v3(a1+a2+a3) = 0

v1(a1) = v2(a1)

v1'(a1) = v2'(a1)

v2(a2) = v3(a2)

v2'(a2) = v3'(a2)


Die Frage ist bereits hier habe ich richtig integriert? Ich bin vor lauter Formeln nicht mal da zu 100% sicher Wink

Meine ganzen Größen wie a1,a2,a3,E,Izz und F sind bekannte Größen. Ich möchte jetzt speziell die ganzen Konstanten c1, c2, c3, c4, c5, c6 gerne in Abhängigkeit dargestellt haben bzw. eine Lösung für die Biegung in v2((a1+a2+a3)/2) haben, dazu brauch ich jedoch meine Konstanten oder müsste ein entsprechendes Gleichungssystem aufstellen. Mit welcher Funktion kann ich dies in Matlab implementieren bzw. wie kann ich die Formeln nach den Integrationskonstanten umstellen um die Abhägigkeiten rauszubekommen.

Vielen Dank für eure Hilfe.
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 31.07.2014, 10:00     Titel:
  Antworten mit Zitat      
Hallo,

sind alle anderen Variablen von x unabhängige Konstanten? (z.B. E, F, Izz)

Hier mal ein Anfang:
Code:
syms x E F Izz C1 C2
v1D2=1/(E*Izz)*F*x
v1D1= int(v1D2, x) + C1
v1 = int(v1D1, x) + C2


Einsetzen von z.B. 0:
Code:


Lösen von Gleichungen:
Code:


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Maxx_BMT
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener



Beiträge: 75
Anmeldedatum: 09.10.13
Wohnort: Ilmenau
Version: R2011a, R2016a
     Beitrag Verfasst am: 31.07.2014, 10:03     Titel:
  Antworten mit Zitat      
Hallo Harald,

vielen Dank für deine schnelle Hilfe.

Zu deiner Frage ja die alles wo kein x dran ist ist komplett unabhängig von x also a, F, Izz usw.

Danke das werd ich gleich mal ausprobieren.

Beste Grüße.
Private Nachricht senden Benutzer-Profile anzeigen
 
Maxx_BMT
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener



Beiträge: 75
Anmeldedatum: 09.10.13
Wohnort: Ilmenau
Version: R2011a, R2016a
     Beitrag Verfasst am: 31.07.2014, 13:09     Titel:
  Antworten mit Zitat      
Hallo,

also ich habe jetzt mal nen anderen Ansatz versucht und das ganze in ein Gleichungssystem überführt. Ob ein Fehler im Gleichungssystem ist, ist eher uninteressant da ich es nochmal überprüfen werde.

Mehr interessiert mich wie ich die if Schleife korrigiere ud es in drei Bereiche teile. Um das Problem mal etwas verständlicher zu machen hier ein Link mit einer Skizze zum Problem:
http://www.schweizer-fn.de/festigke.....traeger/aufl2_2f_rech.php

Das ganze möchte ich berechnen und muss jetzt noch die Bereiche links und rechts von F einteilen.

Dazu mein Code:

Code:
close all; clear all; clc;

%%Größen

a2 = input ('Abstand der Zähne:');

a1 = (305 - a2)/2;
a3 = (305 - a2)/2;

a = a1+a2+a3;

F = input ('Bitte geben sie die erwartete Beißkraft an:');

EModul = 2500;

hdrei = 80;
bdrei = 19;

avier = 15;
cvier = 80;

%%Berechnungen

Adrei = 0.5 * hdrei * bdrei;  
Avier = avier * cvier;

ysdrei = 1/3 * bdrei;
ysvier = -avier / 2;

ysges = (Avier*ysvier + Adrei*ysdrei)/(Adrei + Avier);

Izz = (hdrei * bdrei^3)/12 - Adrei*(1/3*bdrei)^2 + Adrei * (ysges + 1/3*bdrei)^2 + 1/3 * cvier * avier^3;

%% Berechnung der Integrationskonstanten

A = [ 0   1   0   0   0   0;
      0   0   0   0   a   1;
    -a1  -1   a1  1   0   0;
     -1   0   1   0   0   0;
      0   0  a2   1  -a2  -1;
      0   0  1   0  -1   0];
 
  b = [0;
      -(1/(EModul*Izz))*(-F*a^2*0.5*a1-F*a2*a^2*0.5+1/6*F*a^3);
      (1/(EModul*Izz))*(1/6*F*a1^3+F*a1^3*0.5);
      (1/(EModul*Izz))*(F*a1^2*0.5+F*a1^2);
      (1/(EModul*Izz))*(-F*a2^3*0.5+1/6*F*a2^3);
      (1/(EModul*Izz))*(-0.5*F*a2^2)];
 
 C = A \ b;

 
%% Erstellung der Biegelinie
n = 10;
zi = 0 : (a)/n : a ;
v  = zeros(n+1,1) ;

%v2 = (1/(EModul*Izz))*-F*a1*(a/2)^2*0.5 + C(3)*a/2 + C(4);

for i = 1:n+1
    if zi(i) <= a1
         z     = zi(i) ;
         v(i)  = 1/(EModul*Izz) * 1/6 * F * z^3 + C(1)*z + C(2);
        if zi(i) <= a1+a2
         z    = zi(i)-a1 ;
         v(i)  = 1/(EModul*Izz)*-F*a1*1/2*z^2+ C(3)*z + C(4);
            if zi(i) <= a
         z    = zi(i)-(a1+a2);
         v(i) = 1/(EModul*Izz)*(-1/2*F*a1*z^2-1/2*F*a2*z^2+1/6*F*z^3) + C(5)*z+ C(6);
            else
         
         
      end
    end
  end
end

 subplot (3,1,1) ; plot (zi , v)  , grid on , title ('Biegelinie') , axis ij


Bei mir ist L gleich a und die kleinen a sind die a's mit den Indizes. Ich muss noch die dritte else Bedingung einbauen bzw. die if Bedingungen und da hänge ich ein wenig.

Ich hoffe es kann mir jemand dabei helfen.

Viele Grüße,
Maxx_BMT
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 31.07.2014, 14:20     Titel:
  Antworten mit Zitat      
Hallo,

sieht so aus, also solltest du if - elseif - end verwenden.

Ansonsten bitte auch sagen, wo konkret die Probleme liegen: Fehlermeldungen? Unerwartete Ergebnisse? Welche?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Maxx_BMT
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener



Beiträge: 75
Anmeldedatum: 09.10.13
Wohnort: Ilmenau
Version: R2011a, R2016a
     Beitrag Verfasst am: 31.07.2014, 14:27     Titel:
  Antworten mit Zitat      
Hallo,

danke für die schnelle Hilfe.

Also das Problem liegt darin das die Biegelinie die ich mir plotten lasse nach dem ersten Abschnitt einfach aufhört und auf Null geht, was ja nicht stimmen kann und sie ist an den Rändern maximal, was ja auch nicht stimmen kann da sie ihr Maximum ja in der Mitte haben muss. Ansonsten kommen keine Fehlermeldungen der Plot ist einfach nur fehlerhaft und kann so nicht stimmen, rein logisch wäre es eine falsche Biegelinie.

Theoretisch sollte die Linie bei Null beginnen und am Ende auch auf Null wieder zurückgehen. Bei meiner jetzigen Berechnung kommt folgendes raus: Bild im Anhang!

Das mit dem
Code:
ging schon mal ganz gut Wink

Nur noch die letzten Stolpersteine beseitigen.

Code:
close all; clear all; clc;

%%Größen

a2 = input ('Abstand der Zähne:');

a1 = (305 - a2)/2;
a3 = (305 - a2)/2;

a = a1+a2+a3;

F = input ('Bitte geben sie die erwartete Beißkraft an:');

EModul = 2500;

hdrei = 80;
bdrei = 19;

avier = 15;
cvier = 80;

%%Berechnungen

Adrei = 0.5 * hdrei * bdrei;  
Avier = avier * cvier;

ysdrei = 1/3 * bdrei;
ysvier = -avier / 2;

ysges = (Avier*ysvier + Adrei*ysdrei)/(Adrei + Avier);

Izz = (hdrei * bdrei^3)/12 - Adrei*(1/3*bdrei)^2 + Adrei * (ysges + 1/3*bdrei)^2 + 1/3 * cvier * avier^3;

%% Berechnung der Integrationskonstanten

A = [ 0   1   0   0   0   0;
      0   0   0   0   a   1;
    -a1  -1   a1  1   0   0;
     -1   0   1   0   0   0;
      0   0  a2   1  -a2  -1;
      0   0  1   0  -1   0];
 
  b = [0;
      -(1/(EModul*Izz))*(-F*a^2*0.5*a1-F*a2*a^2*0.5+1/6*F*a^3);
      (1/(EModul*Izz))*(1/6*F*a1^3+F*a1^3*0.5);
      (1/(EModul*Izz))*(F*a1^2*0.5+F*a1^2);
      (1/(EModul*Izz))*(-F*a2^3*0.5+1/6*F*a2^3);
      (1/(EModul*Izz))*(-0.5*F*a2^2)];
 
 C = A \ b;

 
%% Erstellung der Biegelinie
n = 1000;
zi = 0 : (a)/n : a ;
v  = zeros(n+1,1) ;

v2 = (1/(EModul*Izz))*-F*a1*(a/2)^2*0.5 + C(3)*a/2 + C(4);

for i = 1:n+1
    if zi(i) <= a1
         z     = zi(i) ;
         v(i)  = 1/(EModul*Izz) * 1/6 * F * z^3 + C(1)*z + C(2);
    elseif zi(i) <= a1+a2
         z    = zi(i)-a1 ;
         v(i)  = 1/(EModul*Izz)*-F*a1*1/2*z^2+ C(3)*z + C(4);
    elseif zi(i) <= a
         z    = zi(i)-(a1+a2);
         v(i) = 1/(EModul*Izz)*(-1/2*F*a1*z^2-1/2*F*a2*z^2+1/6*F*z^3) + C(5)*z+ C(6);        
      end
    end
 


 subplot (3,1,1) ; plot (zi , v)  , grid on , title ('Biegelinie')


Grüße,

Maxx_BMT

untitled.png
 Beschreibung:

Download
 Dateiname:  untitled.png
 Dateigröße:  11.56 KB
 Heruntergeladen:  477 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 02.08.2014, 14:01     Titel:
  Antworten mit Zitat      
Hallo Maxx_BMT,

Ein genereller Ratschlag:
Wenn Du auf den "brutalen CLEAR-Header" close all; clear all; clc; verzichtest, kannst Du den Debugger verwenden um zeilenweise durch Deinen Code zu gehen.

Deshalb bleibt es für ein ein großes Rätsel, warum Programmieranfänger ausgerechnet den Debugger-Killer "clear all" so häufig einsetzen. Das scheinen wohl mal Matlab-Dozenten von anderen Dozenten übernommen zu haben. Aber den Debugger zu blockieren ist eine ausgesprochen unnützliche Unsitte.

Grüße, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 02.08.2014, 17:05     Titel:
  Antworten mit Zitat      
Hallo,

scheint ein Fehler im Aufstellen der Gleichungen oder im Auswerten zu sein. Die Biegelinie ist ja nicht mal stetig, also sind von der geplotteten Biegelinie insbesondere diese Gleichungen nicht erfüllt.
Rein optisch würde ich auf einen Vorzeichenfehler tippen.

Grüße,
Harald
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.