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

Frage an die Matlab-Profis --> 5 fach Integral

 

Benjamin Nels

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.10.2015, 14:58     Titel: Frage an die Matlab-Profis --> 5 fach Integral
  Antworten mit Zitat      
Hallo Leute,

ich bin auf einer Arbeit gestoßen, in der folgendes Integral (siehe Bild
links) gelöst worden ist (mit Hilfe von Mathcad) und daraus dann rechts
der Graph entstanden ist.

Nun möchte ich genau dieses Integral auch in Matlab lösen und die
Ergebnisse verifizieren.


Ich habe es probiert, doch als Ergebnis habe ich eig. nur Mist erhalten.

Daher erhoffe ich mir, hier einen Profi vll. zu erwischen, der mir den
super Tip geben kann o.ä..

Den Link zu der Arbeit ist hier:

http://oaktrust.library.tamu.edu/bi.....713-murp-1.pdf?sequence=1

Die Seiten 35/36 und der Anhang sind hier sicherlich interessant.

ich freue mich auf eure Antwort.

Euer Benjamin.

Kraft.jpg
 Beschreibung:

Download
 Dateiname:  Kraft.jpg
 Dateigröße:  199.62 KB
 Heruntergeladen:  492 mal


Harald
Forum-Meister

Forum-Meister


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

was hast du denn versucht?

Grundsätzlich bieten sich int für symbolische Integration (generell nur, wenn es eine explizite Stammfunktion gibt) und für numerische Integration das
http://www.mathworks.com/matlabcent.....xchange/47919-integraln-m
an.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Benjamin Nels

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.10.2015, 15:43     Titel:
  Antworten mit Zitat      
Hallo Harald,
ich habe die Formel wie folgt in Matlab eingegeben, siehe Bild.

[EDITED, Jan, Bitte kein Top-Quoting. Danke!]

Matlab.png
 Beschreibung:

Download
 Dateiname:  Matlab.png
 Dateigröße:  49.59 KB
 Heruntergeladen:  505 mal
 
Harald
Forum-Meister

Forum-Meister


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

... und was ist dann passiert?

Bitte Code immer als Textanhang zur Verfügung stellen. Es will ja keiner den Code vom Screenshot abtippen, um das Verhalten nachzustellen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Benjamin Nels

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.10.2015, 19:06     Titel:
  Antworten mit Zitat      
Hallo Harald,

hier der code:


Code:
clc
clear

h=0.009525;
w=0.01048;
R=0.0050165;
d=0.009525;
Z=0.004;
c=0.01134;
mu0=4*pi*10^-7;
cur=2;
J=(cur*179)/(10.48*9.525*10^-6);
M=1.44/mu0;

syms thet rho r phi z

VF=(J*mu0*(mu0*M))/4*pi*mu0; % Konstanter Vorfaktor vor dem Integral in einer Variable gespeichert

wf1=sqrt((z-d/2)^2+r^2+rho^2-2*r*rho*cos(thet-phi)); % Wurzelausdruck im ersten Integralausdruck
F1=rho/wf1;

wf2=sqrt((z+d/2)^2+r^2+rho^2-2*r*rho*cos(thet-phi)); % Wurzelausdruck im zweiten negativen Integralausdruck
F2=rho/wf2;

% Abgetippte Formel von der Arbeit in Matlab
IT1=VF*int(int(int(diff(int(int(F1-F2,thet,0,2*pi),rho,0,R)*r,r),phi,0,2*pi),z,Z-h/2,Z+h/2),r,c-w/2,c+w/2)

edit winkow: bitte code umgebung benutzen
 
Harald
Forum-Meister

Forum-Meister


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

ich wiederhole mich mal:
Zitat:
... und was ist dann passiert?

(als du den Code hast laufen lassen)

Dass der symbolische Weg mit int nicht immer möglich ist, hatte ich ja geschrieben. Dann wäre es naheliegend, den numerischen Weg zu versuchen (siehe Link unten).

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Benjamin Nels

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.10.2015, 19:16     Titel:
  Antworten mit Zitat      
Sorry!

Was dann passiert ist? Naja, da kam erstens kein Zahlenwert raus, sondern ein sehr sehr langer Ausdruck, der nicht ganz interpretierbar isr.

