Zum Inhalt springen

Datei:Phasenportraet mit vektorfeld.svg

aus AufEinWort, der freien Forschung
    Originaldatei (SVG-Datei, Basisgröße: 512 × 384 Pixel, Dateigröße: 25 KB)

    Diese Datei stammt aus Wikimedia Commons und kann von anderen Projekten verwendet werden. Die Beschreibung von deren Dateibeschreibungsseite wird unten angezeigt.

    Beschreibung

    Beschreibung
    Deutsch: Phasenporträt einer linearen DGl. 2. Ordnung
    Datum
    Quelle Eigenes Werk
    Urheber Miessen
    Andere Versionen
    SVG‑Erstellung
    InfoField
     Der SVG-Code ist valide.
    V
     Diese Vektorgrafik wurde mit GNU Octave erstellt.

    Matlab

    %
    % Phasenportraet einer gedaempften Schwingung
    % mit Vektorfeld und einer Trajektorie
    %
    
    % PT2-Glied
    printf("Parameter fuer das PT2-Glied:\n");
    d=0.15
    %T = 1./ (2. * pi)
    T = 1.
    K = 1.
    
    % Impulsantwort auf einen Dirac-Stoß
    
    % Nach Wiki PT2-Glied
    % K/( sqrt(1-d^2) ) * exp( -1. * (d / T) * t ) * sin( sqrt(1-d^2)/T * t + arctan( sqrt(1-d^2)/d ) )
    
    % Nach Wiki linear gedämpfte Schwingung
    % d = delta / omega_0
    % T = 1. / omega_0
    
    printf("Umrechnung fuer die linear gedaempfte Schwingung:\n");
    delta = d / T
    omega_0 = 1. / T
    omega_d = sqrt(omega_0^2 - delta^2)
    
    printf("Startwerte:\n");
    x_0 = 1;
    v_0 = 0;
    
    printf("Berechnung:\n");
    
    perioden = 6.
    werte_pro_periode = 40.
    periodendauer = 2.*pi/omega_0
    
    t = 0:periodendauer/werte_pro_periode:periodendauer*perioden;
    
    % Formel: x = e^(-1. * delta * t) * ( (v_0 + delta * x_0) / omega_d  * sin(omega_d * t) + x_0 * cos(omega_d * t) );
    
    printf("Berechne Zeitverhalten\n");
    
    part_1 = e.^(-1. * delta .* t);
    part_2 = (v_0 + delta * x_0) / omega_d  .* sin(omega_d .* t);
    part_3 = x_0 .* cos(omega_d .* t);
    
    x = part_1 .* (part_2 .+ part_3);
    
    printf("Plotter\n");
    
    printf("Zeitdiagramm\n");
    
    % TODO Normiert auf Schwingungen
    
    plot(t/periodendauer, x);
    title("Zeitdiagramm")
    xlabel("Zeit in Perioden");
    ylabel("Amplitude");
    
    print("ausgabe/zeitdiagramm_zum_phasenportraet.svg", "-dsvg");
    printf("Weiter mit beliebiger Taste\n");
    pause
    
    printf("Berechne Trajektorie\n");
    
    printf("Trajektorie im Phasenportraet\n");
    
    % part_1 = e.^(-1. * delta .* t);
    % part_2 = (v_0 + delta * x_0) / omega_d  .* sin(omega_d .* t);
    % part_3 = x_0 .* cos(omega_d .* t);
    part_1_ableit = -1. * delta * e.^(-1. * delta .* t);
    part_2_ableit = (v_0 + delta * x_0) / omega_d  .* omega_d .*  cos(omega_d .* t);
    part_3_ableit = x_0 .*  omega_d .* -1. .* sin(omega_d .* t);
    
    % x_ableit = v = Geschwindigkeit
    x_ableit = part_1_ableit .* (part_2 .+ part_3) + part_1 .* (part_2_ableit .+ part_3_ableit);
    v = x_ableit;
    
    plot(x, v);
    %[exit phasenportraet]=system(["echo '" "Phasenporträt mit Trajektorie" "'| iconv --from-code=UTF-8 --to-code=ISO-8859-15"], 1);
    phasenportraet = "Phasenportraet mit Trajektorie";
    title(phasenportraet)
    xlabel("Amplitude (Auslenkung)");
    ylabel("Ableitung (Geschwindigkeit)");
    
    text(x_0 - 0.1, v_0, "Startpunkt ->", "HorizontalAlignment","right", "color", "blue");
    text(0.2, -0.75, "<- Zeit", "color", "blue");
    
    print("ausgabe/phasenportraet_mit_trajektorie.svg", "-dsvg");
    printf("Weiter mit beliebiger Taste\n");
    pause
    
    printf("Phasenportraet als Vektorfeld\n");
    
    [x_mesh, v_mesh] = meshgrid (-1.6:.2:+1.6);
    
    % Vektor: v(x, v)
    % v_x = v (bekannt)
    % v_y = a (zu ermitteln)
    
    a_mesh = -1. .* (2 .* delta .* v_mesh .+ omega_0 .* x_mesh);
    
    % Randbedingungen: x_v und v_
    
    quiver(x_mesh, v_mesh, v_mesh, a_mesh);
    hold on;
    
    plot(x, v, "r");
    hold off;
    % [exit phasenportraet]=system(["echo '" "Phasenporträt mit Vektorfeld" "'| iconv --from-code=UTF-8 --to-code=ISO-8859-15"], 1);
    phasenportraet = "Phasenportraet mit Vektorfeld";
    title(phasenportraet)
    xlabel("Amplitude");
    ylabel("Ableitung");
    axis ([-1.5, +1.5, -1.5, +1.5 ]);
    
    print("ausgabe/phasenportraet_mit_vektorfeld.svg", "-dsvg");
    printf("Weiter mit beliebiger Taste\n");
    pause
    
    % EOF
    

    Quelltext
    InfoField

    SVG code

    %
    % Phasenportraet einer gedaempften Schwingung
    % mit Vektorfeld und einer Trajektorie
    %
    
    % PT2-Glied
    printf("Parameter fuer das PT2-Glied:\n");
    d=0.15
    %T = 1./ (2. * pi)
    T = 1.
    K = 1.
    
    % Impulsantwort auf einen Dirac-Stoß
    
    % Nach Wiki PT2-Glied
    % K/( sqrt(1-d^2) ) * exp( -1. * (d / T) * t ) * sin( sqrt(1-d^2)/T * t + arctan( sqrt(1-d^2)/d ) )
    
    % Nach Wiki linear gedämpfte Schwingung
    % d = delta / omega_0
    % T = 1. / omega_0
    
    printf("Umrechnung fuer die linear gedaempfte Schwingung:\n");
    delta = d / T
    omega_0 = 1. / T
    omega_d = sqrt(omega_0^2 - delta^2)
    
    printf("Startwerte:\n");
    x_0 = 1;
    v_0 = 0;
    
    printf("Berechnung:\n");
    
    perioden = 6.
    werte_pro_periode = 40.
    periodendauer = 2.*pi/omega_0
    
    t = 0:periodendauer/werte_pro_periode:periodendauer*perioden;
    
    % Formel: x = e^(-1. * delta * t) * ( (v_0 + delta * x_0) / omega_d  * sin(omega_d * t) + x_0 * cos(omega_d * t) );
    
    printf("Berechne Zeitverhalten\n");
    
    part_1 = e.^(-1. * delta .* t);
    part_2 = (v_0 + delta * x_0) / omega_d  .* sin(omega_d .* t);
    part_3 = x_0 .* cos(omega_d .* t);
    
    x = part_1 .* (part_2 .+ part_3);
    
    printf("Plotter\n");
    
    printf("Zeitdiagramm\n");
    
    % TODO Normiert auf Schwingungen
    
    plot(t/periodendauer, x);
    title("Zeitdiagramm")
    xlabel("Zeit in Perioden");
    ylabel("Amplitude");
    
    print("ausgabe/zeitdiagramm_zum_phasenportraet.svg", "-dsvg");
    printf("Weiter mit beliebiger Taste\n");
    pause
    
    printf("Berechne Trajektorie\n");
    
    printf("Trajektorie im Phasenportraet\n");
    
    % part_1 = e.^(-1. * delta .* t);
    % part_2 = (v_0 + delta * x_0) / omega_d  .* sin(omega_d .* t);
    % part_3 = x_0 .* cos(omega_d .* t);
    part_1_ableit = -1. * delta * e.^(-1. * delta .* t);
    part_2_ableit = (v_0 + delta * x_0) / omega_d  .* omega_d .*  cos(omega_d .* t);
    part_3_ableit = x_0 .*  omega_d .* -1. .* sin(omega_d .* t);
    
    % x_ableit = v = Geschwindigkeit
    x_ableit = part_1_ableit .* (part_2 .+ part_3) + part_1 .* (part_2_ableit .+ part_3_ableit);
    v = x_ableit;
    
    plot(x, v);
    %[exit phasenportraet]=system(["echo '" "Phasenporträt mit Trajektorie" "'| iconv --from-code=UTF-8 --to-code=ISO-8859-15"], 1);
    phasenportraet = "Phasenportraet mit Trajektorie";
    title(phasenportraet)
    xlabel("Amplitude (Auslenkung)");
    ylabel("Ableitung (Geschwindigkeit)");
    
    text(x_0 - 0.1, v_0, "Startpunkt ->", "HorizontalAlignment","right", "color", "blue");
    text(0.2, -0.75, "<- Zeit", "color", "blue");
    
    print("ausgabe/phasenportraet_mit_trajektorie.svg", "-dsvg");
    printf("Weiter mit beliebiger Taste\n");
    pause
    
    printf("Phasenportraet als Vektorfeld\n");
    
    [x_mesh, v_mesh] = meshgrid (-1.6:.2:+1.6);
    
    % Vektor: v(x, v)
    % v_x = v (bekannt)
    % v_y = a (zu ermitteln)
    
    a_mesh = -1. .* (2 .* delta .* v_mesh .+ omega_0 .* x_mesh);
    
    % Randbedingungen: x_v und v_
    
    quiver(x_mesh, v_mesh, v_mesh, a_mesh);
    hold on;
    
    plot(x, v, "r");
    hold off;
    % [exit phasenportraet]=system(["echo '" "Phasenporträt mit Vektorfeld" "'| iconv --from-code=UTF-8 --to-code=ISO-8859-15"], 1);
    phasenportraet = "Phasenportraet mit Vektorfeld";
    title(phasenportraet)
    xlabel("Amplitude");
    ylabel("Ableitung");
    axis ([-1.5, +1.5, -1.5, +1.5 ]);
    
    print("ausgabe/phasenportraet_mit_vektorfeld.svg", "-dsvg");
    printf("Weiter mit beliebiger Taste\n");
    pause
    
    % EOF
    

    Lizenz

    Ich, der Urheber dieses Werkes, veröffentliche es unter der folgenden Lizenz:
    Creative Commons CC-Zero Diese Datei wird unter der Creative-Commons-Lizenz CC0 1.0 Verzicht auf das Copyright zur Verfügung gestellt.
    Die Person, die das Werk mit diesem Dokument verbunden hat, übergibt dieses weltweit der Gemeinfreiheit, indem sie alle Urheberrechte und damit verbundenen weiteren Rechte – im Rahmen der jeweils geltenden gesetzlichen Bestimmungen – aufgibt. Das Werk kann – selbst für kommerzielle Zwecke – kopiert, modifiziert und weiterverteilt werden, ohne hierfür um Erlaubnis bitten zu müssen.

    Kurzbeschreibungen

    Ergänze eine einzeilige Erklärung, was diese Datei darstellt.

    In dieser Datei abgebildete Objekte

    Motiv

    25.736 Byte

    image/svg+xml

    a9838e4efea4861273596ebd87a3ab797d4bde35

    Dateiversionen

    Klicke auf einen Zeitpunkt, um diese Version zu laden.

    Version vomVorschaubildMaßeBenutzerKommentar
    aktuell13:40, 21. Sep. 2013Vorschaubild der Version vom 13:40, 21. Sep. 2013512 × 384 (25 KB)wikimediacommons>MiessenUser created page with UploadWizard

    Die folgende Seite verwendet diese Datei:

    Metadaten