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

Tangente

 

Sunrain
Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 08.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.01.2015, 12:46     Titel: Tangente
  Antworten mit Zitat      
hallo,

ich habe folgendes Problem, ich soll an eine Messkurve 2 Tangenten anlegen und deren Schnittpunkt berechnen. Folgerndermaßen bin ich bei Matlab bisher vorgegangen:

Code:
data=xlsread('bla.xlsx'); x=data(:,1); f=data(:,2); plot(x,f);
h=5.0; x=0:h:1235; f=@(x)sqrt(x); fdot=@(x)(f(x+h)-f(x))/h; t=@(x,x0)f(x0)+fdot(x0).*(x-x0); x_1=570; x_2=70; xs=(fdot(x_1)*x-1-f(x-1)-fdot(x_2)*x_2+f(x_2))./(fdot(x_1)-fdot(x_2));
figure(1)
clf
hold on
plot(x,f(x),x,t(x,x_1),x,t(x,x_2))
line([xs xs],[0 t(xs,x_1)],'LineStyle','--')
line([0 xs],[t(xs,x_1) t(xs,x_1)],'LineStyle','--')


Das anlegen der tangenten klappt dabei wunderbar, allerdings sieht die Kurve dabei irgendwie falsch aus, vergleich der Bilder im Anhang.

Weiß jemand woran das liegen kann und was man eingeben muss damit matlab den Schnittpunkt berechnet und ausgibt?

Hoffe auf eure Hilfe

Lg Sunrain
edit winkow: code umgebung eingefügt

Tangente1.jpg
 Beschreibung:
das gibt Matlab mir aus

Download
 Dateiname:  Tangente1.jpg
 Dateigröße:  51.36 KB
 Heruntergeladen:  394 mal
Tangenten.jpg
 Beschreibung:
so dachte ich mir das

Download
 Dateiname:  Tangenten.jpg
 Dateigröße:  14.75 KB
 Heruntergeladen:  416 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

möchtest du jetzt mit den Daten aus der Excel-Tabelle (x, f) arbeiten oder mit den x und f, die du kurz darauf definierst (und somit die Daten aus der Excel-Tabelle überschreibst)?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Sunrain
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 08.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.01.2015, 17:35     Titel:
  Antworten mit Zitat      
ich übertrage die werte aus der Excel-Tabelle in Matlab
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.01.2015, 17:37     Titel:
  Antworten mit Zitat      
Hallo,

Ja, du überträgst die Daten in x und f, aber sie werden für die Erstellung der Graphik nicht verwendet, da du x und f nach dem Import überschreibst.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Sunrain
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 08.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.01.2015, 13:15     Titel:
  Antworten mit Zitat      
jetzt hat das anlegen der beiden Tangenten wunderbar geklappt, allerdings berchnet er nur den dazugehörigen x-Wert des Schnittpunktes, hat jemand eine Idee wie ich auch den y-Wert berechnen lassen kann?

Folgendes hab ich bei Matlab dafür eingegeben:
clear all; clc
h=5;
data=xlsread('Messung 1.xlsx');
x=data(:,1);
f=data(:,2);
figure(2)
plot(x,f);
fdot = diff(f)/h;
t=@(x,x0,x_ind) f(x_ind)+fdot(x_ind).*(x-x0);
x_1=470;
x_2=70;
x_1_ind = x_1/h+1;
x_2_ind = x_2/h+1;
xs=(fdot(x_1_ind)*x_1-f(x_1_ind)-fdot(x_2_ind)*x_2+f(x_2_ind))./(fdot(x_1_ind)-fdot(x_2_ind))
figure(1)
clf
hold on
plot(x,f,x,t(x,x_1,x_1_ind),x,t(x,x_2,x_2_ind))
line([xs xs],[0 t(xs,x_1,x_1_ind)],'LineStyle','--')
line([0 xs],[t(xs,x_1,x_1_ind) t(xs,x_1,x_1_ind)],'LineStyle','--')
hold off

Hoffe jemand weiß eine Antwort darauf, weiß echt nicht weiter

LG Sunrain
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

müsste doch reichen, den x-Wert in eine der beiden Tangentengleichungen einzusetzen?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Sunrain
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 08.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.01.2015, 13:22     Titel:
  Antworten mit Zitat      
Ja das dachte ich auch, aber mein Betreuer für die Bachelorarbeit, hätte halt zu den x-Werten die dazugehörigen y-Werte.
Ist das denn machbar das in die Formel hinzuzufügen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Zitat:
Ja das dachte ich auch, aber mein Betreuer für die Bachelorarbeit, hätte halt zu den x-Werten die dazugehörigen y-Werte.

... und durch das Einsetzen bekommst du sie doch?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Sunrain
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 08.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.01.2015, 13:45     Titel:
  Antworten mit Zitat      
gebe ich den Code von oben ein dann spuckt matlab mir nur die xs-Werte aus, also nur ein Wert.
Die Werte von x und y-Achse sind ja nicht identisch
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 16.01.2015, 14:06     Titel:
  Antworten mit Zitat      
Hallo,

deswegen sage ich ja, dass du den x-Wert des Schnittpunkts in die Tangentengleichung (bei dir t) einsetzen sollst.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Sunrain
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 08.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.01.2015, 14:09     Titel:
  Antworten mit Zitat      
Hää ok...
ich soll das so machen
Schnittpunkt=@(x,x0,x_ind) f(x_ind)+fdot(x_ind).*(x-x0); ???

Aber dann spunkt er ja nicht xs und ys- werte aus oder?
Private Nachricht senden Benutzer-Profile anzeigen
 
Sunrain
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 08.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.01.2015, 14:11     Titel:
  Antworten mit Zitat      
hätte das gerne alles als eine Funktion, so das ich die Parameter ändern kann und er automatisch xs un xy ausspuckt
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 16.01.2015, 14:38     Titel:
  Antworten mit Zitat      
Hallo,

xs hast du ja schon. Und das in t einsetzen, vermutlich
Code:
ys = t(xs,x_1,x_1_ind);

Du brauchst also nur am Ende nur diese oder eine ähnliche Zeile anzufügen.

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



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.