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

Mehrere geometrische Funktionen zu einer zusammenfügen

 

corleone13375
Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 18.09.15
Wohnort: Aachen
Version: R2015b
     Beitrag Verfasst am: 22.03.2017, 10:56     Titel: Mehrere geometrische Funktionen zu einer zusammenfügen
  Antworten mit Zitat      
Hallo,

ich möchte aus einer zusammengesetzten Funktion später einmal einen Rotationskörper erstellen.

Die resultierende Funktion soll sich dabei über mehrere Intervalle aus einzelnen Funktionen zusammensetzen. Die Funktionen haben jeweils einen gemeinsammen Punkt, sodass eine durchgehende Kurve entstehen soll.
Als einfachen Ansatz wollte ich zuerst folgende Funktionen verbinden:

y(x) = x für xE[0,5]
y(x) = x^2 für xE[5,10]

Ich habe im Forum bereits diese Beiträge gefunden, bin damit aber nicht ans Ziel gekommen:
http://www.gomatlab.de/verbinden-me.....funktionen+verbinden.html
http://www.gomatlab.de/funktion-ueb.....le-definieren-t34298.html


Es gibt doch sicherlich noch andere Möglichkeiten wie man das machen kann. Kann mir da jemand weiterhelfen?
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.500
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 22.03.2017, 11:08     Titel:
  Antworten mit Zitat      
Hallo,

wie erstellst du denn aus einer wie auch immer gegebenen Funktion deinen Rotationskörper? Symbolisch oder numerisch?

Wenn du mit etwas "nicht ans Ziel kommst", ist es immer hilfreich, die genauen Probleme dabei anzugeben.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 18.09.15
Wohnort: Aachen
Version: R2015b
     Beitrag Verfasst am: 22.03.2017, 11:15     Titel:
  Antworten mit Zitat      
Die Rotation einer Linie in der x-y-Ebene um die x-Achse wollte ich wie folgt machen:

Code:
n=25;
t=(0:n)'*2*pi/n;
figure;
surf(ones(n+1,1)*x,cos(t)*y,sin(t)*y);


Das klappt für eine Funktion wie:

Code:
R=589.77;
Lzyl=4.2;
x=linspace(0,60,100);
y=sqrt(R^2-(Lzyl/2)^2)-sqrt(R^2-x.^2);


auch schon, nur bekomme ich es halt nicht hin diese Funktion mit einer weiteren zu verbinden.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.500
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 22.03.2017, 11:28     Titel:
  Antworten mit Zitat      
Hallo,

es ist deutlich einfacher, wenn du den Code in der richtigen Reihenfolge postest.

Zitat:
nur bekomme ich es halt nicht hin diese Funktion mit einer weiteren zu verbinden.

Bitte immer dazuschreiben: Wie versuchst du es, und welche Probleme treten dabei auf?

Code:
x=linspace(0,10,100);
y=zeros(size(x));
y(x<=5) = x(x<=5);
y(x>5) = x(x>5).^2;

n=25;
t=(0:n)'*2*pi/n;
figure;
surf(ones(n+1,1)*x,cos(t)*y,sin(t)*y);


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

Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 18.09.15
Wohnort: Aachen
Version: R2015b
     Beitrag Verfasst am: 22.03.2017, 11:47     Titel:
  Antworten mit Zitat      
Ok, werde das berücksichtigen.

Ich habe es u.a. mit dem for-Befehl so probiert:
Code:
x=linspace(1,20,20);
R=589.77;
Lzyl=4.2;
for i=1:10
    f(i)=x;
end
for i=11:20
    f(i)=sqrt(Rcr^2-(Lzyl/2)^2)-sqrt(Rcr^2-x.^2);
end
plot(x,f)

Dabei erhalte ich den Fehler:
Code:
In an assignment  A(:) = B, the number of elements in A and B must be the same.

Error in Untitled2 (line 5)
    f(i)=x;
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.500
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 22.03.2017, 12:21     Titel:
  Antworten mit Zitat      
Hallo,

... weil du versuchst, einem Element f(i) einen ganzen Vektor x zuzuweisen. Wenn, dann müsstest du x(i) zuweisen.

Warum aber überhaupt mit for-Schleife?
Ich habe dir ja einen Vorschlag geschickt, in dem man bequem ohne auskommt. Das ähnelt auch sehr dem Vorschlag von LittleX in deinem ersten Link.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 18.09.15
Wohnort: Aachen
Version: R2015b
     Beitrag Verfasst am: 22.03.2017, 12:36     Titel:
  Antworten mit Zitat      
Das hatte keinen besonderen Grund, dass ich das mit der for-Schleife versucht habe. War halt mein erster Gedanke, dass mit einer Schleife zu realisieren um y für die Werte des ersten Intervalls zu berechnen und ab einer bestimmten Grenze die Funktion vom nächsten Intervall zu verwenden.

Ich wusste nicht, dass man die y-Werte direkt einschränken kann. Dein Programm funktioniert und ist sicher einfacher. Danke also!
Private Nachricht senden Benutzer-Profile anzeigen
 
corleone13375
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 18.09.15
Wohnort: Aachen
Version: R2015b
     Beitrag Verfasst am: 22.03.2017, 13:12     Titel:
  Antworten mit Zitat      
Ich hab nun doch noch ein Problem.

Dieser Plot kommt nun dabei raus.
Ich verstehe nicht, warum der Körper der Funktion der zur Gleichung x>5 gehört im Wertebereich von 0<x<=5 dargestellt wird. Eigentlich war das andersrum geplant, nämlich so, dass dieser Teil auch um Bereich 5<x<=10 dargestellt wird.

Hier der Code:
Code:
R=589.77;
Lzyl=4.2;
x=linspace(0,10,100);
y=zeros(size(x));
y(x<=5) = x(x<=5);
y(x>5) = sqrt(R^2-(Lzyl/2)^2)-sqrt(R^2-x(x>5).^2);

n=25;
t=(0:n)'*2*pi/n;
figure;
surf(ones(n+1,1)*x,cos(t)*y,sin(t)*y);
xlabel('X');
ylabel('Y');
zlabel('Z');


Bild.jpg
 Beschreibung:

Download
 Dateiname:  Bild.jpg
 Dateigröße:  26.24 KB
 Heruntergeladen:  242 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

im Bereich 5 bis 10 wird schon was dargestellt, nur sind die Werte dort sehr klein. Schau dir mal die zweite Hälfte deines y-Vektors an. Sollen dort wirklich Werte zwischen 0,02 und 0,08 stehen?

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 18.09.15
Wohnort: Aachen
Version: R2015b
     Beitrag Verfasst am: 22.03.2017, 14:13     Titel:
  Antworten mit Zitat      
Ok, mein Fehler.
Hab durch das viele herumprobieren die Funktionen und Zahlenwerte ein paar mal geändert und hatte dann eben den Überblick verloren, was da überhaupt dargestellt wird.

Das Programm tut natürlich das was es soll, nur hatte das jetzt nichts mehr mit meinen ursprünglichen Funktionen zu tuen.

Dann weiß ich jetzt aber was ich machen muss.
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.