|
|
|
|
Ich sage C.
Da gibt's sowas wie bool auch nicht. =)
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Oli am 22.12.2017 10:17]
|
|
|
|
|
|
Soll aufrichtig kein Flame sein, aber es gibt auch echt viel Python Lernmaterial für Kinder. Was ein boolean Datentyp ist, ist nämlich wirklich nicht kompliziert vielleicht war nur deine Übungsseite für Leute mit mehr background gedacht.
|
|
|
|
|
|
|
Funktioniert !
Danke für den Tipp. Ich gebe nämlich sehr wenige Ficks auf Matlab.
|
|
|
|
|
|
|
Es gibt tatsächlich QuickBasic-Nachimplementierungen (z.B. Freebasic), aber, äh, das willst du wirklich eher nicht haben; been there, done that.
Python ist schon ganz vernünftig als QB-Ersatz. Die meisten Sprachen abseits von C/C++ stellen sich heutzutage eher auf den Kopf bevor sie goto einbauen.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von csde_rats am 22.12.2017 10:29]
|
|
|
|
|
|
| Zitat von B0rG*
Du hast also einen großen Haufen Transistoren, jeder der Transistoren hat (sagen wir) einen Parameter x. Du möchtest wissen, wie diese x verteilt sind, also Aussagen machen über . Wenn du einen Transistor T in die Hand nimmst kannst du allerdings nicht so genau bestimmen, welchen Parameter x er eigentlich hat, sondern du kannst es (zum Beispiel aufgrund von Messungenauigket) nur schätzen, bekommst also einen Ausdruck . Der wird natürlich in irgendeiner Form von T abhängig sein.
Die Summenregel sagt dann, dass . Mit diesen beiden Verteilungen kannst du wahrscheinlich besser Arbeiten. kannst du vielleicht wie von dir vorgeschlagen mittels (bayesianischer) linearer Regression bestimmen. Die spannende Frage ist: Wie kommt man an . Das ist eine Frage der Modellierung und von Expertenwissen und ich kann sie schlecht aus der Ferne beantworten. Für den Anfang kann ich dir aber sagen, dass man mit genug (guten) Samples das Integral (recht grob) approximieren kann als mit den Samples aus T.
e/ Ich habe da oben "schätzen" geschrieben. Ich möchte mich in aller Form entschuldigen.
| |
Okay, nur, dass ich das richtig verstehe.
ist die Verteilung, die ich haben möchte, um quasi zu wissen, wie normal oder speziell die Schaltung aus mehreren Transistoren ist. ist das, was ich beobachten kann (die approximierten Kurven, deren Parameterverteilungen ich mir anschaue). Was ist dann aber bzw. so intuitiv? Und da du meinst, die Approximierung kann hinreichend genau sein, wenn die Samples gut sind - ist das also wirklich vielleicht einfach vernachlässigbar, mal angenommen, die verfügbaren Daten sind sehr gut? Gibt es irgendeinen Begriff zu dieser Art von Problem im Allgemeinen? Es erinnert mich ein bisschen an Hidden Markov, allerdings hat man ja keine wirkliche Ahnung von den wirklichen States.
|
|
|
|
|
|
|
Weiß jemand, ob es in R Probleme mit der Unabhängigkeit von Zufallszahlen gibt, wenn man sich sehr viele auf einmal ausspucken laesst?
Also unterscheiden sich beispielsweise die Verteilungen von
rnorm(N) und c(rnorm(N/2), rnorm(N/2)) für sehr große N?
Hintergrund ist, dass 1 mal rnorm(n) natürlich viel schneller ist als n mal rnorm(1), also würde ich gerne aufs Ganze gehen und mir mit einer Zeile alles holen, was ich im Rest des Programms brauche.
|
|
|
|
|
|
|
Ich hätte keine Skrupel einen großen zufälligen Vektor zu samplen. Die Zahlen die da rauskommen haben ja nicht den Anspruch kryptographisch sicher zu sein sondern sollen nur nicht kaputte Verteilungen liefern und es würde mich wundern, wenn das der Fall wäre. Selten viel auf einmal samplen würde ich für viel besseren Stil halten als oft wenig. Wenn N größer wäre als sagen wir 1 Milliarde würde ich vielleicht langsam drüber nachdenken, aber ich glaube auch nicht, dass es da ein Problem gibt.
Homer: Ich antworte dir, wenn ich an einer Tastatur bin :-).
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von B0rG* am 22.12.2017 16:47]
|
|
|
|
|
|
Im Grunde folgendes Problem: ich simuliere bekanntermaßen K Pfade eines stochastischen Prozesses, sagen wir mal ich brauche pro Pfad und Zeitschritt eine Zufallszahl. Jetzt kann jeder Pfad zu zufälligen Zeiten fertig sein, ab dann muss ich ihn nicht mehr simulieren. Nach T Zeitschritten hören alle auf.
Brute Force: Ich ziehe mir K*T Zufallszahlen und allokiere die.
Problem: Skaliert nicht gut in K
Clever: Ich ziehe mir K Zufallszahlen, allokiere die, prüfe welche Pfade fertig sind (m viele). Im nächsten Zeitschritt muss ich nurnoch K-m Zufallszahlen ziehen, etc.
Problem: Viele kleine Samples und komplizierterer Code.
Goldener Mittelweg?: Ich ziehe mir so viele Zufallszahlen wie ich zu brauchen erwarte, wenn der Vorrat leer ist, fülle ich nach.
Problem: Noch komplizierter.
Programmieren eröffnet echt ganz neue Möglichkeiten der Quasiprokrastination.
|
|
|
|
|
|
|
Große Matrix samplen und schauen, obs daran scheitert. Premature optimization und so ;-). Wenn deine Trajektorien super kurz sind im Vergleich zu T mag das aber schon ins Gewicht fallen.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von B0rG* am 22.12.2017 17:16]
|
|
|
|
|
|
| Zitat von homer is alive
Okay, nur, dass ich das richtig verstehe.
ist die Verteilung, die ich haben möchte, um quasi zu wissen, wie normal oder speziell die Schaltung aus mehreren Transistoren ist. ist das, was ich beobachten kann (die approximierten Kurven, deren Parameterverteilungen ich mir anschaue). Was ist dann aber bzw. so intuitiv? Und da du meinst, die Approximierung kann hinreichend genau sein, wenn die Samples gut sind - ist das also wirklich vielleicht einfach vernachlässigbar, mal angenommen, die verfügbaren Daten sind sehr gut? Gibt es irgendeinen Begriff zu dieser Art von Problem im Allgemeinen? Es erinnert mich ein bisschen an Hidden Markov, allerdings hat man ja keine wirkliche Ahnung von den wirklichen States.
| |
ist die "globale" Verteilung des Parameters, der dich interessiert, über alle Transistoren hinweg. Sie beantwortet die Frage "Wenn ich einen zufälligen Transistor nehme und x messen würde, wie wäre das verteilt?". Es gibt dir die "Variabilität" von x. Hast du einen ganz spezfischen Transistor T in der Hand, dann ist die Verteilung dieses Parameters für diesen Transistor. In bester bayesianischer Manier ist das eine Verteilung und nicht ein fester Wert, weil du ihn nicht so genau weißt und diese Verteilung deine Unsicherheit über den wahren Wert repräsentiert.
Die Verwirrung über die Notation ist nachvollziehbar und ist einer "Abkürzung" in der Notation zuzuschreiben, die im Kontext von Machine Learning sehr üblich ist: Man identifiziert gern eine Zufallsvariable und eine spezifische Instanz dieser Zufallsvariable. Deine Transistoren "T" sind eine Zufallsvariable, aus denen du spezifische Instanzen ziehen kannst, da du einen Haufen Transistoren hast und wenn du einen davon nimmst quasi einen zufälligen in die Hand bekommst. Angenommen du ziehst einen ganz spezifischen Transistor "t" aus diesem Haufen, dann ist die Notation, die du vielleicht besser kennst, diese hier: . Das heißt "Was ist die Verteilung von x für Transistor t aus dem Haufen von Transistoren T?". Da man mit der Notation bei längeren Ausdrücken schnell schmerzen in der Hand bekommt und "t" normalerweise eh nicht so interessant ist, schreibt man einfach kurzerhand und meint damit, dass "T" mit einem (in Programmiersprachensprache) "anonymen" Transistor "instanziiert" wird. Anders ausgedrückt sind diesen beiden Ausdrücke äquivalent:
T ist in erster Linie also die Zufallsvariable deiner Transistoren und steht auch mal für irgendeinen dieser Transistoren. Wenn man da dann indizes hinhängt, also , dann meint man damit spezifische Samples aus der Zufallsvariable denen man Namen gibt, weil man sie irgendwie wichtig findet. und sind zwei Transistoren, die du von dem Haufen der möglichen Transistoren gezogen hast. Damit ist hoffentlich auch klar, welche Semantik p(T) hat: Es ist die Verteilung der verschiedenen möglichen Transistoren. Ein einfaches Beispiel: Sagen wir die Hälfte der Transistoren ist rot und die andere Hälfte ist grün (und ansonsten sind sie völlig gleich), dann hätte T eine Bernoulli-Verteilung mit Parameter 0.5.
Die Approximation des Integrals über Samples sagt aus, dass du, um die wahre Verteilung p(x) anzunähern, nicht wissen musst, wie die Transistoren verteilt sind (das kannst du wahrscheinlich nicht so wirklich). Stattdessen reicht es aus, Samples aus der Verteilung ziehen zu können - und das sollte für dich sehr einfach sein: Du misst einfach einen Haufen Transistoren. Aber: Die konkrete Ausgestaltung kommt sehr auf deine Problemstellung an.
Zuletzt der Name: Die Assoziation mit Hidden Markov Models ist schon nicht schlecht, in beiden Fällen formuliert man ein (bayesianisches) probabilistisches Modell und inferiert neues Wissen innerhalb des Modells. Ich wüsste aber jetzt keine konkrete Bezeichnung für dieses Vorgehen, außer, dass wir eben bayesianische Modellierung betreiben. Vielleicht weiß das ja jemand anders hier?
|
|
|
|
|
|
|
| Zitat von homer is alive
Hallo zusammen, ich bearbeite gerade eine Fragestellung, für die ich keinen richtigen Namen kenne und diesen eigentlich suche, damit ich weiß, wonach ich insgesamt suchen muss.
Angenommen, ich habe 100 verschiedene Datensätze (z.B. Messungen eines Versuchs, wobei der Versuch leicht variiert). Nun versuche ich jeden dieser Datensätze mit demselben Modell (z.B. lineare Regression mx+b) zu approximieren. Da die Versuche und somit die Datensätze variieren, unterscheiden sich auch die Parameter meiner Modelle und ich habe 100 verschiedene lineare Regressionen. Am Ende kann ich also Aussagen über die Verteilungen meiner Modellparameter (also m und b) treffen. Weiß jemand, wie man sowas nennt? Mein Betreuer nennt das Variationsmodellierung (da man so ja die Variation in den Modellen modellieren kann), aber er sagt, dass er den Begriff quasi erfunden hat. Und falls ihr verstanden habt, worum es geht - gibt es dazu auch alternative Ansätze?
Danke.
| |
Ich verstehe das Problem nicht- mach doch einfach, was du geschrieben hast?
- Skript schreiben, das einem die Protokolldateien ineinem Rutsch einliest und die Messwerte in ein oder mehrere Arrays packt. So weit, dass du das Skript ohne weiteres Zutun ausführen kannst.
- Den ersten Datensatz vornehmen und mit einer built-in-Fitfunktion einen (lineare, quadratische, whatever) Fit durchführen kannst. Solche Fitfunktionen können dann auch die ermittelten Fitparameter (und ihre Unsicherheiten) ausgeben. Das solltest du so weit automatisieren, dass du auch hier die jeweils ermittelten Fitparameter in ein neues Array eintragen kannst
- Danach ist die Frage, was du wirklich brauchst. Effektiv hast du ja jetzt einen neuen Datensatz aus Fitparametern jeweils in Abhängigkeit der Experimenteparameter. Die kannst du jetzt neu fitten (Fehlerfortpflanzung! Deine ermittelten Fitparameter haben bereits Unsicherheiten.) oder einen Mittelwert bilden oder was auch immer.
|
|
|
|
|
|
|
Ja, das ist richtig. Diesen Ansatz könnte man vermutlich einfach durchziehen. Allerdings ist auch die Frage, welche Methoden es noch gibt.
Das große Problem ist, dass man keine Ahnung hat, wie die Transistoren aufgebaut sind. D.h., wenn man einfach zufällige Transistoren nimmt und die alle zufällig "unpraktisch" aufgebaut sind, dann bekommt man ein instabiles System. Daher muss man einen Weg finden, um zu bestimmen, welche Transistoren "wahrscheinlich" sind und welche nicht, um diese dann aneinanderschalten zu können. Um dies zu bestimmen, bleibt einem eigentlich nur die Möglichkeit, Messungen an den Transistoren durchzuführen.
-> Dementsprechend haben wir eine jeweilige Kurven R²->R. Die einzige Möglichkeit, die wir momentan sehen, ist es, diese Kurven zu approximieren und die Verteilung der Funktionsparameter zu betrachten.
Aber gibt es noch etwas anderes als das, was hier nach dem Pfeil steht? Oder hat diese Methode einen Namen, gibt es dazu Literatur, etc.?
e/ Ich habe davon wenig Ahnung, aber ist das auch nicht einer Monte-Carlo-Simulation relativ ähnlich? Nur, dass man nicht alles nur simuliert, sondern eben echte Transistoren zur Hand nimmt?
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von homer is alive am 26.12.2017 11:40]
|
|
|
|
|
|
Die Methode, die Xerxes beschrieben hat, ist die sehr ähnlich zu der, die ich beschreiben habe, nur ohne mathematische Begründung. Was Xerxes einen Fit nennt ist in Wirklichkeit die Bestimmtung eines Posteriors ( in meiner Notation von oben zum Beispiel) und das Erstellen eines neuen Datensatzes und die Fehlerfortpflanzung ist gerade die Approximation des Integrals. Die probabilistische Formulierung gibt einem das Werkzeug an die Hand, das Verfahren im rechten Kontext zu sehen.
Zu deinen Fragen: Die Approximation des Integrals mittels Samples ist nur dann korrekt, wenn du aus den entsprechenden Verteilungen anständig samplen kannst. Wenn es dir nicht möglich ist, gute Samples aus zu ziehen, und du auch nicht weiß, in welcher "Art" deine Samples schlecht sind, kannst du deinem Ergebnis nicht vertrauen. Mein Gefühl ist aber, dass man anständige Samples schon hinbekommen sollte. An Messungen wirst du trotzdem nicht wirklich vorbei kommen, denn du brauchst ja .
Da ich nicht so genau weiß, welche Parameter dich eigentlich wirklich interessieren und wie man die anständig modelliert, kann ich dir nicht sagen, was eine gute Möglichkeit ist, um sie zu bestimmen. Ich weiß also nicht, ob es eine gute oder schlechte Idee ist, Kurven zu approximieren. Das sollte dir ja aber die (physikalische) Theorie verraten können?
Das Integral durch eine "Summe mit Samples" zu approximieren ist ein Monte-Carlo-Algorithmus. Diese Vermutung ist also richtig. Es ist unterheblich, wie du den -Teil beestimmst, der Teil, der dieses Vorgehen zu einem Monte-Carlo-Algorithmus macht, sind die Samples.
|
|
|
|
|
|
|
Testing ist ja grob unterteilt in Unit testing (einzelne Units), integration testing (Gruppen von units) und System testing (validation & verficiation).
Im wissenschaftlichen Kontext würde ich (neben Unit tests) testen, ob die Software bekannte Ergebnisse korrekt (innerhalb einer Toleranz) reproduziert. Würdet ihr das integration tests oder system tests nennen? Letzteres scheint ja eher eine formale Prozedur zu sein, die die Software mit den Requirements vergleicht...
Also, wie nennt man die Tests, die mit "make check" oder "make test" durchgeführt werden?
|
|
|
|
|
|
|
Tests[uite]
Eigentlich macht man sich keinen großen Kopf darum, wie genau jetzt ein Test heißt, weil einen das auch nicht schlauer macht " ob die Software bekannte Ergebnisse korrekt (innerhalb einer Toleranz) reproduziert" könnte man als "system verification" und "system validation" bezeichnen (der Unterschied ist iirc nicht die Methode, sondern "wessen" Anforderungen geprüft werden) oder als "smoke test" oder auch einfach als "Systemtest" bezeichnen. Integration testing ist das nicht, weil du da schaust, ob die Teile eines System (die einzeln schon getestet wurden) korrekt miteinander funktionieren.
|
|
|
|
|
|
|
Ja ich will den Studis ein bisschen was zum Testing erzählen, deshalb wollte ich die "Test-Theorie" ein bisschen verstehen und wiedergeben.
Wichtig ist ja eigentlich auch, dass ich mit dem Satz abschließe: "Echte Hacker brauchen keine Tests".
|
|
|
|
|
|
|
Testing and validation: Industry-standard testing regimes have been implemented including [...]. The testing procedures did not reveal anything interesting at all, since the system just passed all tests.
|
|
|
|
|
|
|
| Zitat von Oli
5. Bester Mod des Jahres (es zählen alle Forenmoderatoren)
Sharku
3. Bester Thread des Jahres (mit Link!)
pOT-PIMP
Der einzige Thread ohne Drama und Trolls.
| |
<3
That is what a 404 error feels like.
|
|
|
|
|
|
|
Moin.
Welche Software erlaubt es mir, eine Funktion an eine andere an zu fitten*?
Gnuplot fittet nur Funktionen an Datenpunkte an, Wolfram Alpha kriege ich gerade nichtmal die Funktion eingetrichtert die ich fitten möchte.
Beispiel: Suche das beste Verhältnis a/b, so dass möglichst a/(exp(0.9/x)-1)+ b/(exp(1.1/x)-1) = 1/(exp(1/x)-1)
* wenn man keinen Bereich angibt ist das natürlich nur sinnvoll, wenn sich die Funktionen für große und kleine Werte eh annähern.
|
|
|
|
|
|
|
Sample die Funktion doch, dann hast du datenpunkte.
Bzw. vergleiche einfach die gleichen x Werte. Verstehe das Problem nicht so recht.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Oli am 05.01.2018 18:37]
|
|
|
|
|
|
Samplen und Gnuplot benutzen geht natürlich und ist eine valide Lösung für das akute "Problem", aber wenn das auch bequem in "richtig" (aber immer noch numerisch) geht, wüsste ich gerne wie.
|
|
|
|
|
|
|
"Das beste Verhältnis" ist eine sehr subjektive Sache. Relativ zu welcher Metrik? Wenn du diese Metrik hast, dann kannst du daraus (sehr wahrscheinlich) ein Optimierungsproblem machen und selbiges lösen oder approximieren. Nichts anderes machen Gnuplot oder WolframAlpha. Die implementieren aber üblicherweise spezielle Verfahren (oftmals mit geschlossenen Lösungen).
Die Hauptaufgabe in deiner Formulierung ist, dass du deine Frage sehr "global" stellst, du bräuchtest also eine Metrik, die zwei Funktionen miteinander vergleicht. Ich kenne jetzt keine, die relativ einfach auszurechnen ist. Aber ich kann auch keine Funktionalanaylsis, es mag da schon was geben. Meine viel stärkere Vermutung ist aber, dass du das eigentlich gar nicht so wirklich meinst.
|
|
|
|
|
|
|
Mh, ich denke an sowas wie
- Fläche zwischen den Kurven minimieren
- Integral über das Quadrat der Differenz minimieren
Oder einfach das "richtige" Ergebnis liefern, wenn sich die eine Funktion als Summe der anderen darstellen lässt
|
|
|
|
|
|
|
Gibt es in Java einen ExecutorService, der verschiedenen für unterschiedliche "user" eine festgelegte Zahl an Tasks zulässt?
z.b. ich habe 20 Threads insgesamt, Aufgabe 1 darf 3 Tasks gleichzeitig laufen lassen, Aufgabe 2 10, etc...
|
|
|
|
|
|
|
Ist die Anzahl der user/Aufgaben dynamisch oder fix?
Sonst erzeuge doch einfach pro Aufgabe einen Executors.newFixedThreadPool(x) und pack die alle in irgendeine bequemere Verwaltung+Verteilungsklasse?
|
|
|
|
|
|
|
Ja, so mache ich das gerade. Wollte nur bookkeeping (in meinem) code reduzieren, falls es da etwas gibt.
|
|
|
|
|
|
|
Ich stehe gerade total auf dem Schlauch und traue kaum, mich zu fragen. Zwei MS SQL Datenbanken per Left Join verknüpft, da ich von der einen Tabelle nur die Einträge haben möchte, die in der anderen nicht vorhanden sind. Funktioniert einwandfrei.
Jetzt sind jedoch Einträge doppelt vorhanden, ist dem Anwendungszweck der Tabelle geschuldet. Es gibt jedoch eine Spalte mit einer ID, die in diesen Fällen auch doppelt ist. Der Einfachheit halber:
|
Code: |
ID, Name, Vorname, eingefügt am
1, Müller, Peter, 2017-10-10 11:11
2, Müller, Daniel, 2017-10-10 11:11
1, Müller, Peter, 2018-01-02 13:37 |
|
Diese vier Spalten möchte ich von der Abfrage auch ausgeworfen bekommen, also fällt Distinct aus, oder?
|
[Dieser Beitrag wurde 4 mal editiert; zum letzten Mal von K4ll1mer0 am 10.01.2018 11:53]
|
|
|
|
|
|
Da ist die ID aber nicht doppelt.
¤: Ich glaube ich verstehe nicht was du genau haben willst.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von SwissBushIndian am 10.01.2018 11:50]
|
|
|
|
|
|
|
Code: |
SELECT DISTINCT dbo.A_InBox.CO_ID, dbo.A.CO_Name, dbo.A.CO_Firstname, dbo.A.CO_Inserted FROM dbo.A
LEFT JOIN dbo.B
ON (dbo.LB_A.CO_ID = dbo.B_InBox.CO_ID)
WHERE B.CO_ID IS NULL AND A.CO_Inserted between '2017-04-10 00:00' and '2018-01-10 00:00' and A_InBox.CO_Content like '%2017%'
|
|
Das ist die Abfrage wie ich sie eigentlich gerne hätte. Scheitert aber daran, dass es in CO_Inserted keine Duplikate gibt (Anlegedatum).
|
|
|
|
|
|
|
Du willst ein Subquery haben, um sowas zu erreichen. Dann selectest du distinct auf der ID.
¤: Sorry, SO war einfacher als ein Beispiel zusammenzuzimmern. Du könntest auch eine common table expression nutzen, da kenne ich aber die Syntax für MSSQL nicht gut genug.
|
[Dieser Beitrag wurde 2 mal editiert; zum letzten Mal von SwissBushIndian am 10.01.2018 12:11]
|
|
|
|
|
Thema: pOT-lnformatik, Mathematik, Physik XXI ( X-Ray-Edition ) |
|