|
|
beliebige Funktion über input eingeben und verarbeiten |
|
willi_vintage |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 28
|
 |
|
 |
Anmeldedatum: 01.11.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 12.11.2014, 21:43
Titel:
|
 |
weil ich versucht habe in dieser Zeit alleine das Problem zu lösen und oben genannter Code bislang dabei raus kam, der so aber nicht funktioniert. Das zugehörige Skript sieht so aus:
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 12.11.2014, 21:54
Titel:
|
 |
Hallo,
und was spricht jetzt dagegen, sich mal den von mir geposteten Link anzusehen und zu schauen, wie das dort implementiert ist?
Du wirst die Funktion jedenfalls mehrfach auswerten müssen, und dazu brauchst du eben Function Handles. Z.B.
und wenn du an einem neuen x-Wert auswerten möchtest:
Grüße,
Harald
|
|
|
willi_vintage |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 28
|
 |
|
 |
Anmeldedatum: 01.11.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 12.11.2014, 22:06
Titel:
|
 |
Hallo Harald,
ist ja alles nett gemeint und ich bin dir ja auch dankbar für die Hilfeleistung, nur was ist wenn man Handle nicht versteht und in dem verlinkten Beispiel nicht weiss, welche Übergabewerte nun f, a, b darstellen?
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 12.11.2014, 22:15
Titel:
|
 |
Hallo,
dann bitte konkrete Fragen dazu stellen.
Beispielaufruf zum Link:
--> sucht in [a, b] nach Nullstellen von f.
Grüße,
Harald
|
|
|
willi_vintage |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 28
|
 |
|
 |
Anmeldedatum: 01.11.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 12.11.2014, 22:33
Titel:
|
 |
bei mir gibt es allerdings nur einen x-Vektor. Und dieser wird über eine Benutzerangabe festgelegt.
Also z.B.
. Übergeben wird dann eben nur dieser Vektor
also sucht in [x] nach Nullstellen von f
und in wieweit verändert Handle die Funktion? Ich kann damit x-Werte übergeben oder wie?
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 13.11.2014, 23:22
Titel:
|
 |
Hallo,
Zitat: |
also sucht in [x] nach Nullstellen von f |
Ja, und wenn es einen Vorzeichenwechsel gibt, dann willst du in dem Intervall Bisektion anwenden - und dafür könntest du dann die File Exchange- Funktion verwenden.
Zitat: |
und in wieweit verändert Handle die Funktion? |
Gar nicht. Das Handle verweist auf die Funktion.
Zitat: |
Ich kann damit x-Werte übergeben oder wie? |
Genau - siehe auch mein letzter Beitrag.
Grüße,
Harald
|
|
|
willi_vintage |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 28
|
 |
|
 |
Anmeldedatum: 01.11.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.11.2014, 18:27
Titel:
|
 |
Hallo Harald,
danke, das mit dem hanle klappt! Nur leider hängts nach wie vor bei deer Berechnung. Nur klappt die Berechnung immer noch nicht. Irgendwas habe ich noch nicht verstanden. bzw. generell falsch implementiert (aber was???)
Fehler:
??? Attempt to reference field of non-structure array.
Error in ==> F_SCHNITTPUNKTE at 36
if (f(xEndNeu)*f.(xEndNeu)>0)
so sieht das Skript aus:
und die dazugehörige function.m
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 15.11.2014, 18:56
Titel:
|
 |
Hallo,
ein Syntaxfehler - der Punkt ist an der falschen Stelle.
if (f(xEndNeu).*f(xEndNeu)>0)
Die Frage ist aber auch, ob du wirklich f(xEndNeu) mit sich selbst multiplizieren willst.
Schau dir doch den Code auf File Exchange nochmal an. Dort wird neben a und b auch der Mittelpunkt p gespeichert. Das fehlt bei dir meines Erachtens.
Grüße,
Harald
|
|
|
willi_vintage |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 28
|
 |
|
 |
Anmeldedatum: 01.11.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.11.2014, 20:27
Titel:
|
 |
Hallo Harald,
stimmt.....Fehler ist angepasst! Immerhin rattert das Prog nun die Nullstellen runter. Aber so wirklich stimmen die Ergebnisse nicht. Erst wenn der Abstand zwischen den x-Werten sehr klein gewählt wird, stimmen die Ergebnisse. Die Rechenzeit ist dann aber viel zu groß. Also muss doch noch ein Denkfehler drin sein.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 15.11.2014, 21:23
Titel:
|
 |
Hallo,
ob dein Code korrekt und effizient ist, kann man nur beurteilen, wenn man ihn sieht. Ansonsten: wenn du noch Fragen hast...
Grüße,
Harald
|
|
|
willi_vintage |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 28
|
 |
|
 |
Anmeldedatum: 01.11.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.11.2014, 21:35
Titel:
|
 |
Hallo Harald,
vielen vielen Dank für deine Hilfe und Geduld! Der Quellcode wird noch überarbeitet werden müssen. Aber zumindest steht schonmal ein Teil. Die Berechnung vom y-Wert sollte auch noch in eine eigene function......
functionfile:
skriptfile:
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 15.11.2014, 21:43
Titel:
|
 |
Hallo,
auf den ersten Blick ein Vorschlag: zusätzliche Klammern, damit am Mittelpunkt ausgewertet wird und nicht außerhalb und das dann durch 2 geteilt wird.
Grüße,
Harald
|
|
|
willi_vintage |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 28
|
 |
|
 |
Anmeldedatum: 01.11.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 16.11.2014, 19:47
Titel:
|
 |
Hallo,
ist angepasst. Bei der Optimierung hängts nun allerdings wieder. Die x-Abstände müssen sehr klein gewählt werden, damit die Nullstellen einigermaßen genau sind. Optimieren möchte ich nun so, dass ein x-Vektor mit groben Abständen erstellt wird. An den gefundenen Stellen mit Vorzeichenwechsel soll ein neuer Vektor mit kleinem Intervallsabstand die Nullstellenberechnung vornehmen. Also z.B so:
grober x-Vektor:
Mit den Werten z.B. xStart=-3
Abstand=1
xEnd=3
Anschließend werden die Stellen gesucht, an welchen ein Vorzeichnwechsel stattfindet. Nun muss doch irgendwie diese Stelle in feine Werte unterteil werden können. Also quais ein neuer Vektor
Der z.B. folgende Werte besitzt:
xStartNeu=-1
Abstand_fein=0.00001
xEndNeu=0
Anschließend läuft ganz normal die Intervallshalbierung durch.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 16.11.2014, 20:49
Titel:
|
 |
Hallo,
die Unterteilung funktioniert genau so, wie du es angegeben hast.
Ich verstehe dann wohl die Frage bzw. das Problem noch nicht.
Grüße,
Harald
|
|
|
willi_vintage |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 28
|
 |
|
 |
Anmeldedatum: 01.11.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 16.11.2014, 21:33
Titel:
|
 |
habs hier mal verdeutlicht (verzweifel echt noch an dieser ollen Aufgabe):
|
|
|
|
Gehe zu Seite Zurück 1, 2, 3, 4 Weiter
|
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.
|
|