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

Variable Schnittpunkte berechnen und plotten

 

LeConstructor
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 04.11.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.11.2016, 13:30     Titel: Variable Schnittpunkte berechnen und plotten
  Antworten mit Zitat      
Mahlzeit Matlab'er,
ich bin ziemlich frisch im Matlabmileu und bräuchte eure Hilfe.
Ich will die Schnittpunkte einer Gerade mit einem Kreis berechnen und im Anschluss plotten lassen.
Dabei soll die Steigung der Gerade über einen tangens ausgedrückt werden, bei dem der Winkel sich verändert.
Kurz: Geradegleichung
Code:

Der Kreis ist starr mit der Gleichung
Code:
(x-12)^2+y^2=36

vorgegeben.
Wie kann ich jetzt in Matlab die Schnittpunkte berechnen über die Laufvariable
Code:
Phi = [60:0] %%Grad


Anschließend möchte ich diese Schnittpunkte dann plotten.

Hoffe ich konnte das Problem verständlich schildern.

Liebe Grüße
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 05.11.2016, 02:06     Titel: Re: Variable Schnittpunkte berechnen und plotten
  Antworten mit Zitat      
Hallo LeConstructor,

Kennst Du die Gleichungen um das Problem auf dem Papier zu lösen und möchtest sie in Matlab formulieren? Oder möchtest Du die Gleichungen symbolisch lösen lassen?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
LeConstructor
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 04.11.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.11.2016, 09:53     Titel: Re: Variable Schnittpunkte berechnen und plotten
  Antworten mit Zitat      
Hi Jan,
die Gleichungen kenne ich. Mein Anliegen besteht darin nicht nur einen Schnittpunkt zu ermitteln, sondern endlich viele über eine bestimmte Menge, welche ich anschließend grafisch darstellen will.

Ich hoffe ich konnte es dir verständlich erklären.

[EDITED, Jan, Bitte kein Top-Quoting - Danke]
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 08.11.2016, 10:45     Titel: Re: Variable Schnittpunkte berechnen und plotten
  Antworten mit Zitat      
Hallo LeConstructor,

Du kannst die Geraden-Gleichung in die Kreisgleichung einsetzen, dann die X-Werte berechnen und die dazu passenden Y-Werte wieder aus der Geraden-Gleichung bekommen.
In Matlab geht das auch gleich für den ganzen Vektor 0:60 (nicht [60:0], denn das wäre eine leere Matrix).

Was hast Du bisher versucht und welche konkreten Probleme treten auf?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
LeConstructor
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 04.11.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.11.2016, 11:03     Titel:
  Antworten mit Zitat      
Das Problem besteht darin, dass ich es nicht schaffe Matlab meine Gleichung mit zwei Unbekannten lösen zu lassen. Dabei ist die erste Unbekannte meine Laufvariable also [0:60], welche Matlab immer einsetzen und mir die zweite Unbekannte ausgeben soll.

Also Schnittpunktgleichung mit 2 Unbekannten, wobei die erste Unbekannte mit der Laufvariable ersetzt wird und somit die zweite Unbekannte berechnet wird.

Danke und Grüße.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 08.11.2016, 11:12     Titel: Re: Variable Schnittpunkte berechnen und plotten
  Antworten mit Zitat      
Hallo LeConstructor,

Dann zeige doch mal, was Du versuchst.
An sich hast Du doch einfach:
Code:
y= tan(Phi)*x;
(x-12)^2+y^2=36;

