|
|
3D-Funktion ohne Schleifen diskretisieren |
|
Draculus |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 03.09.2014, 11:21
Titel: 3D-Funktion ohne Schleifen diskretisieren
|
 |
Hallo zusammen,
ich versuche gerade eine Funktion f(x,y) zu diskretisieren und dabei auf Schleifen zu verzichten. Leider gelingt mir das nicht so ganz.
Im prinzip ist die Funktion f=(x^2+y^2)^(1/2) und wenn nur eine von beiden Variablen ein Vektor wäre, wäre es auch kein Problem, dann könnte ich einfach '.^' verwenden.
Gibt es eine Funktion, die mir eine Matrix aus der Summe der einzelnen Vektorelemente bildet oder komme ich doch um eine Schleife nicht herum?
Beispielsweise wenn ich die Vektoren a und b habe, hätte ich davon dann gern:
Gibt es da eine Funktion für?
Vielen Dank schon jetzt für die Hilfe!
|
|
|
|
|
Epfi |

Forum-Meister
|
 |
Beiträge: 1.134
|
 |
|
 |
Anmeldedatum: 08.01.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 03.09.2014, 11:57
Titel:
|
 |
|
|
Nras |

Forum-Meister
|
 |
Beiträge: 608
|
 |
|
 |
Anmeldedatum: 21.02.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.12.0.635 (R2011a)
|
 |
|
|
 |
|
Verfasst am: 03.09.2014, 11:58
Titel:
|
 |
Hallo,
bei der Funktion geht das. Man kann meshgrid benutzen, siehe hier:
Viele Grüße,
Nras.
|
|
|
Draculus |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 03.09.2014, 14:48
Titel:
|
 |
Hey,
vielen Dank für die schnelle Antwort.
Funktioniert auch soweit, dass ich die Komplette Matrix erhalte, aber da meine Funktion leider noch noch etwas komplexer ist, bekomme ich den Fehler: "Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 4.431728e-18. "
Tatsächlich ist die Matrix recht groß und die Werte sollen nahe bei Null liege. Ich nehem an, dass durch die meshgrid-Funktion doch ein wenig genauigkeit verloren geht, da die Matrix aus den Schleifen ganz anders aussieht...
Daher werde ich wohl weiterhin in den suaren Apfel beißen müssen...
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 03.09.2014, 14:57
Titel:
|
 |
Hallo,
Bei vektorisierter Auswertung ist es wichtig, Matrixoperationen (*, /, ^) und Arrayoperationen (.*, ./, .^) zu unterscheiden. Meist braucht man das untere.
Falls das nicht hilft, bitte den verwendeten Code posten.
Grüße,
Harald
|
|
|
Nras |

Forum-Meister
|
 |
Beiträge: 608
|
 |
|
 |
Anmeldedatum: 21.02.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.12.0.635 (R2011a)
|
 |
|
|
 |
|
Verfasst am: 03.09.2014, 15:18
Titel:
|
 |
Hallo,
ja für komplexere Funktionen wird Vektorisierung immer schwieriger, man muss also mehr Zeit und Hirnschmalz reinstecken. Darum ist das schlecht verallgemeinerbar und Mini-Beispiele sind im dem Fall leider nicht wirklich hilfreich. Da ist es wichtig, die komplette Funktion zu kennen.
Falls die Matrix nicht oft berechnet wird, kann sich das für das Gesamprojekt auch oftmals zeitlich lohnen, auf Vektorisierung zu verzichten...
Viele Grüße,
Nras.
|
|
|
Draculus |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 03.09.2014, 15:33
Titel:
|
 |
Hallo,
ja, ich verwende die Array-Operatoren, da ich ja die Werte von entsprechend jedem Element haben will.
Meine Funktion sieht jetzt wie folgt aus:
und damit ergibt sich für Hxy leider was ganz anderes, als wenn ich es wie folgt mache:
Ich hoffe ich hab jetzt beim Übertragen keinen Fehler gemacht...
|
|
|
Epfi |

Forum-Meister
|
 |
Beiträge: 1.134
|
 |
|
 |
Anmeldedatum: 08.01.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 03.09.2014, 16:05
Titel:
|
 |
An der Stelle 1-exp(-m*d) subtrahierst Du zwei fast gleiche Zahlen. Das kann bei der Verwendung von Gleitkommazahlen leicht mal ins Auge gehen: http://de.wikipedia.org/wiki/Auslöschung_(numerische_Mathematik)
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 03.09.2014, 16:14
Titel:
|
 |
Hallo,
die Subtraktion sehr ähnlicher Zahlen kann in der Tat ein Problem sein, aber das sollte bei beiden Ansätzen gleichermaßen auftreten.
Ich vermute das Problem eher in einem fehlenden Punkt:
(entscheidender Teil ist zwischen den Leerzeichen)
Grüße,
Harald
|
|
|
Draculus |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 03.09.2014, 16:23
Titel:
|
 |
Hey,
ja super, mit dem fehlenden Punkt stimmt es!
Vielen vielen Dank!
|
|
|
Epfi |

Forum-Meister
|
 |
Beiträge: 1.134
|
 |
|
 |
Anmeldedatum: 08.01.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 03.09.2014, 16:26
Titel:
|
 |
@Harald: ja, da Du hast wohl recht... Beide Lösungswege haben das gleiche Potenzial nicht das richtige Ergebnis zu liefern ;) Der Ausdruck vor dem von Dir bemerkten fehlenden Punkt wird für x = y = 1 auch wieder fast 1 - 1 = 0.
@Draculus: Ergebnis also kritisch betrachten. Es muss nicht falsch sein, aber wenn es nicht den Erwartungen entspricht, hast Du zumindest eine gute Ausrede :)
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 03.09.2014, 16:40
Titel:
|
 |
Hallo,
falls die Ungenauigkeit problematisch ist, können Taylorreihen helfen, z.B.:
Grüße,
Harald
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| RSS
Hosted by:
Copyright © 2007 - 2025
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.
|
|