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

Funktion mit mehreren Variablen integrieren

 

Romy
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 26.03.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.03.2020, 15:41     Titel: Funktion mit mehreren Variablen integrieren
  Antworten mit Zitat      
Liebe Liste,
nachdem meine erste Frage vor ein paar Tagen scheinbar zu einfach war und schnell beantwortet werden konnte nun ein etwas kniffligerer Fall.
Ich möchte eine Spannungsverteilung berechnen, die Variablen sind "theta" und "r", und können von 0 bis 90 bzw. 0 bis 1 wandern. Die Schrittweite sei zunächst egal.

In einem ersten Schritt errechne ich Hilfgrößen "lambda", "gamma" und "psi", aus denen sich dann die Größen "N22", "N12" errechnen. Diese Größen sind nur von "theta" abhängig.

Im CommandWindow sehe ich auch korrekt jede Größe als Vektor ausgegeben. Zunächst also alles gut.

Nun will ich eine polare Spannungsverteilung (mit zusätzlichen L12 und L22 als Konstanten) errechnen. Hier muss nun auch eine Abhängigkeit von "r" betrachtet werden. Leider funktioniert der Code nicht, da die Matrix-Dimensionen nicht korrekt sind
Code:

r=0:0.1:1;
sigmaP22=sind(theta)./pi./r.*(N21.*L12+N22.*L22)
 


Wie löst man dies?
Für einen definierten Wert r klappt es und sigmaP22 wird als Vektor (entsprechend meiner vielen "theta") mit Werten ausgegeben. Für viele "r" klappt es nun aber nicht.

Im nächsten Schritt muss die Spannungsverteilung nun in ein anderes System konvertiert werden. Hierfür muss über die obige Spannung integriert werden.

Für ein einzelnens "theta" und ein einzelnes "r" funktioniert Folgendes:

Code:

f=@(x) sqrt(1-(x/a).^2).*sigmaP22;
sigmaK22=integral(f ,-a, a);
 


Wie löst man dies für ein sigmaP22 als Matrix.


An der Frage, wie ich die Spannung als Diagramm darstelle (2D mit Farbverlauf wie bspw. aus der FEM bekannt), versuche ich mich zunächst selbst Wink
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

zu sigmaP22:
Wenn r ein Zeilen- und theta ein Spaltenvektor ist (oder umgekehrt), macht MATLAB das über "Implicit Expansion" automatisch und gibt eine Matrix zurück.

zu sigmaK22:
sigmaP22 ist hier ja eine Konstante. Dann kannst du das vorziehen, das Integral ohne Berücksichtigung vom sigmaP22 berechnen, und anschließend mit sigmaP22 multiplizieren. Du bekommst dann eine Matrix der gleichen Größe wie sigmaP22.

Für die Darstellung bieten sich Funktionen wie surf oder contour an.

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
 
Romy
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 26.03.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.03.2020, 13:37     Titel:
  Antworten mit Zitat      
Vielen Dank!
Die Berechnung läuft nun.

Für das Diagramm bin ich auf contourf gestoßen. Unabhängig von der konkreten Funktion (surf oder contour oder ...) Wende ich eine Funktion nun auf mein sigmaK22 an (eine Matrix horizontal nach Winkel theta, vertikal nach Radius r) funktioniert das nicht wirklich, da man die Matrix freilich nicht als kartesisch x-y begreifen darf. Dieses Problem haben auch schon zahlreiche Menschen in diversen Foren beschrieben, jeoch komme ich mit den dort beschriebenen Lösungen nicht weiter: Z.B. [X Y Z]= pol2cart(theta,r,sigmaK22) funktioniert aufgrund unterschiedlicher Vektorlängen nicht.

Man müsste für jeden Eintrag der Matrix über r*cos(theta) bzw. r*sin(theta) eigene X-Y-Werte errechnen. Das wäre dann natürlich keine Matrix mehr und das kann ich auch nicht wirklich darstellen.


Die Frage ist nun also wie ich die Daten konvertiere, sodass mein sigmaK22 als Zylinderkoordinaten interpretiert werden.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Zitat:
Man müsste für jeden Eintrag der Matrix über r*cos(theta) bzw. r*sin(theta) eigene X-Y-Werte errechnen. Das wäre dann natürlich keine Matrix mehr und das kann ich auch nicht wirklich darstellen.