% Einsetzen:
y= tan(Phi)*x;
(x-12)^2+tan(Phi)^2*x^2=36;
(x^2 - 24*x + 144 + tan(Phi)^2*x^2 = 36;
x^2*(1 + tan(Phi)^2) - 24*x + 108 = 0

Das lässt sich mit der PQ-Formel ja leicht nach X auflösen und schon hast Du Deine Werte. Dann wieder in "y = tan(Phi)*x" einsetzen.
Du kannst das natürlich auch von Matlabs Symbolic Toolbox ausrechnen lassen. Aber in diesem Fall ist die Lösung mit Bleistift und Papier wohl einfacher.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
LeConstructor
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 04.11.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.11.2016, 11:20     Titel: Re: Variable Schnittpunkte berechnen und plotten
  Antworten mit Zitat      
Genau so hab ich das auch, nur brauch ich nicht nur eine Lösung des Schnittpunktes sondern endlich viele über eine Menge, damit ich eine Ortskurve der Schnittpunkte erstellen kann. ICh muss zugeben mit Matlabs Symbolic Toolbox kenne ich mich nicht aus, wäre das damit realisierbar ?

Danke und Grüße.

[EDITED, Jan, Bitte kein Top-Quoting - Danke!]
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 08.11.2016, 13:44     Titel: Re: Variable Schnittpunkte berechnen und plotten
  Antworten mit Zitat      
Hallo LeConstructor,

Ich verstehe das Problem noch nicht. Du hast die Formel, mit der Du für die Datenpunkte 0:60 die gewünschten Koordinaten bekommst. Damit hast Du doch die gewünschten Koordinaten, oder? Und die Ortskurve wird natürlich der Kreis selbst sein, oder nicht?
Was fehlt Dir also noch?

Mit der Symbolc Toolbox könntest Du die beiden Gleichungen eingeben und Matlab würde das auflösen. Aber wenn man es mit 3 Zeilen auf dem Papier selbst hinbekommt, lohnt es sich nicht, sich in die Toolbox einzuarbeiten. Ich selbst habe übrigens keine Lizenz dafür.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
LeConstructor
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 04.11.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.11.2016, 14:40     Titel: Re: Variable Schnittpunkte berechnen und plotten
  Antworten mit Zitat      
Hi Jan,
ich glaube das Missverständnis kommt durch meine Schreibweise der Laufvariablen:
mit 0:60 meine ich alle Zahlen von 0 bis 60 mit einer Schrittweite von 1 oder gar kleiner. Also sind es mindestens 60 verschiedene Schnittpunkte...

Hoffe es ist jetzt verständlicher:
Danke und Grüße

[EDITED, Ja, Bitte kein Top-Quoting - Danke!]
Private Nachricht senden Benutzer-Profile anzeigen
 
Kn3ipnt3rrorist
Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 01.11.16
Wohnort: Dresden
Version: ---
     Beitrag Verfasst am: 08.11.2016, 15:47     Titel:
  Antworten mit Zitat      
Wenn ich das richtig verstehe, kannst du das über eine for-Schleife lösen

Code:


for Phi=0:1:60

% x Koordinate des Schnittpunktes in Abhängigkeit von Phi
% y Koordinate des Schnittpunktes in Abhängigkeit von Phi

% gewünschte plotfunktion
hold on
end
 


hängt jetzt natürlich von der gewünschten Plotfunktion ab, aber das berechnet dir alle Schnittpunkte in Abhängigkeit von Phi, wenn du dir die nach den Formeln vom Jan berechnest
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 08.11.2016, 16:13     Titel: Re: Variable Schnittpunkte berechnen und plotten
  Antworten mit Zitat      
Hallo LeConstructor,

Bitte füge nicht die gesamte vorhergehende Nachricht als Top-Quoting ein. Das verdoppelt nur die angezeigte Information, verkleinert also die Informations-Dichte.

Ich hatte schon verstanden, dass "0:60" ein Vektor sein soll. Aber Matlab kann mit Vektoren rechnen. Probiere es einfach aus und falls Du eine Fehlermeldung bekommst, die Du nicht beheben kannst, poste den Code und die Meldung hier.

Code:
x.^2*(1 + tan(Phi)^2) - 24*x + 108

Hier habe ich noch ".^" statt "^" eingefügt, um die elementweise Operation zu bekommen, nicht die Matrix-Potenz. Aber jetzt kannst Du einfach x=0:60 einsetzen, bzw. in die aufgelöste PQ-Formel.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
LeConstructor
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 04.11.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.11.2016, 17:45     Titel:
  Antworten mit Zitat      
Hi Community,
also momentan sieht mein Skript so aus, bekomme leider Fehlermeldungen.
Code:
function y = f1(x)
y = 12/(1+tan(x).^2)+sqrt((12/(1+tan(x).^2).^2) - 108/1+tan(x).^2);

for x = fliplr(1:60)
   
   y = fzero(12/(1+tan(x)^2)+sqrt((12/(1+tan(x)^2)^2) - 108/1+tan(x)^2,0));
   
   hold on
end

Fehler sehen wie folgt aus:
Code:

Not enough input arguments.

Error in f1 (line 2)
y = 12/(1+tan(x).^2)+sqrt((12/(1+tan(x).^2).^2) - 108/1+tan(x).^2);
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 12.11.2016, 15:09     Titel:
  Antworten mit Zitat      
LeConstructor,

Die Fehlermeldung verrät nicht, welche Funktion mehr Inputs erwartet. Bitte verwende den Debugger. um das heraus zu finden:
Code:

Dann lasse Deinen Code noch mal laufen. Wenn er stoppt, gib Teile der Formel im Command-Window ein, bis Du das Problem gefunden hast. Ein dbstep in könnte auch helfen.
Entweder "tan", "x" oder "sqrt" scheint als Funktion mit mehr Inputs definiert worden zu sein.

Bemerkung: Was ist der Sinn von "180/1" ? Fehlt da eine Klammer?
Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
LeConstructor
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 04.11.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.11.2016, 14:28     Titel:
  Antworten mit Zitat      
Hi Jan,
ich hab es mal durch den Debugger laufen lassen und anscheinend ist in der Zeile mit y=... vor der Schleife, ein Fehler, bzw. es werden zu viele Inputs gefordert. Zu deinem Hinweis, das musste noch eine Klammer hin.
Hier nochmal das ganze Skript:
Code:

function y = f1(x)

 y = (12/(1+tan(x).^2))+ sqrt((12/(1+tan(x).^2).^2) - (108/(1+tan(x).^2)));

for x = fliplr(1:60)
   
   y = fzero(12/(1+tan(x).^2)+sqrt((12/(1+tan(x).^2).^2) - (108/(1+tan(x).^2))),0);
   
   hold on
end
 

Danke für deine Mühe.

Edit:
Hab versucht es zu begrenzen, aber bekomme das irgendwie nicht hin. :/
Hänge mal die Datei an, vielleicht kannst du mal drüber schauen.

DA_Funktion.m
 Beschreibung:
Hier meine Datei.

Download
 Dateiname:  DA_Funktion.m
 Dateigröße:  261 Bytes
 Heruntergeladen:  343 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 15.11.2016, 16:25     Titel:
  Antworten mit Zitat      
Hallo LeConstructor,

Der Fehler ist sehr wahrscheinlich nicht auf einem anderen Rechner reproduzierbar, da Du wohl eine der Funktionen neu definiert hast.

Bitte poste die komplette Fehlermeldung per Copy&Paste. Ich würde so gerne helfen, aber ich vermute, dass gerade das benötigte Detail nicht erwähnt wird.

Oder versuche zumindest dies:
Code:
function y = f1(x)

which tan -all
which sqrt -all

y = (12/(1+tan(x).^2))+ sqrt((12/(1+tan(x).^2).^2) - (108/(1+tan(x).^2)));

for x = 60:-1:1  % Besser als FLIPLR
  ...
  % Nein, nicht so:
  y = fzero(12/(1+tan(x).^2)+sqrt((12/(1+tan(x).^2).^2) - (108/(1+tan(x).^2))),0);
 

Lies Dir nochmal die Dokumentation von fzero durch: Zur Zeit übergibst Du eine einzelne Zahl und keine Funktion. Da gibt es also keine 0 zu finden.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  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 - 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.