Musterlösung. Aufgabe 1: einer. wird. x/u. arg(x/u) Frequenz f. Matthias Fischer Mouns. Almarrani. Alexander Teetz Simon Titz Simon Oberthür

Ähnliche Dokumente
Thomas Gewering Benjamin Koch Dominik Lüke. (geschachtelte Schleifen)

Gegeben sind die folgenden Programmausschnitte: I. Programmausschnitt: II. Programmausschnitt: III. Programmausschnitt: IV. Programmausschnitt:

Technische Informatik für Ingenieure WS 2010/2011 Musterlösung Übungsblatt Nr. 4

Technische Informatik für Ingenieure WS 2010/2011 Musterlösung Übungsblatt Nr. 3

Technische Informatik für Ingenieure WS 2010/2011 Übungsblatt Nr. 3

Thomas Gewering Benjamin Koch Dominik Lüke

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2016/17. Vorbereitende Aufgaben

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18. Vorbereitende Aufgaben

Technische Informatik für Ingenieure Winter 2005/2006 Übungsblatt Nr. 3

Einfache Arrays. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

Klausur zur Lehrveranstaltung. Technische Informatik für Ingenieure WS 2008/09

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2018/19. Vorbereitende Aufgaben

Klausur zur Lehrveranstaltung. Technische Informatik für Ingenieure WS 2009/10

Einführung in die Programmierung WS 2009/10. Übungsblatt 7: Imperative Programmierung, Parameterübergabe

Arrays. Gilbert Beyer und Annabelle Klarl. Einführung in die Informatik. Zentralübung zur Vorlesung Einführung in die Informatik

10. Felder (Arrays) Teil 2. Java-Beispiele: Echo.java Primzahlen.java Monate.java. K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16

Grundlagen der Objektorientierten Programmierung - IO-Tools

Intensivübung zu Algorithmen und Datenstrukturen

Probeklausur Informatik 2 Sommersemester 2013

Vorbereitende Aufgaben

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 15/16

Fakultät IV Elektrotechnik/Informatik

Übungen zu Algorithmen

CoMa 04. Java II. Paul Boeck. 7. Mai Humboldt Universität zu Berlin Institut für Mathematik. Paul Boeck CoMa 04 7.

Programmierkurs Java

Programmierstarthilfe SS 2009 Fakultät für Ingenieurwissenschaften und Informatik 4. Blatt Für die Woche vom bis zum 22.5.

Objektorientierte Programmierung

Programmiertechnik Übungen zu Klassen & -methoden

Objektorientierte Programmierung OOP Programmieren mit Java

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. )

16. Dezember 2004 Dr. M. Schneider, P. Ziewer

Einstieg in die Informatik mit Java

pue13 January 28, 2017

Tag 4 Repetitorium Informatik (Java)

Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund

2.4 Schleifen. Schleifen unterscheiden sich hinsichtlich des Zeitpunktes der Prüfung der Abbruchbedingung:

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor

Algorithmen und Datenstrukturen SS Übungsblatt 1: Grundlagen

Einstieg in die Informatik mit Java

Tag 7 Repetitorium Informatik (Java)

Anweisungen zur Ablaufsteuerung

Informatik B von Adrian Neumann

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben

Vorkurs Informatik WiSe 16/17

Zentralübung Grundlagen der Programmierung

Prof. H. Herbstreith Fachbereich Informatik. Leistungsnachweis. Informatik 1 WS 2001/2002

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen

Kontrollstrukturen: Wiederholungsanweisungen

Informatik Funktionen

Aufgabenblatt: Methoden - rekursiv

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

