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

Ritz Verfahren für ein statisch unbestimmtes System

 

thalia27
Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 14.04.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.07.2020, 14:09     Titel: Ritz Verfahren für ein statisch unbestimmtes System
  Antworten mit Zitat      
Hallo zusammen,

Ich habe jetzt versucht, die Verschiebung und der Biegewinkel zu berechnen. Das lief anscheinend nicht problematisch, weil die Verläufe von den Diagrammen stimmen.
Danach habe ich die errechnete Lösung (angenähert per Ritz Verfahren) mit der exakten Lösung verglichen. Hier habe ich bei der Verschiebung eine sehr kleine Abweichung und wenn ich n-Wert dann erhöhen, ist die Abweichung sogar größer geworden (das müsste eigentlich kleiner werden).
Außerdem habe ich die Ergebnisse von Biegewinkel auch verglichen, hier habe ich eine sehr große Abweichung Crying or Very sad . Kann jemand vielleicht mir sagen, wo der Fehler ist ? Smile
Code:
function Gesamtergebnis
%% Zweite Ableitung von g
syms x

% Eingabe Anzahl an Elementen
n = input('Eingabe der Anzahl an Elementen: ');

%       Funktion
g(1) = 1-3*x^2+2*x^3;
g(2) = x-2*x^2+x^3;
g(3) = 3*x^2-2*x^3;
g(4) = -1*x^2+x^3;
 
%    1. Ableitung
g1(1)=diff(g(1),x);
g1(2)=diff(g(2),x);
g1(3)=diff(g(3),x);
g1(4)=diff(g(4),x);

%    2. Ableitung
g2(1)=diff(g1(1),x);
g2(2)=diff(g1(2),x);
g2(3)=diff(g1(3),x);
g2(4)=diff(g1(4),x);

%% Steifigkeitsmatrix für ein Element

for i=1:4
    for j=1:4
        k(i,j) = int(g2(i) * g2(j),x,0,1);  
    end
end

disp('Elementsteifigkeitsmatrix')
disp(k)

%% Lastvektor für ein Element

syms q0
q1=q0;
f=zeros(4,1);

    for u=1:4
        f(u) = int ((q1/q0 - x) * g(u), x, 0, 1);
    end
   
disp('Lastvektor')
 disp(f)

%% Gesamtsteifigkeitsmatrix

m = (n+1)*2;
K=zeros(m,m);
 
for i=1:n
    for u=1+(i-1)*2:4+(i-1)*2
        for v=1+(i-1)*2:4+(i-1)*2
            K(u,v) = K(u,v) + k(u-(i-1)*2,v-(i-1)*2);
        end
    end
end

disp('Gesamtsteifigkeitsmatrix')
disp (K)

%% Berechnung des Gesamtlastvektors

syms q0
q1=q0;
F=zeros(m,1);
for i=1:n
    for u=1+(i-1)*2:4+(i-1)*2
        F(u) = F(u) + int ((q1/q0 - x/n) * g(u-(i-1)*2), x, 0, 1);
    end
        q1=q1-q0/n;
end

disp('Gesamtlastvektor');
disp (F)

%% Randbedingungen
% w Anfang=0
% w Ende=0
% phi Ende=0
 
for i=1:m
  %erste Zeile und Spalte Null damit w Anfang Null ist
    K(1,i) = 0;
    K(i,1) = 0;
 %vorletzte Zeile und Spalte damit phi Ende Null ist
    K(m-1,i) = 0;  
    K(i,m-1) = 0;  
 %letzte Zeile und Spalte damit w Ende Null ist
    K(m,i) = 0;    
    K(i,m) = 0;    
end
 
K(1,1)=1;
K(m-1,m-1)=1;
K(m,m)= 1;
F(1)=0;
F(m-1)=0;
F(m)= 0;

disp('Koeffizientenmatrix');
disp (K);
disp('Lastvektor');
disp (F);


