Python ist eine general purpose language, sie soll also in möglichst vielen Bereichen einsetzbar sein. Der große Nachteil der Sprache ist die Performance, die aber mittlerweile auch nicht mehr so schlecht ist wie sie mal war. Das waren Einsparungen zum Zwecke der einfachen Programmierbarkeit. Wenn du eine Konsolenanwendung möchtest, die dir schnell eine bestimmte Sache tut, dann ist nichts so schnell hinzuklatschen wie ein Pythonskript.

Python wird also überall da gerne verwendet, wo du schnell je nach Situation ein Skript brauchst, das eine bestimmte Sache tut. Performance-Bottleneck sollte da am besten nicht dein eigener Prozessor sein sondern zum Beispiel ein Datenfluss oder eine Internetverbindung, dann fällt der große Nachteil der Sprache sofort weg. Auf Anhieb fällt mir da der gesamte Bereich Netzwerksicherheit ein, da kommst du ohne Python nicht drumherum. Bereiche, wo du nicht große Mengen an Daten zu berechnen hast, eignen sich dann natürlich auch gut, z.B. das Programmieren von einfachen Automaten (obwohl da Java immernoch Marktführer ist wegen der totalen Plattformunabhängigkeit).

LG

...zur Antwort
Auf gar keinen Fall überbewertet

Das Virus ist auf keinen Fall überbewertet, ich würde eher das Gegenteil behaupten. Leute besonders in Deutschland sind getrieben von einer riesigen Hybris, dass unser Gesundheitssystem, das "so viel besser" als das chinesische ist, eine niedrigere Sterberate als die bisher bekannte produzieren wird.

Fakt ist, dass das Virus hochansteckend ist, im Gegensatz zur ersten Sars-epidemie vor Auftreten von Symptomen ansteckend ist und nicht nur durch Tröpfcheninfektion sondern durch Aerosolinfektion übertragen werden kann. Dazu ist das menschliche Immunsystem deutlich schlechter vorbereitet, da diese Virusart nicht so häufig vorkommt wie z.B. Grippeviren, die wir seit unserer Geburt regelmäßig abbekommen.

Die hohe Ansteckbarkeit ist ein Riesenproblem und wird viele Leute ihr Leben kosten. Auch wenn unter jungen Leuten die Sterberate bei 0.2% sehr "angenehm" ausfällt, liegt sie bei 70- bis 80-jährigen bei 8% und bei über 80-jährigen bei 15%, was sehr hoch ist. Und das ist die Sterberate aus einer klinischen Studie, also von Leuten, die rechtzeitig ins Krankenhaus gekommen sind, dass Forscher daran interessiert waren, an ihnen den Krankheitsverauf zu beobachten. Die Sterberate ohne rechtzeitige klinische Behandlung dürfte also noch ein kleines bisschen höher liegen. Das Risiko bei dieser naiv-leichtsinnigen Haltung in Deutschland sind also junge Leute, bei denen die Krankheit sehr leicht oder sogar ohne Symptome verläuft, die ihre Großeltern oder andere ältere Verwandte besuchen und damit umbringen. Mal im Ernst, die Leute die die Krankheit für einen "Witz" halten (Zitat aus einer Antwort aus diesem Fragethread), denkt ihr ernsthaft Italien und China quarantieren ganze Städte aus Spaß? Das kostet die Millionengelder, das machen die nicht einfach so.

LG

...zur Antwort
  1. Du legst in jeder Schleifeniteration einen neuen Array an. Was du natürlich machen willst ist das neue Element in den Array einfügen, das ist etwas komplett anderes.
  2. (Statische) Arrays eignen sich nicht für das repetitive Einfügen von Elementen, da du jedes Mal, dass du deinen Array vergrößerst, den gesamten Array kopieren darfst. Nutze dafür lieber die Klasse java.util.ArrayList<Integer>, da kannst du dir einfach vor der Schleife einen Container anlegen und in jedem Schleifendurchlauf zahlen.add(zahl) schreiben. Wenn du nach dem Einlesen unbedingt einen statischen Array haben willst, kannst du die toArray()-methode verwenden.
  3. Scanner sollten geschlossen werden, nachdem du sie nicht mehr brauchst.
