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

Kurvenintegral / Wegintegral

 

sisvullr
Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 09.06.09
Wohnort: Erlangen
Version: R2010a
     Beitrag Verfasst am: 12.03.2013, 11:52     Titel: Kurvenintegral / Wegintegral
  Antworten mit Zitat      
Hallo zusammen,

ich möchte Messpunkte (x1, x2, ..) mit äquidistantem Abstand d (bezogen auf den Kurvenverlauf) bestimmen (s. Grafik).

Folgende Fragen treten hierbei bei mir auf:
1.) Ist diese Schleife vermeidbar?
2.) Wie gehe ich anschließend am besten vor? Ziel ist es diejenigen x-Werte zu bestimmten, welche den gleichen Abstand d entlang des Kurvenverlauf liefern.

Vielen Dank schon einmal für weitere Anregungen Smile

Code:
p = [.01, 2, 3, 4, 5, 6];                    % Polynomkoeffizienten (hier Beispiel, werden eigentlich durch fit bestimmt)
x = -100:.1:100;                             % x-Vektor
y = x.^5*p(1) + x.^4*p(2) + x.^3*p(3) + x.^2*p(4) + x.^1*p(5) + x.^0*p(6);  % y-Werte

r = NaN(size(y,2)-1,1);                  % Preallokation Abstand

% 1. Frage:
for i = 1:size(y,2)-1
   r(i) =  sqrt( (x(i+1)-x(i))^2 + (y(i+1)-y(i))^2 );   % Abstand Funktionswerte zueinander
end

r_cum = cumsum(r);                      % Kumulierter Abstand
d = 8;                                             % Gewünschter Abstand auf dem Kurvenverlauf

% 2. (und eigentliche) Frage: wie geht man ab hier am besten weiter vor?


KI.jpg
 Beschreibung:

Download
 Dateiname:  KI.jpg
 Dateigröße:  45.63 KB
 Heruntergeladen:  1089 mal
Private Nachricht senden Benutzer-Profile anzeigen


sisvullr
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 09.06.09
Wohnort: Erlangen
Version: R2010a
     Beitrag Verfasst am: 13.03.2013, 18:11     Titel:
  Antworten mit Zitat      
Ich hab's jetzt so gelöst, vielleicht hilft es ja an anderer Stelle jemanden weiter.

Für Verbesserungsvorschläge bin ich natürlich jederzeit dankbar Smile

Code:
p = 0.0000001*[.1, .2, .3, 5, .5, 6];          % Polynomkoeffizienten (hier Beispiel)
x = -100:.001:100;                                 % x-Vektor
z = x.^5*p(1) + x.^4*p(2) + x.^3*p(3) + x.^2*p(4) + x.^1*p(5) + x.^0*p(6);  % y-Werte

figure; plot(x,z, '-r'); title('Originalwerte'); axis equal; grid on;

r = NaN(size(z,2),1);                             % Preallokation Abstand
for i = 1:size(z,2)-1
   r(i) =  sqrt( (x(i+1)-x(i)).^2 + (z(i+1)-z(i)).^2 ); % Abstand zueinander
end
r(end) = r(i);                                          
r_cum = cumsum(r);                             % Kumulierter Abstand

d = 15;                                                  % Gewünschter Abstand auf dem Kurvenverlauf
AV = 0:d:max(r_cum);                           % Abstandsvektor

x_S = NaN(1, size(AV,2));                      % Stützstellen
for i = 1:size(AV,2)
    [bla index] = min(abs(r_cum - AV(i)));
    x_S(i) = x(index);
end

z_S = x_S.^5*p(1) + x_S.^4*p(2) + x_S.^3*p(3) + x_S.^2*p(4) + x_S.^1*p(5) + x_S.^0*p(6);  % y-Werte

figure; plot(x, z, '-k'); axis equal; hold on; plot(x_S, z_S, '*r', 'Linewidth', 5); plot(x_S, 100, '*r'); grid on; axis equal


 


untitled.pdf
 Beschreibung:

Download
 Dateiname:  untitled.pdf
 Dateigröße:  5.79 KB
 Heruntergeladen:  615 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 14.03.2013, 09:19     Titel:
  Antworten mit Zitat      
Hallo,

möchtest du die Bogenlänge von z(x) auf [a,b] bestimmen?

Grüße, Marc
Private Nachricht senden Benutzer-Profile anzeigen
 
sisvullr
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 09.06.09
Wohnort: Erlangen
Version: R2010a
     Beitrag Verfasst am: 14.03.2013, 09:39     Titel:
  Antworten mit Zitat      
Hallo Marc,

ja genau, das bringt es auf den Punkt Smile

Ich möchte die Weglänge eines Polynoms in gleichmäßige Stücke teilen und die entsprechenden x-Koordinaten herausfinden.

Mit dem vorgestelltem Code scheint es ganz gut zu funktionieren, aber evtl. gibt's noch ne elegantere Lösung.... Wink

Beste Grüße,

Sven
Private Nachricht senden Benutzer-Profile anzeigen
 
sisvullr
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 09.06.09
Wohnort: Erlangen
Version: R2010a
     Beitrag Verfasst am: 14.03.2013, 09:43     Titel:
  Antworten mit Zitat      
Danke Marc,

"Bogenlänge" war das richtige Stichwort, damit habe ich auch gleich die Lösung gefunden:

http://www.gomatlab.de/bogenlaenge-.....ghlight,bogenl%E4nge.html
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 14.03.2013, 10:19     Titel:
  Antworten mit Zitat      
Gut, der Unterschied ist nur, dass man diese gleichmäßigen Stücke auf der Kurve infinitesimal klein wählt, um die Bogenlänge exakt oder approximativ zu berechnen. Du möchtest indes eine feste Schrittweite (eher ein Strecke entlang der Kurve) wählen und schauen, wo das nächste x liegt. Ist das richtig?

Die Summe dieser Strecken wäre dann nur eine grobe Annäherung an die Bogenlänge.
Private Nachricht senden Benutzer-Profile anzeigen
 
sisvullr
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 09.06.09
Wohnort: Erlangen
Version: R2010a
     Beitrag Verfasst am: 14.03.2013, 10:33     Titel:
  Antworten mit Zitat      
Ja das ist richtig. Die Schrittweite habe ich in dem Beispiel über
Code:
x = -100:.001:100; % x-Vektor
gewählt.

Für meinen Fall reicht die Genauigkeit zwar aus, aber du hast natürlich recht, so richtig sauber gelöst ist das nicht Confused

Für Hinweise zu einer bessern Vorgehensweise bin ich natürlich dankbar Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 14.03.2013, 10:37     Titel:
  Antworten mit Zitat      
Also, du möchtest die Bogenlänge aber schon möglichst genau bestimmen? Hast du die Symbolic Toolbox? Es geht mir um die Ableitung von z(x). Die brauchst du dazu.
Private Nachricht senden Benutzer-Profile anzeigen
 
sisvullr
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 09.06.09
Wohnort: Erlangen
Version: R2010a
     Beitrag Verfasst am: 14.03.2013, 10:45     Titel:
  Antworten mit Zitat      
Wenn ich das richtig auffasse, müsste ich nach b auflösen.

Bisher habe ich noch nicht mit der Toolbox gearbeitet, werde mir das aber einmal ansehen Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 14.03.2013, 11:06     Titel:
  Antworten mit Zitat      
Ja, das ist die Aufgabe. Lösen nach b kann man das allerdings nur numerisch...
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 - 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.