%% Lösen des Gleichungssystems

x= K\-F;

 % Durch das Verhältnis der Elemente teilen
  for i=1:m
    x(i) =x(i)/n^4;
  end

  disp('Lösungsvektor');
  disp(x);
 
 w = x (1:2:length(x));      % Spacing 2, weil nur Werte für w benötigt werden
 phi = x (2:2:length(x));    % Spacing 2, weil nur Werte für phi benötigt werden
 

%% exakte Lösung
xex=0;
Iy=1;
q=1;
E=1;
l=1;

wex=zeros(m/2,1); %m/2 Zeilen und eine Spalte
 
for i=1:m/2 %jede zweite Zeile für w
    wex(i) = -((q * l^4) / (240 * E * Iy)) * ( 3 * (xex/l) - 11 * (xex/l)^3 + 10 * (xex/l)^4 - 2 * (xex/l)^5);
    xex=i/n;
end
 
% Berechnung der maximalen Abweichung der angenäherten und exakten Lösung
% Quelle Dubbel: max. Verschiebung bei x=0,4025 * l

xex=0
phiex=zeros(m/2,1); %m/2 Zeilen und eine Spalte

for i=1:m/2 %jede zweite Zeile für phi
    phiex(i) = -((q * l^4) / (240 * E * Iy)) * (3/l - 33 * xex^2/l^3 + 40 * xex^3/l^4 - 10 * xex^4/l^5);
    xex=i/n;
end


%% Abweichung berechnen
format long;
    c= 0.4025 * n;  
    xmax=round(c);      % damit keine Dezimalzahl raus kommt
    wexmax = wex(xmax);
    wmax = w(xmax);
   
        if wexmax<=wmax
           Abw=(1-(wexmax\wmax))*100;
            else if wexmax>wmax
                 Abw=(1-(wmax\wexmax))*100;
            end
        end
   
    disp('Abweichung in Prozent');
    disp(Abw);
 
 %% Plotten
 
  p=0:n;                    % Anzahl Punkte im Diagramm
 
 %berechnete Biegewinkel und Verschiebung
 plot(p,w,'-or',p,phi,'-ob');
 xlabel('Stab unterteilt in n Elemente');
 ylabel('Verschiebung/Biegewinkel')
 legend('Verschiebung','Biegewinkel');

 %exakte und angenäherte Lösung der Verschiebung
%  plot(p,w,'-or',p,wex,'-ob')
%  title('Vergleich von angenäherter und exakter Lösung')
%  xlabel('Stab unterteilt in n Elemente')
%  ylabel('Verschiebung')
%  legend('angenäherte Lösung','exakte Lösung')

 %exakte und angenäherte Lösung des Biegewinkels
 plot(p,phi,'-or',p,phiex,'-ob')
 title('Vergleich von angenäherter und exakter Lösung')
 xlabel('Stab unterteilt in n Elemente')
 ylabel('Biegewinkel')
 legend('angenäherte Lösung','exakte Lösung')

 

 

 

Danke schön
Grüße,
Thalia
Private Nachricht senden Benutzer-Profile anzeigen


T16
Forum-Century

Forum-Century


Beiträge: 145
Anmeldedatum: 31.01.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2020, 10:05     Titel:
  Antworten mit Zitat      
Kann es sein, dass Verdrehungen durch einen anderen Faktor wieder in dimensionsbehaftete Größen umgerechnet werden als die Verschiebungen? Aktuell rechnest du hier
Code:
for i=1:m
    x(i) =x(i)/n^4;
  end

sowohl Verdrehung als auch Verschiebung zurück. Wenn du das ^4 durch ^3 austauschst, passen deine Verdrehungen (aber die Verschiebungen natürlich nicht mehr). Da Verdrehung und Verschiebung andere Einheiten haben, werden vmtl. auch andere Faktoren bei der Redimensionierung zum Einsatz kommen.
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.