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: 09.10.2015, 20:23     Titel:
  Antworten mit Zitat      
Winkow hat Folgendes geschrieben:
Zitat:
Es ist für mich jedoch vollkommen absurd, ein nicht ganz triviales 5fach-Integral symbolisch berechnen zu wollen, wenn man als Ergebnis keine Formel, sondern eine Zahl erhalten möchte. Dafür ist nunmal der numerische Weg da.

mitten drin ist aber noch ne ableitung. da ist mir noch nicht ganz klar wie man damit umgeht. wie würdest du das angehen harald


Sorry Harald, eig. kenne ich mich gut aus in Matlab, aber mittlerweile stoße ich an meine Grenzen.

Klar, ich will ein numerischen Wert haben, beispielsweiße nach der Integration die Kraft 5N, aber numerisch kann ich doch nicht rechnen bei einem 5-fach Integral. Wenn ich die quad Funktion verwende oder die Integral3 Funktion, dann wird 3 mal integriert, aber was passiert mit den anderen noch offenen Variablen?

Wenn das so einfach ist, bitte ich dich doch drum, vll. mal das zu berechnen, wenn das so schnell geht.

Wenn solch ein Fachmann wie du dann mir die Antwort liefert, es geht definitiv, dann ist das schon mal beruhigend ....


Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.10.2015, 20:29     Titel:
  Antworten mit Zitat      
Mal eine (zumindest für ein Matlab-Forum) ganz ketzerische Frage: spricht was dagegen, MathCAD zu benutzen? Das dürften auch recht viele Unis lizenziert haben, falls Du an einer solchen studieren/arbeiten solltest...

Ich fürchte, Matlab ist für dieses Problem einfach nicht ganz das Richtige...
Private Nachricht senden Benutzer-Profile anzeigen
 
Benjamin Nels

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.10.2015, 20:43     Titel:
  Antworten mit Zitat      
Noch etwas habe ich die Hoffnung, dass das vll. doch mit Matlab machbar ist. Vll. schafft es ja der Harald.

[EDITED, Jan, Bitte kein Top-Quoting der vorhergehenden Nachricht. Das macht den Thread nur unübersichtlich.]
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 09.10.2015, 21:07     Titel:
  Antworten mit Zitat      
das problem ist das schon das integral über rho nicht ausgerechnet wird. und damit auch der ansatz mit der matlabFunction nicht klappt bei mir
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Benjamin Nels

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.10.2015, 21:22     Titel:
  Antworten mit Zitat      
Bei mir klappts genau so wenig....es ist schon interessant, nach wie vor hoffe ich, dass es vll. einer mit Matlab doch hinbekommt...


[EDITED, Jan, Bitte kein Top-Quoting der vorhergehenden Nachricht. Das macht den Thread nur unübersichtlich.]
 
Harald
Forum-Meister

Forum-Meister


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

mein Ansatz wäre:
Code:
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=@(thet, rho, r, phi, z) sqrt((z-d/2).^2+r.^2+rho.^2-2*r.*rho.*cos(thet-phi)); % Wurzelausdruck im ersten Integralausdruck
F1=@(thet, rho, r, phi, z)rho./wf1(thet, rho, r, phi, z) ;

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

integralFun = @(r, phi, z) integral2(@(thet, rho) F1(thet, rho, r, phi, z)-F2(thet, rho, r, phi, z), 0, 2*pi, 0, r);
H = 1e-6;
partialrIntegralFun = @(r, phi, z) (integralFun(r+H, phi, z) - integralFun(r-H, phi, z)) / (2*h);

Erg = integral3(@(phi, z, r) partialrIntegralFun(r, phi, z) .* r, 0, 2*pi, Z-h/2,Z+h/2, c-w/2,c+w/2)


Funktioniert allerdings noch nicht, da integral3 wohl vektorisiert auszuwerten versucht und das spätestens beim integral2-Aufruf mit einem Vektor als Grenze schief geht.

Man müsste also wohl selbst integral-Aufrufe schachteln und die ArrayValued-Option verwenden. Das werde ich aber heute nicht mehr machen...

Grüße,
Harald
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: 10.10.2015, 09:35     Titel:
  Antworten mit Zitat      
Guten Morgen,

mit arrayfun funktioniert es. Zudem hatte ich einen Tippfehler drin (h statt H)

Code:
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=@(thet, rho, r, phi, z) sqrt((z-d/2).^2+r.^2+rho.^2-2*r.*rho.*cos(thet-phi)); % Wurzelausdruck im ersten Integralausdruck
F1=@(thet, rho, r, phi, z)rho./wf1(thet, rho, r, phi, z) ;

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

integralFun = @(r, phi, z) integral2(@(thet, rho) F1(thet, rho, r, phi, z)-F2(thet, rho, r, phi, z), 0, 2*pi, 0, r);
H = 1e-8; % nicht zu klein wählen!
partialrIntegralFun = @(r, phi, z) arrayfun(@(r, phi, z) (integralFun(r+H, phi, z) - integralFun(r-H, phi, z)) / (2*H), r, phi, z);

Erg = integral3(@(phi, z, r) partialrIntegralFun(r, phi, z) .* r, 0, 2*pi, Z-h/2,Z+h/2, c-w/2,c+w/2, 'RelTol', 1e-6)


Als Ergebnis erhalte ich 3.1762e-06.

Die Berechnungen brauchen in dieser Form auf meinem nicht gerade allerneuesten Rechner ca. 1/2 Stunde.