Ich erwarte als Ergebnis eig. ein Zahlenwert.
 
Benjamin Nels

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.10.2015, 15:02     Titel:
  Antworten mit Zitat      
Code:


clc
clear

tic

h=0.009525;
w=0.01048;
R=0.0050165;
d=0.009525;
Z=0.004;
c=0.01134;
mu0=4*pi*10^-7;
cur=2;
J=(cur*179)/(10.48*9.525*10^-6);
M=1.44/mu0;

syms thet rho r phi z

VF=(J*mu0*(mu0*M))/(4*pi*mu0); % Konstanter Vorfaktor vor dem Integral in einer Variable gespeichert

F1=rho./((sqrt((z-d./2).^2+r.^2+rho.^2-2.*r.*rho.*cos(thet-phi)))) % Wurzelausdruck im ersten Integralausdruck;

F2=rho./((sqrt((z+d./2).^2+r.^2+rho.^2-2.*r.*rho.*cos(thet-phi))))


% % Abgetippte Formel von der Arbeit in Matlab
IT1=VF.*int(int(int(diff(int(int(F1-F2,thet,0,2*3.14),rho,0,R)*r,r),phi,0,2*3.14),z,Z-h/2,Z+h/2),r,c-w/2,c+w/2)

Fz=vpa(IT1,6)

toc

 



Hallo Leute,

ich habe eine Frage:
Ich berechne zunächst symbolisch mit Matlab den Integralausdruck, d.h. das5-fache Integral, und diesen symbolischen Ausdruck berechne ich dann numerisch.

Einzige Sache die derzeit mich etwas verunsichert:
Matlab rechnet bei mir schon seit 6 Stunden, kann es sein, dass ein solches Integral (etwas komplex und dann noch 5 mal) so lange dauert bzw. noch länger dauern kann??

Bekommt man irgendwie raus, wie lange die Rechnung ungefähr dauern kann?

Ich mein, nicht dass ich nach einem Tag das abbreche, obwohl die Rechnung dann ne stunde später fertig wäre.

Über eure Hilfe freue ich mich.
 
Benjamin Nels

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.10.2015, 15:15     Titel:
  Antworten mit Zitat      
Als Beispiel, was ich vorher berechnet hatte und was analytisch auch nicht integrierbar ist, war die Funktion

z=exp(-x^2*y^2)

Integriere ich diese Funktion symbolisch in Matlab, so berechnet mir Matlab den Ausdruck nicht, da es keine geschlossene Formel finden kann.

Benutze ich jedoch vpa, so wird mir der Wert berechnet.


Code:


clc
clear
syms x y z

%Analytisch nicht integrierbare Funktion
f=exp(-x.^2.*y.^2.*z.^2)

% Verschachtelte Integration mit den Grenzen immer von 0 bis 1
F=int(int(int(f,x,0,1),y,0,1),z,0,1)

% numerischen Wert bestimmen
Fx=vpa(F,5)

 


Auf diesem Wege ist es möglich, zunächst auch möglich symbolisch zu integrieren und dann numerisch auszuwerten. Der Vorgang hier dauert aber ca. 1 min.
Bei Auswertung von 5 Integralen, dauert der Rechenvorgang dann 25 min.
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 09.10.2015, 15:19     Titel:
  Antworten mit Zitat      
warum versuchst du es nicht so wie harald vorgeschlagen hat? gefällt dir etwas an seiner lösung nicht? wenn ja was?
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.10.2015, 15:19     Titel:
  Antworten mit Zitat      
So eine Rechnung kann schon mal lange dauern. Ärgerlich ist das dann, wenn man nach ein paar Stunden die Meldung bekommt, dass der Speicher nicht reicht.

Du kannst Deine Rechnung auch schrittweise von innen nach außen durchführen. Also erst das innerste Integral lösen, dann im nächsten Schritt das eins weiter außen liegende usw... Dann hast Du zumindest einen besseren Überblick, ob überhaupt noch was passiert und in welchen Schritten das ganze so langsam ist. Evtl. hilft es auch, die Ausdrücke nach den einzelnen Schritten mit ausdruck=simplify(expand(ausdruck)) zu behandeln, um einen vereinfachten Term in den nächsten Schritt zu geben.