Ich würde schon sagen, dass das eine Matrix ist. Wenn r ein Zeilen- und theta ein Spaltenvektor ist (oder umgekehrt), dann kannst du x und y sogar direkt berechnen, und die Dimensionen sind dieselben wie bei sigmaK22.
Code:
x = r .* cos(theta);


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
 
Romy
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 26.03.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.05.2020, 11:34     Titel:
  Antworten mit Zitat      
Hallo Harald,

ich habe mich lange nicht gemeldet, weiß nun aber dass mein Problem tiefer sitzt. Es ist vergleichbar mit dem einer Pressungsverteilung, das habe ich aber noch nicht hier im Forum gefunden:
Ich würde gerne nochmal vom eigentlichen Ziel beginnen:
Gegeben ist ein Halbraum, von -x zu x und 0 zu -y. Für jeden einzelnen Punkt dieses Halbraums möchte ich den Spannungswert wissen.
Die Ursache für die Spannung ist eine Lasteinleitung von -L bis L bei y=0, also ein Teil des Randes vom Halbraum.

Will ich nun die Spannung für einen Punkt im Halbraum wissen, dann muss ich die Wirkungen der Punkte der Lasteinleitung auf diesen betrachteten Punkt im Halbraum summieren (im Idealfall ein Integral bilden).

Diese Wirkungen sind polar beschrieben.

Die Frage also lautet wie ich den folgenden Ablauf umsetze:

-nehme den ersten Punkt aus dem Halbraum
-rechne den polaren Abstand / polaren Winkel zu jedem Lasteinleitungspunkt aus
-berechne auf Basis der Abstände/Winkel die Wirkungen (mein Post vom 28.3.; das klappt nun)
-summiere die Wirkungen (das klappt nicht, da sigmaP22 keine Konstante ist und sich damit nicht vor das Integral ziehen lässt)

Diese Schritte für jeden Punkt im Halbraum
Generiere dann eine Matrix.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.05.2020, 11:45     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
-nehme den ersten Punkt aus dem Halbraum
-rechne den polaren Abstand / polaren Winkel zu jedem Lasteinleitungspunkt aus

Bei diesen Schritten verstehe ich leider nur Bahnhof und kann mit dem Stand auch nicht bei der Umsetzung helfen.

Zitat:
summiere die Wirkungen (das klappt nicht, da sigmaP22 keine Konstante ist und sich damit nicht vor das Integral ziehen lässt)

Was denn nun, summieren oder integrieren?
Falls integrieren: wenn sigmaP22 von x abhängt, dann musst du nur noch sagen wie, und integral erledigt den Rest.

Generell habe ich (und vermutlich ebenso die meisten anderen Leser) wenig Ahnung von deiner Anwendung. Je mehr du dich also auf MATLAB-Variablen und was du damit machen möchtest konzentrierst, desto eher kann man dir helfen. Idealerweise bitte den bisherigen Code zur Verfügung stellen. Das hast du zwar vorher getan, aber ich kann den Bezug deines letzten Beitrags dazu nicht herstellen.

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
 
Romy
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 26.03.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.05.2020, 15:26     Titel:
  Antworten mit Zitat      
Im Anhang habe ich den zu lösenden Zusammenhang mathematisch dargestellt.

X1 X2 bezeichnet den Halbraum
a bezeichnet einen ausgewählten Randbereich
x' ist ein Punkt im Bereich [-a a]

N ist eine einfache Funktion von theta
L ist eine Konstante

Dok1.pdf
 Beschreibung:

Download
 Dateiname:  Dok1.pdf
 Dateigröße:  98.62 KB
 Heruntergeladen:  263 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Romy
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 26.03.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.07.2020, 16:15     Titel:
  Antworten mit Zitat      
Ich habs gelöst!

Danke an alle Helfenden!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 09.07.2020, 19:22     Titel:
  Antworten mit Zitat      
Hallo,

das freut mich.
Für andere Forumteilnehmer, die ein ähnliches Problem haben, ist die Aussage "Ich habs gelöst!" aber sehr wenig hilfreich. Bitte also immer zumindest kurz beschreiben, was die Lösung war.

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.