Wenn ich mich nicht irre, kann man die Berechnung der partiellen Ableitung auch in das Doppelintegral hineinziehen.
https://en.wikipedia.org/wiki/Diffe.....n_under_the_integral_sign

Dann könnte man z.B. die Ableitung symbolisch berechnen und wieder auf das integraln zurückgreifen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 10.10.2015, 09:54     Titel:
  Antworten mit Zitat      
sehr schön. wieder was gelernt. danke harald
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Benjamin Nels

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.10.2015, 12:52     Titel:
  Antworten mit Zitat      
Hallo Harald, erst einmal vielen vielen Dank für deine Mühe, dieses Problem zu lösen.

Ich bedanke mich wirklich vom Herzen!

Du erhälst, so wie ich es aber sehe, als Ergebnis quasi 0 raus, dies entspricht doch aber nicht dem Ergebnis, was der Autor berechnet hat?

Das ist, was ich erst mal überprüfen möchte: Passt das, was der Autor dort gerechnet hat auch wirklich alles zusammen....

[EDITED, Jan, Bitte kein Top-Quoting - Danke!]
 
Harald
Forum-Meister

Forum-Meister


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

wenn die Ergebnisse nicht wie erwartet sind, kann man nur empfehlen, nochmal alles nachzuschauen.

Ich sehe da z.B., dass beim Vorfaktor Klammern fehlen:
Code:
VF=(J*mu0*(mu0*M))/4*pi*mu0;

sollte wohl so sein:
Code:
VF=(J*mu0*(mu0*M))/(4*pi*mu0);


Ein weiteres Problem könnten z.B. die Einheiten sein, z.B. mm für die x-Achse.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.10.2015, 15:11     Titel:
  Antworten mit Zitat      
Hallo Harald, ich habe jetzt versucht, deinen Code nachzuvollziehen!

Im Grunde definierst du zunächst verschachtelte anonyme Funktionen, oder?

Und eine weitere Frage: Wo wird denn noch der Vorfaktor bei dir mit einbezogen? Oder nimmst du dann einfach das Ergebnis 3.1762e-06 mal dem Vorfaktor?

arrayfun hast du hier speziell für die Ableitung verwendet, oder wäre arrayfun auch notwendig gewesen ohne Ableitung?

Interessant wäre jetzt, das Ergebnis natürlich auch mit einem anderen Programm zu vergleichen.


Harald vielen Dank!

[EDITED, Jan, Bitte kein Top-Quoting - Danke!]
 
Harald
Forum-Meister

Forum-Meister


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

Zitat:
Im Grunde definierst du zunächst verschachtelte anonyme Funktionen, oder?

Ja.

Zitat:
Und eine weitere Frage: Wo wird denn noch der Vorfaktor bei dir mit einbezogen? Oder nimmst du dann einfach das Ergebnis 3.1762e-06 mal dem Vorfaktor?

Das Ergebnis muss noch mit dem (korrekten) Vorfaktor multipliziert werden, ja.

Zitat:
arrayfun hast du hier speziell für die Ableitung verwendet, oder wäre arrayfun auch notwendig gewesen ohne Ableitung?

arrayfun habe ich verwendet, weil integral3 vektorisiert auswerten will.

Zitat:
Interessant wäre jetzt, das Ergebnis natürlich auch mit einem anderen Programm zu vergleichen.

Steht dir ja frei. Abgesehen von Implementierungsfehlern bei den Formeln wüsste ich aber nichts, was gegen eine Verwendung dieses Ergebnisses sprechen sollte.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.10.2015, 17:49     Titel:
  Antworten mit Zitat      
Hallo Harald,


kurze Fragen:

Zitat:

integralFun = @(r, phi, z) integral2(@(thet, rho) F1(thet, rho, r, phi, z)-F2(thet, rho, r, phi, z), 0, 2*pi, 0, r);


Dieser Schritt, was hier geschieht ist mir noch klar und nachvollziehbar.

Zitat:

partialrIntegralFun = @(r, phi, z) arrayfun(@(r, phi, z) (integralFun(r+H, phi, z) - integralFun(r-H, phi, z)) / (2*H), r, phi, z);


Was aber hier geschieht, ist mir noch nichts ganz klar. Wozu das Arrayfun und was es aufsicht hat mit dem vektorisieren, ist mir noch nicht ganz klar.

Danke Harald!
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 11.10.2015, 18:00     Titel:
  Antworten mit Zitat      
Hallo Benjamin Nels,

Ich editiere zur Zeit fast jeden Deiner Beiträge. Das raubt meine Zeit.
Ich habe in vielen der Nachrichten, die ich bereinigt habe, eine Mitteilung hinterlassen.

Bitte füge keine vollständige Kopie der vorhergehenden Nachricht in Deine Nachrichten mit ein. Solche ein "Top-Quoting" ist in News-Groups üblich, aber in diesem Forum ist es überflüssig, denn die vorhergehende Nachricht erscheint sowieso direkt oberhalb. Das Duplizieren der Texte halbiert dann ohne Not die Informationsdichte.

Danke, 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: 11.10.2015, 18:27     Titel:
  Antworten mit Zitat      
Hallo,

integral3 versucht, die angegebene Funktion mit Arrays r, phi und z aufzurufen.

integral2 kann jedoch nicht mit Arrays als Integrationsgrenzen umgehen. Das kannst du leicht feststellen, indem du testhalber mal das arrayfun(...) weglässt.
Daher muss man irgendwo dazwischen sagen, dass die Funktion elementweise ausgewertet werden soll.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  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.