...zur Antwort

Ich kann verstehen, wieso dein Lehrer die beiden Themen abgelehnt hat, die sind viel zu allgemein, um in 10-12 Seiten beschrieben zu werden, ganz abgesehen davon, dass du garkeine klare Fragestellung hast! Unterschätz nicht, wieviel man zu einem Thema schreiben kann, auch wenn man in der Schule auf Minimalismus getrimmt wird. Insbesondere finde ich einige der Vorschläge, die hier gegeben wurden, auch nicht gut als Facharbeitsthema. Nicht jedes Thema ist ein gutes Facharbeitsthema.

Ganz generell, wie man ein Facharbeitsthema findet: Für welchen Bereich der IT interessiere ich mich? IT-Sicherheit, Künstliche Intelligenz, Robotik, Algorithmik, Datenbanken etc.

Dann: In diesem bestimmten Thema, was für ein Unterthema/Subjekt finde ich besonders interessant? Falls du dich zum Beispiel für künstliche Intelligenz interessierst, sind mögliche Subjekte: Neuronale Netze, genetische Algorithmen etc.

Zum Schluss: Stell dir EINE Frage, die du gerne beantworten würdest. Falls du dich für genetische Algorithmen entschieden hast, wäre eine solche Frage zum Beispiel: Lassen sich genetische Algorithmen dazu nutzen, eine kürzeste Route von A nach B zu finden?

Dann ist die Strukturierung der Facharbeit auch sofort klar. Auf 1-3 Seiten klärst du erstmal, was ein genetischer Algorithmus ist, was das Problem der Routenfindung ist und wie du gedenkst, es zu lösen. Auf 6-8 Seiten erklärst du, wie du die Lösung umgesetzt hast, auf einer weiteren Seite erklärst du, ob und wieso du mit deinen Ergebnissen zufrieden bist und was man in Zukunft für Ausblicke hätte.

Ich bin selbst Informatiker/Mathematiker im Masterstudiengang und helfe in Form von Nachhilfe auch Schülern, habe also für viele Bereiche einige interessante Themen parat. Wenn du also Interesse hast, kannst du mich gerne privat anschreiben.

...zur Antwort

Es gibt einige gute kostenlose Engines, zumindest kostenlos, solange du damit nicht selbst Geld machst.

  1. Die Godot-engine ist gut optimiert, recht simpel und open-source und bietet 2D- sowie 3D-Development-optionen
  2. Die Cryengine. Ist etwas Overkill da sie sehr professionell ist, ist aber super powerful und ist kostenlos zu benutzen, falls du damit Geld verdienst, musst du Crytek 5% deines Umsatzes zukommen lassen. Dazu ist die Lizenz recht restriktiv bei dem, was du damit machen darfst. Du darfst zum Beispiel vereinfacht gesagt nur Unterhaltungsspiele entwickeln, keine Simulationen, keine Forschungsapps, keine "Serious Games" etc.
  3. Die Unity-engine. Ist nicht open-source, dafür aber kostenlos nutzbar. Die Unity-engine ist auf dem Back-end eine reine 3D-Engine, es lassen sich aber natürlich auch 2D-Spiele in der Unity-engine programmieren. Dafür finde ich sie nicht sonderlich anfängerfreundlich.

Da du da nicht viele Details gegeben hast, würde ich dir raten dir einfach mal die Lizenzen von allen dreien durchzulesen und zu schauen, ob du die Engines überhaupt für deine Zwecke nutzen darfst, davon gehe ich aber aus. Wenn die Godot-engine passt, dann nimm die, wäre mein persönlicher Ratschlag.

...zur Antwort

