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

Maximaler Abstand zweier Kurven (nicht senkrecht)

 

NoS

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.02.2015, 04:04     Titel: Maximaler Abstand zweier Kurven (nicht senkrecht)
  Antworten mit Zitat      
Hallo zusammen,

wie man an der Uhrzeit sieht, versuche ich seit ein paar Stunden ein Matlab-Problem zu lösen und scheitere kläglich, was gut daran liegen kann, dass ich noch nie mit Matlab gearbeitet habe.

Das Problem lautet wie folgt:

Es sind zwei Funktionen gegeben:

<br />
f_1(x)=/frac{1}{ax}
<br />
und

<br />
f_2(x)=/frac{3}{ax}
<br />

Betrachtet wird der Wertebereich 0<x<11 und 0<y<11

Diese Funktionen stellen die Wände eines sog. 90°-Krümmers da. Zum besseren Verständnis, oben fließt eine Flüssigkeit hinein und rechts wieder hinaus.

Die Aufgabe lautet: "Bestimmen Sie die Lage des maximalen Querschnitts des Krümmers", mit anderen Worten die Gerade deren Schnittpunkte mit den Funktionen, möglichst weit auseinander liegen.

Aus dem Bauch heraus würde ich sagen, die Kurven sind bezüglich der Gerade x=1 symmetrisch, weswegen der maximale Querschnitt auf dieser Geraden liegen sollte. Wenn man es plottet, sieht es auch ziemlich danach aus.

Mein Ansatz war der folgende:
1. Ich leite eine der Funktionen ab, um die Steigung der Tangenten zu ermitteln.
2. Stelle ich die Gleichung der dazu orthogonalen Geraden auf.
3. Ermittele ich den Schnittpunkt mit der anderen Funktion.

So bekomme ich zwei Punkte, deren Abstand ich ermitteln kann. Diese Prozedur führe ich für alle Punkte im betrachteten Wertebereich durch (natürlich mit einer gewissen Schrittweite,) und suche mir die geringste Distanz heraus.

Der vielversprechendste Code den ich bisher habe lautet wie folgt:

Code:

clear all
close all
clc

%Einlesen der Variable der Potentialstroemungen
a       = 0.1;  

x = 0.1:0.5:11;                   %Definition von Grenzen und Schrittweite der x-Werte
y1 = 1./(a*x);         %Funktion 1
y2 = 3./(a*x);         %Funktion 2
y3 = zeros(22,22)      

m_T = -3./(a*x.^2)      %Steigung d. Tangente von f2
b_T = y2-m_T.*x         %y-Achsenabschnitt d. Tangente von f2
m_O = -1./m_T         %Steigung d. orthogonalen Gerade von f2
b_O = y2-m_O.*x         %y-Achsenabschnitt d. orthogonalen Gerade von f2

for i = 1:22
    for n = 1:22
        y3(i,n) =  m_O(i)*x(n)+b_O(i)   %Berechnung der Punkte auf d. orthogonalen Gerade von f2
    end
    y_diff=abs(y1-y3(i,:))      %absoluter Wert der Differenz von f1 zu der orthogonalen Geraden
    y_s=min(y_diff)         %Suche nach dem Minimum der Differenz => y-Wert des Schnittpunktes
    x_s=find(y_diff==y_s)      %Suche nach dem dazugehörigen x-Wert
    distance(i)=sqrt((x(i)-x_s)^2+(y1(i)-y_diff(x_s))^2)   %Berechnung der Distanz der Punkte
end

%Graphic
figure(1)

hold on                     %Aktivieren des Plottens mehrerer Plots
grid on                     %Gitter aktivieren
axis([0 11 0 11])           %Einschränkung des darzustellenden Bereichs
axis('square')

plot(x,y1)                   %plotten der ersten Funktion
plot(x,y2)                   %plotten der zweiten Funktion
plot(x,distance)           %plotten der Distanz


%zur Veranschaulichung des Ansatzes
fc1 = @(x) m_O(11)*x+b_O(11)  
fplot(fc1,[0.01,11])

fc2 = @(x) m_T(11)*x+b_T(11)
fplot(fc2,[0.01,11])
 


Es gibt damit allerdings mehrere Probleme:
1. Er funktioniert noch nicht ganz, die berechnete Distanz (im Plot gelb) ist totaler Quatsch.
2. Es erscheint mir etwas nach einer Holzhammer-Methode, vor allem mit den beiden for-Schleifen.
3. Die Suche nach den Schnittpunkten ist alles andere als elegant.
4. Es gibt vielleicht einen mathematisch schöneren Weg.

Puh, das war jetzt eine Menge Text... Vielen Dank schon mal an die, die bis hierhin durchgehalten haben.

Ich bin für jede Hilfe offen und dankbar.

Viele Grüße

NoS

untitled.png
 Beschreibung:
Bisherige Ergebnisse

Download
 Dateiname:  untitled.png
 Dateigröße:  22.06 KB
 Heruntergeladen:  512 mal


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 - 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.