Und Du kannst die Sache vielleicht ein bisschen beschleunigen, wenn Du für Deine Variablen mit assume Einschränkungen des Wertebereichs machst. Dadurch kann man z.B. vermeiden, dass Matlab unnötigerweise komplex rechnet, wo es überhaupt nicht komplex sein kann.
Private Nachricht senden Benutzer-Profile anzeigen
 
Benjamin Nels

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.10.2015, 15:24     Titel:
  Antworten mit Zitat      
Vielen Dank für deine Antwort. Ich werde das mal versuchen, aber wieso verwendest du erst expand dann simplify anstatt nicht direkt simplify(ausdruck)??

Ich werde es mal probieren.

Winkow hat Folgendes geschrieben:
warum versuchst du es nicht so wie harald vorgeschlagen hat? gefällt dir etwas an seiner lösung nicht? wenn ja was?


Ich kam damit nicht ganz klar, wie das ganze zu handhaben ist.
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.10.2015, 15:38     Titel:
  Antworten mit Zitat      
Benjamin Nels hat Folgendes geschrieben:

aber wieso verwendest du erst expand dann simplify anstatt nicht direkt simplify(ausdruck)??


Bei etwas längeren Ausdrücken findet simplify nicht unbedingt die einfachste Form. Vermutlich, weil es einfach eine andere Definition von "einfach" hat, als ich. Oder nicht weit genug aufdröselt. Weiß man nicht so genau... Wenn man dann vorher mit expand alles ausmultipliziert, hat man eine deutlich erhöhte Chance, dass simplify noch ein Paar Sachen findet, die in der nicht-ausmultiplizierten Form einfach stehen geblieben wären.

Bei wirklich langen Ausdrücken kommt man leider auch nicht immer umhin, das ganze mit etwas Intelligenz zu vereinfachen, indem man kleinere Teile, die ganz gut zusammenpassen, ohne den restlichen Term vereinfacht.

Zusammenfassen und Faktorisieren kann man dann am Schluss.
Private Nachricht senden Benutzer-Profile anzeigen
 
Benjamin Nels

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.10.2015, 16:27     Titel:
  Antworten mit Zitat      
oK; vielen Dank für die Antwort.

Aber wie gesagt, der rechnet seit nun knapp 8 Stunden, ist das denn realisitisch?

Oder ist länger auch realisitisch?

Gibt es da jmd, der das vll. abschätzen kann?

Der Integralausdruck ist ja bekannt, 10 Std und mehr sind mir irgendwie kuriois...
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.10.2015, 16:47     Titel:
  Antworten mit Zitat      
Natürlich ist es möglich, dass das so lange dauert. Das Ergebnis wird auf Deinem Bildschirm auch ungefähr 20m lang sein. Bzw. wird am Ende der Zeile stehen, dass das Ergebnis so lang ist, dass Matlab es Dir nicht ausgeben möchte.

Du kannst übrigens nochmal ne Menge Zeit sparen, wenn Du an Stelle von 3.14 tatsächlich pi benutzt. Dann kann Matlab bei Funktionen, die 0 oder 1 sind, entsprechend vereinfachen, statt mit "ungefähr null" und "ungefähr 1" weiterrechnen zu müssen.

Wenn man das ganze in Schritte zerlegt, kommt das raus:
Code:
A = int(F1-F2,thet,0,2*pi);
B = int(A,rho,0,R);
C = diff(B*r,r);
D = int(C,phi,0,2*pi);
E = int(D,z,Z-h/2,Z+h/2);
F = int(E,r,c-w/2,c+w/2);
IT1=VF.*F ;
Fz=vpa(IT1,6);

Und dann sieht man auch, dass das erste, wo es haarig wird, die Ableitung in C=... ist. Und warum das so schwer ist, siehst Du auch, wenn Du Dir mal anguckst, wie B und A aussehen. Ich glaube nicht, dass Du so in endlicher Zeit auf einen grünen Zweig kommen wirst.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2, 3, 4, 5  Weiter

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.