Frag dich erstmal, was die beiden Mengen aus der a) tatsächlich sind. Welche reellen Zahlen lassen sich als Quadrat einer rellen Zahl schreiben? Es sind alle positiven Zahlen, da sie sich schreiben lassen können als x = Wurzel(|x|)^2. Das geschnitten mit der rechten ganzzahligen Menge ergibt...?

Und so weiter systematisch arbeiten. Bei der c) zum Beispiel: Was bedeutet es, dass xy gerade ist? Da 2 eine Primzahl ist bedeutet es, dass x oder y oder beide gerade sind. Das sollte dir deutlich weiterhelfen.

LG

...zur Antwort

Du hast einen Schreibfehler gemacht. Die UnityEngine implementiert eine Klasse Namens "Rigidbody2D", mit kleinem "b". Darüber hinaus würde ich in Zukunft die Benennung der Variablen vereinheitlichen ("Rigit" zu "Rigid").

LG

...zur Antwort

Die Aufgabenstellung erstmal etwas entwuselt: Du machst dir eine Matrix A(x1,x2), die von einem Punkt im R^2 abhängig ist, diese soll genau dann invertierbar sein, wenn (x1,x2) nicht auf der Gerade PQ liegt. Für solche Konstruktionen eignet sich normalerweise immer ein Vielfaches der Einheitsmatrix A = lambda * id, wobei lambda ein Skalar abhängig von (x1,x2) ist. A ist jetzt genau dann invertierbar, wenn lambda nicht 0 ist, also haben wir die Aufgabe reduziert auf das Finden eines lambda(x1,x2), das 0 ist genau dann, wenn (x1,x2) auf der Geraden PQ liegt.

Da lass ich dich mal ein bisschen dran grübeln, aber wenn du es gespoilert haben willst (Achtung): Aus der Schule kennst du den (orthogonalen) Abstand eines Punktes zu einer Geraden, der eignet sich hier hervorragend.

LG

...zur Antwort

Eigentlich eine zu komplexe Frage für gutefrage.net, das wäre auf einem Mathe-board schneller beantwortet worden, aber jetzt bin ich ja da:)

Du hast schon den richtigen Riecher, aber du musst noch einen "fundamentalen Block" kleiner werden. Erst einmal sind alle Flächen (sprich: kompakte 2-Mannigfaltigkeiten) klassifiziert, das ist also schon einmal gut, aber die Klassifizierung sieht noch etwas anders aus. Dafür brauchen wir die reelle projektive Ebene.

Die bekommst du, indem du den Rand eines Möbiusbandes zunähst: Du klebst also eine Scheibe an den Rand eines Möbiusbandes und machst dann diese Scheibe immer kleiner, bis der ganze Rand an einen Punkt genäht wurde. Du kannst probieren, das zu basteln, aber weil der resultierende Raum nicht orientierbar ist, wirst du damit in unserer Welt einige Probleme haben ;) Alternativ kannst du eine Mütze nehmen und sich gegenüberliegende Punkte auf dem Rand der Mütze vernähen, da kommt der gleiche Raum heraus.

Jetzt kommt die Klassifizierung: Jede nicht-orientierbare Fläche ohne Rand (also die Kleinsche Flasche, aber nicht das Möbiusband) lässt sich darstellen als Verklebung von k vielen projektiven Ebenen, wobei k = 2-X, X ist die Euler-charakteristik deines Raums. Die Euler-charakteristik der Kleinschen Flasche beträgt 0, also kannst du sie darstellen als Verklebung von zwei projektiven Ebenen.