public class SternchenRechteckGefuellt {

Klassenvariablen, Klassenmethoden

Vorkurs Informatik WiSe 17/18

Programmieren in Java

Tag 8 Repetitorium Informatik (Java)

Programmieren und Problemlösen

Einführung in die Programmierung für NF. Arrays

Geoinformatik und Vermessung Prüfung 502 : Informatik (JAVA)

// compiliert, aber Programmabbruch zur Laufzeit: einesuppe = ((EßbarerPilz)einPilz).kochen();

Praktikum zu Einführung in die Informatik für LogWings und WiMas Wintersemester 2013/14

Name: Seite 1. Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort.

2 Teil 2: Nassi-Schneiderman

Geoinformatik und Vermessung Prüfung 502 : Informatik (JAVA)

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 3

Java-Schulung Grundlagen

Kontrollstrukturen: Wiederholungsanweisungen

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 14/15

Prüfung Softwareentwicklung I (IB)

6. Iteration (Schleifenanweisungen)

6. Iteration (Schleifenanweisungen)

Informatik Hochschule Mainz Geoinformatik und Vermessung. Wiederholung. Frohes Fest und Guten Rutsch!

Vorsichtige Programmierer verwenden Inkrement- Operatoren nicht in komplizierteren Ausdrücken

Lösungshinweise/-vorschläge zum Übungsblatt 4: Software-Entwicklung 1 (WS 2017/18)

Einstieg in die Informatik mit Java

Übungen zu Algorithmen

Arrays von Objekten. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

Thomas Gewering Benjamin Koch Dominik Lüke

EINI LogWing/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 17/18

Aufgabe11. Methode test1. import java.util.hashmap; import java.util.arraylist; public class Aufgabe11 {

hue12 January 24, 2017

Programmieren in Java

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Musterlösung Stand: 5. Februar 2009

3. Anweisungen und Kontrollstrukturen

Übungsstunde 3. Einführung in die Programmierung

Einführung in die Programmierung

Überblick. Rekursive Methoden. Backtracking. Memorization. Einfache rekursive Datenstrukturen. Aufzählen, Untermengen, Permutationen, Bitmengen

Prüfung Softwareentwicklung II (IB)

Vorbereitende Aufgaben

Informatik II Aufgabenblatt 6

Prüfung Softwareentwicklung I (IB)

Übung Grundlagen der Programmierung WS 2008/09. Übung 04: Methoden. Abgabetermin: Prosabeschreibung Java-Programm.

Transkript:

Technische Informatik für Ingenieure WS 2010/2011 Musterlösung Übungsblatt Nr. 8 13. Dezember 2010 Übungsgruppenleiter: Matthias Fischer Mouns Almarrani Rafał Dorociak Michael Feldmann Thomas Gewering Benjaminn Koch Dominik Lüke Alexander Teetz Simon Titz Simon Oberthür Seite 1(8) Dieses Übungsblatt behandelt Aufgaben, wie sie beim Umgang mit realen Messdaten regelmäßig auftreten. Grundlage ist das gemessene Übertragungsverhalten einer piezoelektrischen Schwingers. Der Schwinger wird mit der Spannung u(t) ) bei unterschiedlichen Frequenzen angeregt, die Auslenkung x(t) des Schwingers wird gemessen. Gespeichert ist das Verhältnis u(t)/x(t) in Betrag ( x/u ) und Phase (arg(x/u)). Aufgabe 1: Lesen Sie die Daten aus (Daten einlesen undd darstellen) der bereitgestellten Datei xu_50.10.5000hz.w_l ein und speichern Sie sie in einem geeignetenn Array. Die Datei ist eine Textdatei mit n Zeilen und 3 Spalten, die durch Leerzeichen getrennt sind. Der Aufbau ist: Frequenz f x/u arg(x/u)

Technische Informatik für Ingenieure Seite 2(8) Beispiel: +9.004800E+001 +2.128776E-004 +5.070000E+000 Schreiben sie zwei Programme. Das erste Programm stellt den Betrag ( x/u ) über der Frequenz (f) in einem Diagramm. Das zweite Programm stellt die Phase (arg(x/u)) über der Frequenz dar. Hierzu importieren Sie im ersten Schritt das an der Webseite der Veranstaltung bereitgestellte Projekt TIFI-Plot.zip (über File > Import > General > Existing Projects into Workspace > Select Archive File). Danach erweitern Sie entsprechend die beiden darin enthaltenen Programme Plotter1.java und Plotter2.java. Lösung: Plotter1.java: package de.uni_paderborn.hni.tifi; import jahuwaldt.plot.plotwindow; public class Plotter1 public static void main(string[] args) In.open("c:\\xu_50.10.5000Hz.w_l"); if (!In.done()) /* Fehlerbehandlung */ System.out.println("Datei nicht gefunden."); return; PlotWindow.setYLogAxisScale(true); for (;;) double a = In.readDouble(); double b = In.readDouble(); double c = In.readDouble(); if (a == 0.0 && b == 0.0 && c == 0.0) break; PlotWindow.addFrequenz(a); PlotWindow.addY(b); In.close(); PlotWindow.plotChart();

Technische Informatik für Ingenieure Seite 3(8) Ergebnis (für Plotter1. java): Plotter2.java: package de.uni_paderborn.hni.tifi; import jahuwaldt.plot. PlotWindow; public class Plotter2 public static void main(string[] args) In.open("c:\\xu_50. 10.5000Hz.w_l"); if (!In.done()) /* Fehlerbehandlung */ System.out.println("Datei nichtt gefunden."); return; PlotWindow.setYLogAxisScale( (false); for (;;) double a = In.readDouble(); double b = In.readDouble(); double c = In.readDouble(); if ( a == 0.0 break; && b == 0.0 && c == = 0.0) PlotWindow.addFrequenz(a); PlotWindow.addY(c); In.close() ; PlotWindow.plotChart();

Technische Informatik für Ingenieure Seite 4(8) Ergebnis (für Plotter2. java): Aufgabe 2: (Phasensprünge entfernen) Die gemessene Phase springt an drei Stellen im gemessenen Frequenzbereich. Diess liegt daran, dass das verwendetee Messgerätt Phasen im Bereich von -180 bis +180 ausgibt. Fällt also beispielsweise eine Phase von -179 um weitere 3, so wird sie als +178 aus- gegeben. Mathematisch ist das korrekt, da eine Phasendrehu ung um 360 keine Auswir- ohne kungen hat. Für die menschliche Wahrnehmung ist jedochh ein sanfter Verlauf Sprünge geeigneter. Entfernen Sie daher die Sprünge aus dem Phasengang, indemm Sie Vielfache von 360 auf die richtigen Phasenwerte addierenn oder von ihnen subtrahieren (z.b. findet derr ers- Algorithmus zum Bestimmen der Sprungstellen. te Sprung von -1.798900E+ +002 auf +1.796900E+ +002 statt; ab hier müssen bis zum nächsten Sprung 360 abgezogen werden). Überlegen Sie sich dafür einen geeigneten Lösung: package de.uni_paderborn.hni.tifi; import jahuwaldt.plot. PlotWindow; public class Blatt8_Aufgabe2 public static void main(string[] args) In.open("c:\\xu_50. 10.5000Hz.w_l"); if (!In.done())

Technische Informatik für Ingenieure Seite 5(8) /* Fehlerbehandlung */ System.out.println("Datei nicht gefunden."); return; PlotWindow.setYLogAxisScale(false); boolean sprung = false; double sprung_diff = 0.0; double c_alt = 0.0; for (int i = 0;; i++) double a = In.readDouble(); double b = In.readDouble(); double c = In.readDouble(); /* Der Wert von c muss ggf. korrigiert werden */ double c_korr = c; if (i > 0) /* Ansonsten, falls i == 0, dann haben wir * noch keinen alten Wert von c */ /* Mal schauen, ob es einen Sprung gab. */ double diff = c - c_alt; if (diff > 359.0 diff < -359.0) sprung =!sprung; if (sprung) /* Die Differenz speichern wir unter sprung_diff ab */ sprung_diff = diff; if (sprung) /* Der Wert vom c wird entsprechend angepasst. */ c_korr = c - sprung_diff; if (a == 0.0 && b == 0.0 && c == 0.0) break; PlotWindow.addFrequenz(a); PlotWindow.addY(c_korr); /* Unter c_alt speichern wir den vorherigen Wert von c ab. */ c_alt = c; In.close(); PlotWindow.plotChart();

Technische Informatik für Ingenieure Seite 6(8) Ergebnis: Aufgabe 3: (Resonanzen finden) Der Frequenzgang weist charakteristischen Frequenzen auf, die d wie folgt definiert sind: s Resonanzfrequenzen, x/u wird lokal maximal: arg(x/u) fällt unter -90 - Antiresonanzfrequenzen, x/u wird lokal minimal: arg(x/u) steigt über -90 Ermitteln Sie die Resonanz- und Antiresonanzfrequenzen mit einem geeigneten Algorithmus. Hinweis: Die ermittelten Frequenzen sind abhängig von der verwendeten Definition leicht unterschiedlich. Lösung: package de.uni_paderborn.hni.tifi; public class Blatt8_Aufgabe3 public static void main(string[] args) In.open("c:\\xu_50. 10.5000Hz.w_l"); if (!In.done()) /* Fehlerbehandlung */ System.out.println("Datei nichtt gefunden.");

Technische Informatik für Ingenieure Seite 7(8) return; /* Wir können in der Schleife nicht auf * die Werte, die künftig gelesen werden, * zugreifen. Daher schauen wir uns die * Werte, die in den letzten zwei Durchlaufen * der Schleife gelesen worden sind. * * Im Fokus steht also nicht der * Wert von b, sonder von b_alt. Für * diesen wird überprüft, ob die * entsprechende Bedingung (b ist lokal * maximal bzw. b ist lokal minimal) * erfüllt ist. */ double b_alt = 0.0; double b_alt_alt = 0.0; /* Da wir uns b_alt anschauen, liegt * es nahe auch den zugehörigen Wert * c_alt zu betrachten, wenn die * Erfüllung der zweiten Bedingung * überprüft wird. */ double c_alt = 0.0; for (int i = 0; ;i++) double a = In.readDouble(); double b = In.readDouble(); double c = In.readDouble(); if (i > 1) /* Resonanzfrequenz */ if (b_alt > b_alt_alt && b_alt > b) /* b_alt ist lokal maximal, die zweite Bedingung wird überprüft */ if (c_alt < 90.0) System.out.println("Frequenz " + a + " ist eine Resonanzfrequenz."); /* Antiresonanzfrequenz */ if (b_alt < b_alt_alt && b_alt < b) /* b_alt ist lokal minimal, die zweite Bedingung wird überprüft */ if (c_alt > -90.0) System.out.println("Frequenz " + a + " ist eine Antiresonanzfrequenz."); /* Falls folgendes gilt, verlassen wir die Schleife */ if (a == 0.0 && b == 0.0 && c == 0.0) break;

Technische Informatik für Ingenieure Seite 8(8) b_alt_alt = b_alt; b_alt = b; c_alt = c; In.close();