Was ist jetzt mit Flächen mit Rand? Wenn man die Ränder (die ja einfach nur vereinzelte Randkurven bzw. Punkte sind) schließe würde, indem man eine Scheibe anklebt, erhielte man eine nicht-orientierbare Fläche ohne Rand. Man erhält also alle Flächen mit Rand einfach nur, indem man eine geeignete Fläche ohne Rand nimmt (also eine Verklebung von projektiven Ebenen) und dann Löcher reinsticht. Das Möbiusband erhält man zum Beispiel wie oben rückwärts beschrieben einfach nur, indem man sich eine projektive Ebene nimmt, ein Loch hereinsticht und es etwas aufbläst. Wenn du also zum Beispiel eine Fläche baust aus 5 projektiven Ebenen und 3 Randkomponenten, dann ist das das gleiche, wie 3 Möbiusbänder und 2 projektive Ebenen zusammenzukleben (dass das gilt ist gar nicht so klar, aber man kann die Löcher da setzen, wo man will, sodass man auf jeder Ebene nur ein Loch stechen muss). Wenn du auf einer projektiven Ebene zwei Löcher stichst, bin ich mir nicht sicher was herauskommt, da kannst du ja dann mal herumspielen ;)

LG

...zur Antwort

a) Ist falsch, genau wegen deines Gegenbeispiels.

b) Stimmt, beide Integrale ergeben 0. Es gilt:



c) Stimmt nicht, nimm wieder dein Gegenbeispiel. x² ist nirgends negativ, also kann man den positiven Teil nicht ausgleichen.

d) Wenn nicht alle f(x) = 0 sind, dann existiert o.B.d.A ein f(x) > 0. Da f stetig ist, existiert eine epsilon-umgebung (x-eps, x+eps), in der f über einem bestimmten Funktionswert r liegt. Dann gilt:



Da das Integral aber 0 ergeben muss, muss es auch ein negatives Intervall geben, also auch einen negativen Punkt, nach dem MWS auch eine Nullstelle.

LG

...zur Antwort

Das S ist rot, weil man die Ableitungsregel S -> bB durch die Ableitungsregel S -> bS vertauscht hat. Jetzt hast du das Problem, dass du in jedem Ausdruck, den du aus S ableitest, ein S hast und das auch nie wieder loswirst (da du aus S nur aS oder bS machen kannst, in beiden Fällen hast du wieder ein S), also wirst du nie alle Nichtterminale los, bedeutet: Du kannst kein einziges legales Wort bilden. Die Regeln B -> bB und B -> b sind in diesem Fall nutzlos, da du aus S nie ein B ableiten kannst.

LG

...zur Antwort

Das Ergebnis ist korrekt, aber für diese Lösung bekommst du 0 Punkte. Quelle: Ich bin ein ganz durchschnittlich strenger Tutor und vergebe für solche Lösungen genau 0 Punkte ;)

Mach dir geometrisch klar, was es bedeutet, um den Winkel Pi zu drehen, dann brauchst du den ganzen Cosinuskram gar nicht. Was für ein Winkel entspricht Pi? Was passiert mit einem Punkt, wenn er um den Ursprung genau Pi gedreht wird? Was für eine einfache Matrixdarstellung hat der (wie du sehen wirst sehr einfache) Vorgang? Probier das mal mit einigen Punkten und mach dir eine Skizze, dann sollte es sofort klar sein. Als Tip könntest du mal deine Abbildungsmatrix aus dem Internet explizit ausrechnen und staunen, was für und vor allem wieso einfache Zahlen bei sin Pi, cos Pi herauskommen! ;)

LG

...zur Antwort

Dass die Darstellung nicht eindeutig ist, bedeutet: Es gibt reelle Zahlen, die mehr als eine Gleitkommadarstellung haben.

Die Formel 1 = 1/2 + 1/4 + 1/8 + ... sagt in Binärform aus, dass 1.00... = 0.111..., das sind eben zwei verschiedene Binärdarstellungen der Zahl 1. Wenn du mit Binärdarstellungen nicht so gut klarkommst, wechsel ins Dezimalsystem. Die Formel 1 = 9/10 + 9/100 + 9/1000 + ... bedeutet in Dezimalform einfach nur, dass 1.00... = 0.999.., also die 1 eben keine eindeutige Dezimaldarstellung hat.

LG

...zur Antwort

Das Supremum bezieht sich immer auf reelle Zahlen! Dass in deiner Menge nur rationale Zahlen drin sind bedeutet nicht, dass das Supremum rational sein muss, dein Beispiel ist genau das klassische Beispiel dafür. Und in der Tat ist sqrt(3) das Supremum deiner Menge.

1) sqrt(3) ist eine obere Schranke: Für alle rationalen Zahlen mit x^2 < 2 gilt offensichtlich x < sqrt(2).

2) Es gibt keine kleinere obere Schranke: Sei a < sqrt(3) eine beliebige reelle Zahl, wir zeigen jetzt, dass a keine obere Schranke sein kann. Es ist bekannt aus der Definition der reellen Zahlen (egal, wie ihr die reellen Zahlen definiert [und da gibt es viele Wege!], kristallisiert sich dieser Fakt immer relativ schnell raus), dass zwischen zwei reellen Zahlen immer eine rationale Zahl ist. Sei also q eine rationale Zahl zwischen a und sqrt(3), also a < q < sqrt(3). Die rechte Ungleichung quadrieren ergibt q^2 < 3, also muss q in deiner Menge enthalten sein. Da q > a, ist a keine obere Schranke.

Aus diesen zwei Fakten folgerst du wirklich rigoros und per Hand, dass sqrt(3) das Supremum deiner Menge ist.

LG

...zur Antwort

Ein kommutativer Ring mit 1 ist genau dann ein lokaler Ring, wenn

ein Ideal ist, das ist sehr straight forward und genau diese Bedingung wollen wir zeigen. Das machen wir, indem wir zeigen, dass jede Nichteinheit in m liegt (dass keine Einheit in m liegt sollte klar sein). Dazu zeigen wir einfach, dass jedes Element außerhalb von m eine Einheit sein muss.

Man nehme sich also ein a, das nicht in m liegt. Dann ist



ein Ideal, das strikt größer als m ist, also



Dann muss es aber auch ein x geben, sodass:

für ein n in m gilt. Dann ist ax eine Einheit, also auch a.

LG

...zur Antwort

Es existieren explizite Formeln, die Dir alle Primzahlen geben. Diese haben z.T. Formen als Reihendarstellung, Produktdarstellung oder Kombinationen davon mit trigonometrischen Funktionen (siehe http://mathworld.wolfram.com/PrimeFormulas.html).

Das Problem an diesen Formeln: Sie sind uneffizient. Das bedeutet, dass sich diese Formeln nicht "direkt" berechnen lassen, obwohl sie direkt auf einem Blatt Papier stehen. Wenn man testen will, ob n eine Primzahl ist und man alle Faktultäten von 1! bis n! berechnen muss um das rauszufinden, dann ist das deutlich schwerer als einfach per Hand alle möglichen Faktoren zu testen.

Gibt es also direkt berechenbare einfache Formeln für Primzahlen? Dafür muss man erst mal klären, was eine "direkt berechenbare einfache Formel" ist. Wir sagen einfach mal, dass es eine Formel ist, für deren Berechnung mit Input x ein Computer nicht mehr Zeit braucht als f(x), wobei f irgendein Polynom ist.

Beispiele für einfach berechenbare Formeln sind z.B. Polynome selbst. Gibt es also Polynome, die nur Primzahlen ausspucken (egal ob überhaupt alle, oder sogar in der richtigen Reihenfolge)? Das ist leider nicht möglich, das beweisen Mathestudenten im Vorkurs oder spätestens im ersten Semester.

Es gibt aber auch einfach berechenbare Formeln, die keine Polynome sind. Ob es einfache Formeln gibt, die Primzahlen berechnen, weiß man noch nicht. Man vermutet, dass es keine gibt. Was man noch nicht weiß, kann man auch nicht beweisen.

LG

...zur Antwort

Ein nicht so algebraischer Blickwinkel wie der von kreisfoermig, sondern ein eher analytischer:

Natürlich kannst du differenzierbare Funktionen R²->R² betrachten. Die heißen differenzierbar, wenn beide Komponenten der Funktion in beiden Variablen differenzierbar sind. Und tatsächlich findet man hierfür einige gute Anwendungen.

Du kannst dir jetzt eine andere Funktion R²->R² nehmen und sie als Funktion C->C interpretieren, mit der üblichen Identifikation von R² nach C als Vektorräume. Du nennst jetzt aber diese Funktion komplex differenzierbar nicht, wenn sie als R²->R² differenzierbar ist, sondern wenn der Grenzwert des Differenzenquotienten existiert, den du aus der Schule kennst - nur jetzt auf alle Richtungen erweitert. Du kannst dich einer Zahl jetzt nicht nur von links oder von rechts nähern wie in R, sondern von allen Richtungen.

Es stellt sich heraus, dass komplex differenzierbar ein viel stärkerer Begriff ist als reell differenzierbar. Nicht nur, dass komplex differenzierbare Funktionen auch reell differenzierbar sind (und damit ein Spezialfall eben davon), sondern komplex differenzierbare Funktionen besitzen viel mehr Struktur als reel differenzierbare Funktionen. Viele Vektorfelder R²->R² aus der Physik stellen sich als komplex differenzierbare Funktionen C->C heraus, ohne diesen Fakt und die Ausnutzung der vielen schönen Tricks von komplexen Funktionen wäre die moderne Physik wie wir sie heute kennen undenkbar. Allein schon solche Sachen wie Wegunabhängigkeit von Integralwegen und dass Wegintegrale über geschlossene Kurven 0 ergeben müssen wenn man keine Singularität einschließt, was erst die groben Basics sind, machen viele physikalische Probleme erst lösbar.

Fazit: Wenn du eine komplexe Funktion C->C hast, dann kannst du diese natürlich identifizieren mit einer Funktion R²->R². Bei diesem Vorgang vergisst du aber zusätzliche Struktur von C (du wirfst sozusagen wichtige Werkzeuge einfach weg).

Warum sie erfunden wurden? Das hat einen ganz anderen Grund, zuerst ging es um das Lösen von Polynomgleichungen. Danach erst hat man gemerkt, dass die komplexen Zahlen in gewisser Weise die Analysis abrunden, und dafür nutzt man sie heute meistens.

LG

...zur Antwort

Wenn du bereits weißt, dass f(x) = a cos(bx + c) + d, dann kannst du folgern:

  1. a = 1 und d = 0, da sich die Funktion im Intervall [-1,1] bewegt.
  2. c = 0, da f(0) = 1 und der Cosinus genau dort anfängt (falls das nicht der Fall wäre, müsstest du das c so wählen, dass f(-c) = 1).
  3. Der cosinus hat bei pi den ersten Tiefpunkt mit Funktionswert -1. Du hast den ersten Tiefpunkt bei cos(a * 4) = f(4) = -1. Folglich muss gelten 4a = pi bzw. a = pi/4.

LG

...zur Antwort
  1. h3 sieht mir nach dem besten Zug aus.

1.. Bxe3 2. hxg4 Bb6 3. g5 gibt Vorteil für Weiß

1.. Bh5 2. Bxc5 dxc5 3. g4 Bg6 4. Bb5 ist sehr gut für weiß, den E-bauern hält Schwarz nur mit starken positionellen Verrenkungen

1.. Bxf3 2. Qxf3 Qf6 3. Qg3 Nge7 4. 0-0-0 gibt auch Vorteil für Weiß

Es gibt also insgesamt keine gute taktische Ausnutzung, Schwarz muss also nüchtern den Läufer wegstellen.

1.. Bd6 geht nicht wegen Bxc5, sollte klar sein.

1.. Bd7 2. Bxc5 dxc5 3. Qd2 Nge7 4. 0-0-0 sieht mir nach der besten Variante für Schwarz aus, ich sehe trotzdem Weiß im leichten Vorteil.

LG

...zur Antwort