Schaltungssystem nur ergebnis
Schaltungssysteme \( \quad(5 \) Punkte) Konstruieren Sie eine "Und"-Schaltung mit 8 Eingängen, also eine Schaltung, die den Ausdruck \( a \wedge b \wedge c \wedge d \wedge e \wedge f \wedge g \wedge h \) implementiert.  
(a) Benutzen Sie hierfür nur \( N A N D \) -Gatter mit zwei Eingängen.  
(b) Benutzen Sie hierfür nur \( N O R \) -Gatter mit zwei Eingängen.  
Bei dieser Aufgabe müssen Sie keinen Lösungsweg, sondern nur das Ergebnis angeben.
Guckst du hier: <https://www.stacklounge.de/6412/schaltungssysteme-nand-gatter-und-nor-getter>
Aloha :)


Ich hoffe, dass ich den Aufbau der Determinante richtig verstanden habe. Um die Idee zu verdeutlichen, schreibe ich die ersten 4 Fälle einfach mal auf:


Bei \(n=1\) ist nicht viel zu tun:$$D\_1=\left|\begin{array}{c}1\end{array}\right|=1$$


Bei \(n=2\) addiere ich Zeile 1 zu Zeile 2 und ziehe danach aus Zeile 2 den Faktor vor die Determinante:$$D\_2=\left|\begin{array}{c}1 & 1\\-1 & 1\end{array}\right|=\left|\begin{array}{c}1 & 1\\0 & 2\end{array}\right|=2\cdot\left|\begin{array}{c}1 & 1\\0 & 1\end{array}\right|=2$$
  



Bei \(n=3\) addiere ich Zeile 1 zu Zeile 2 und ziehe danach aus Zeile 2 den Faktor vor die Determinante:$$D\_3=\left|\begin{array}{c}1 & 1 & 0\\-1 & 1 & 4\\0 & -1 & 1\end{array}\right|=\left|\begin{array}{c}1 & 1 & 0\\0 & 2 & 4\\0 & -1 & 1\end{array}\right|=2\cdot\left|\begin{array}{c}1 & 1 & 0\\0 & 1 & 2\\0 & -1 & 1\end{array}\right|$$Jetzt addiere ich weiter Zeile 2 zu Zeile 3 und ziehe aus Zeile 3 den Faktor vor:$$\phantom{D\_3}=2\cdot\left|\begin{array}{c}1 & 1 & 0\\0 & 1 & 2\\0 & 0 & 3\end{array}\right|=2\cdot3\cdot\left|\begin{array}{c}1 & 1 & 0\\0 & 1 & 2\\0 & 0 & 1\end{array}\right|=6$$


Bei \(n=4\) wiederhole ich zunächst alle Schritte vom Fall \(n=3\):


$$D\_4=\left|\begin{array}{c}1 & 1 & 0 & 0\\-1 & 1 & 4 & 0\\0 & -1 & 1 & 9\\0 & 0 & -1 & 1\end{array}\right|=\left|\begin{array}{c}1 & 1 & 0 & 0\\0 & 2 & 4 & 0\\0 & -1 & 1 & 9\\0 & 0 & -1 & 1\end{array}\right|=2\cdot\left|\begin{array}{c}1 & 1 & 0 & 0\\0 & 1 & 2 & 0\\0 & -1 & 1 & 9\\0 & 0 & -1 & 1\end{array}\right|$$$$\phantom{D\_4}=2\cdot\left|\begin{array}{c}1 & 1 & 0 & 0\\0 & 1 & 2 & 0\\0 & 0 & 3 & 9\\0 & 0 & -1 & 1\end{array}\right|=2\cdot3\cdot\left|\begin{array}{c}\underline1 & \underline1 & \underline0 & 0\\\underline0 & \underline1 & \underline2 & 0\\\underline0 & \underline0 & \underline1 & 3\\0 & 0 & -1 & 1\end{array}\right|$$Man erkennt die letzte Determinante aus der Berechnung von \(D\_3\) wieder (unterstrichene Einträge), nur sind jetzt noch die 3 Elemente in der rechten unteren Ecke dazu gekommen, alle anderen zusätzlichen Einträge sind 0. Wir können daher noch einen weiteren Schritt (Addition der vorletzten Zeile zur letzten und Faktor herausziehen) durchführen:$$\phantom{D\_4}=2\cdot3\cdot\left|\begin{array}{c}1 & 1 & 0 & 0\\0 & 1 & 2 & 0\\0 & 0 & 1 & 3\\0 & 0 & 0 & 4\end{array}\right|=2\cdot3\cdot4\cdot\left|\begin{array}{c}1 & 1 & 0 & 0\\0 & 1 & 2 & 0\\0 & 0 & 1 & 3\\0 & 0 & 0 & 1\end{array}\right|=24$$


Damit ist klar, dass: \(D\_n=n!\)


Dieses Vorgehen kannst du, wenn verlangt, noch in einen sauberen Induktionsbeweis packen. Die Beweisidee sollte zumindest jetzt klar sein ;) <p>in späteren versionen von pandas ergibt dies einen typeerror:</p><pre><code>df.replace('-', none) typeerror: if "to\_replace" and "value" are both none then regex must be a mapping </code></pre><p>sie können dies tun, indem sie entweder eine liste oder ein wörterbuch übergeben:</p><pre><code>in [11]: df.replace('-', df.replace(['-'], [none]) # or .replace('-', {0: none}) out[11]: 0 0 none 1 3 2 2 3 5 4 1 5 -5 6 -1 7 none 8 9 </code></pre><p>ich empfehle jedoch die verwendung von nans anstelle von none:</p><pre><code>in [12]: df.replace('-', np.nan) out[12]: 0 0 nan 1 3 2 2 3 5 4 1 5 -5 6 -1 7 nan 8 9 </code></pre> <p>ich denke, dies wirft weitere fragen und potenzielle probleme auf:</p><ol> <li>ist es wirklich notwendig, zwei getrennte arten von feldern für diese arten von zahlen zu haben? die tatsache, dass sie probleme haben, sie richtig zu kennzeichnen, bedeutet, dass dies wahrscheinlich zu einer schlechten benutzererfahrung führt.</li> <li>was ist, wenn der benutzer der meinung ist, dass die antwort eine dezimalstelle enthält, aber nur eine ganze zahl eingeben darf? sollten sie auf- oder abrunden?</li> <li>gibt es eine möglichkeit, sie nur mit einem nummernfeld zu versehen und den rest programmgesteuert zu erledigen? vielleicht dezimalstellen runden oder entfernen?</li> </ol><p>wenn sie sie nicht zu einem feldtyp kombinieren können, können sie sie auf jedem etikett explizit angeben:</p><ul> <li>geben sie eine zahl ein (dezimalstellen erlaubt)</li> <li>geben sie eine zahl ein (keine dezimalstellen)</li> </ul> <h2>es kommt darauf an ™</h2><p>die fähigkeit, einen oder mehrere cursor zu umgehen, hängt davon ab, was in diesem cursor ausgeführt wird. ohne zu wissen, was darin vor sich geht, gibt es keine möglichkeit zu sagen. es kann sein, dass es keine problemumgehung gibt und sie eine zeilenweise verarbeitung durchführen müssen.</p><p>nachfolgend einige beispiele.</p><h2>funktioniert nicht in sets</h2><p>dieses beispiel ist das grundlegendste und ist einfach die tatsache, dass sie ihr gesamtes dataset oder teile ihres datasets auf einmal abfragen können, aber der cursor wurde erstellt und fragt die daten zeilenweise ab. übliche, durch die dies ersetzt werden kann, sind <code>join</code>, <code>cross apply</code>/<code>outer apply</code> und andere.</p><p><strong> betrachten sie den folgenden datensatz: </strong></p><pre><code>create table dbo.lotr(lotrid int, charactername varchar(255), val varchar(255)); create table dbo.lotrattributes(lotrattributeid int, lotrid int, attrval varchar(255)); insert into dbo.lotr(lotrid,charactername,val) values(1,'frodo','ring') ,(2,'gandalf','staff'); insert into dbo.lotrattributes(lotrid,lotrattributeid,attrval) values(1,1,'ringattribute1') ,(1,2,'ringattribute2') ,(1,3,'ringattribute3') ,(2,4,'staffattribute1') ,(2,5,'staffattribute2'); </code></pre><p>man könnte versuchen, jeden datensatz zu finden, und er stimmt separat überein, indem man die tabelle <code>lotr</code> durchläuft.</p><p><strong> cursor: </strong></p><pre><code>declare @lotrid int declare c cursor for select lotrid from dbo.lotr; open c fetch next from c into @lotrid; while @@fetch\_status = 0 begin select lotrattributeid from dbo.lotrattributes where lotrid = @lotrid; fetch next from c into @lotrid; end close c deallocate c </code></pre><p><strong> das ergebnis sind zwei ergebnismengen </strong></p><pre><code>lotrattributeid 1 2 3 lotrattributeid 4 5 </code></pre><p><strong> wenn dieses <code>inner join</code> verwendet wird, erhalten wir das gleiche ergebnis wie eine ergebnismenge. </strong></p><pre><code>select lotrattributeid from dbo.lotr l inner join dbo.lotrattributes la on l.lotrid = la.lotrid; lotrattributeid 1 2 3 4 5 </code></pre><hr><h2>string-manipulation</h2><p>häufig wird <code>for xml path('')</code> verwendet, um zeichenfolgenmanipulationen innerhalb von cursorn zu ersetzen.</p><p><strong> datensatz </strong></p><pre><code>create table dbo.lotr(lotrid int, charactername varchar(255), val varchar(255)); create table dbo.lotrattributes(lotrattributeid int, lotrid int, attrval varchar(255)); insert into dbo.lotr(lotrid,charactername,val) values(1,'frodo','ring'); insert into dbo.lotrattributes(lotrid,lotrattributeid,attrval) values(1,1,'ringattribute1') ,(1,2,'ringattribute2') ,(1,3,'ringattribute3'); </code></pre><p><strong> doppelcursor mit string-manipulation </strong></p><pre><code>declare @lotrid int, @charactername varchar(255), @val varchar(255) declare @lotrattributeid int, @attrval varchar(255) declare c cursor for select lotrid,charactername, val from dbo.lotr open c fetch next from c into @lotrid,@charactername,@val while @@fetch\_status = 0 begin set @charactername +='|'+ @val declare d cursor for select lotrattributeid, attrval from dbo.lotrattributes where lotrid = @lotrid open d fetch next from d into @lotrattributeid,@attrval while @@fetch\_status = 0 begin set @charactername +='['+@attrval+ '],' fetch next from d into @lotrattributeid,@attrval end close d deallocate d fetch next from c into @lotrid,@charactername,@val end close c deallocate c select left(@charactername,len(@charactername)-1); </code></pre><p><strong> ergebnis </strong></p><pre><code>(no column name) frodo|ring[ringattribute1],[ringattribute2],[ringattribute3], </code></pre><p><strong> entfernen der cursor mit for xml path ('') </strong></p><pre><code>select l.charactername +'|'+ l.val + (select stuff((select ','+quotename(attrval) from dbo.lotrattributes la where la.lotrid = l.lotrid for xml path('')), 1, 1, '')) from dbo.lotr l; </code></pre><h2>* *</h2><p>die eigentliche problemumgehung besteht darin, herauszufinden, warum die daten auf diese weise dargestellt werden, und die anwendung zu ändern, um sie nicht in diesem format zu benötigen, und sie irgendwo zu speichern.</p><p>wenn ihre hände gebunden sind, wäre dies das nächstbeste.</p><hr><h2>fügen sie die top-10-werte in eine temporäre tabelle ein, basierend auf den ids in einer anderen tabelle</h2><p><strong> daten </strong></p><p>create table dbo.sometable (inserttableid int, val varchar (255)); create table dbo.top10table (top10tableid int, inserttableid int, val varchar (255));</p><pre><code>insert into dbo.sometable(inserttableid,val) values(1,'bla') ,(2,'blabla'); insert into dbo.top10table(top10tableid,inserttableid,val) values(1,1,'wuw') ,(2,1,'wuw') ,(3,1,'wuw'); </code></pre><p><strong> cursor </strong></p><pre><code>create table #top10values(top10tableid int, inserttableid int, val varchar(255)) declare @inserttableid int; declare c cursor for select inserttableid from dbo.sometable; open c fetch next from c into @inserttableid; while @@fetch\_status =0 begin insert into #top10values(top10tableid,inserttableid,val) select top(10) top10tableid,inserttableid,val from dbo.top10table where inserttableid = @inserttableid order by top10tableid fetch next from c into @inserttableid; end close c deallocate c select * from #top10values; drop table #top10values; </code></pre><p><strong> ergebnis </strong></p><pre><code>top10tableid inserttableid val 1 1 wuw 2 1 wuw 3 1 wuw </code></pre><p><strong> ersetzen des cursors durch <code>cross apply</code> und ein <code>cte</code> </strong></p><pre><code>create table #top10values(top10tableid int, inserttableid int, val varchar(255)); ;with cte as ( select inserttableid from dbo.sometable ) insert into #top10values(top10tableid,inserttableid,val) select t1t.top10tableid,t1t.inserttableid,t1t.val from cte cross apply (select top (10) top10tableid,inserttableid,val from dbo.top10table t1t where t1t.inserttableid = cte.inserttableid ) t1t ; select * from #top10values; drop table #top10values; </code></pre><hr><h2>andere beispiele</h2><ul> <li>ein beispiel zum ersetzen eines cursors zur auswahl eines dynamischen satzes von artikeln pro lieferant mithilfe von <code>cross apply</code> <a href="https://dba.stackexchange.com/questions/100761/replacing-a-cursor-with-a-single-query-possible">hier</a> .</li> <li>ein beispiel für die verwendung von fensterfunktionen zum ersetzen eines cursors <a href="https://dba.stackexchange.com/questions/127083/improve-a-query-using-cursor-to-set-based-approach">hier</a> .</li> </ul><hr><p><strong> manchmal gibt es keine andere wahl </strong></p><p>wenn sie nicht in sätzen arbeiten können und zeilenweise arbeiten müssen, können sie den cursor trotzdem optimieren.</p><p>eine der größten änderungen bei der beschleunigung des cursors ist das hinzufügen von <code>local fast\_forward</code>.</p><pre><code>declare c cursor local fast\_forward for select lotrid from dbo.lotr </code></pre><p>schauen sie sich <a href="https://sqlperformance.com/2012/09/t-sql-queries/cursor-options">diesen blogpost</a> von @aaronbertrand an, wo er die möglichen leistungsunterschiede erklärt, wenn cursoreinstellungen wie <code>local</code> &amp; <code>fast\_forward</code> verwenden oder nicht.</p> <p>ja, ich würde sagen, dass sie nur zeichen akzeptieren sollten, die dem feld entsprechen. wenn es sich um eine telefonnummer handelt, sollten sie auch zeichen wie: () - + akzeptieren.</p><p><strong>allerdings</strong> sollten sie die person wissen lassen, dass eine ungültige taste gedrückt wurde, anstatt nichts zu tun. andernfalls könnten sie sie frustrieren. beispiele sind: eine kleine fehlermeldung, die neben dem feld angezeigt und dann ausgeblendet wird; oder ändern sie einfach die rahmenfarbe in rot, bevor sie sie wieder einblenden.</p> Entweder durch 4 Regeln, wie von GF123 beschrieben, oder als Formel über:  

"Formel zur Ermittlung der zu formatierenden Zellen verwenden" und dann als Formel, für z.B. die Zelle A1:  

=ODER($A$1="a";$A$1="d";$A$1="g";$A$1="j")  

Klappt es? <p>wenn dies meine entwurfsentscheidung wäre, würde ich wahrscheinlich eher eine option c (modifizierte option a) wählen.</p><h3>erstens, warum nicht 'option b':</h3><p>zum einen gefällt mir die klarheit, dass jedes produkt seinen eigenen tisch hat. wenn es sich nur um eine große tabelle mit einem feld zur bestimmung des typs handelt, ist die beziehung nicht so klar.</p><p>zum anderen würde die indizierungsstrategie immer erfordern, dass dieses typfeld aufgelistet wird. da es sich nur um 4 typen handelt, ist die indexkardinalität extrem niedrig (<code>select * from product\_table where type='x'</code> führt im grunde sowieso einen vollständigen tabellenscan durch)</p><h3>option c.</h3><ul> <li>erstellen sie eine übergeordnete tabelle, die nur die spalten enthält, die alle typen gemeinsam nutzen</li> <li>erstellen sie jeden produkttyp als eigene tabelle mit ihren einzelnen spalten, mit einem zusätzlichen: ein link zur übergeordneten tabelle</li> <li>erstellen sie jede 'link'-tabelle: product\_option, model\_option usw. mit links zu den jeweiligen schlüsseln.</li> <li>für diejenigen mit wechselseitigen links (model\_option, option\_model) erstellen sie auch diese tabellen. dies erhöht die klarheit ihrer joins für alle, die sich das ansehen.</li> </ul><p>der nachteil ist die komplexität, sicherzustellen, dass waisen vermieden werden, wenn dinge aktualisiert/gelöscht werden, und zunächst die abfragen zu entwerfen, die diese tabellen verwenden.</p> <p>ich würde mich zur tabs-lösung beugen. im moment verwenden sie viel vertikalen raum, und wenn zwei listen übereinander liegen, ist die anzeige schwierig. stellen sie sich vor, sie haben diese beiden toolboxen aus ihrem beispiel übereinander.</p><p>der ansatz mit registerkarten spart platz und ermöglicht es ihnen, einige coole dinge zu erledigen, z. b. kleine hinweise im apple-stil auf der registerkarte, die die anzahl neuer oder wichtiger elemente in dieser registerkarte anzeigen. sie müssen nicht einmal per se "tabulatoren" sein - nur schaltflächen, die den status des bedienfelds unter ihnen umschalten.</p> (1) Sei \( X \) eine *nicht-leere* Menge.  

(2) Sei \( \mathcal{M} \subseteq \mathcal{P}(X) \) ein Mengensystem mit \( \emptyset \in \mathcal{M} \) als Teilmenge der Potenzmenge von \( X \).

Dann ist `\[ \varphi: \mathcal{M} \rightarrow \mathbb{C} \]` 
eine Mengenfunktion auf \( \mathcal{M} \). Je nach Notwendigkeit kann \( \mathbb{C} \) auf die erweiterte reelle Zahlen \( \bar{\mathbb{R}} \) oder auf positive reelle Zahlen \( \mathbb{R}\_+ \) eingeschränkt werden.

**Beispiel: Elemente-zählende Mengenfunktion**Sei das Mengensystem \( \mathcal{M} = \{ \emptyset,~ \{7\},~ \{42, 17, 0\} \} \). Dann kann die Mengenfunktion beispielsweise die Einträge der Elemente von \( \mathcal{M} \) zählen:`\[ \varphi(\emptyset) ~=~ 0, ~~~ \varphi(\{7\}) ~=~ 1, ~~~ \varphi(\{42,~ 17,~ 0\}) ~=~ 3 \]` > 
> Was bring mir die Anwendung der Ableitung, bei der Lösung dieser Frage?


Wenn ein Extrempunkt über Null und der nächste unter Null liegt muss es dazwischen eine Nullstelle geben. Zumindest wenn sie im gesamten Intervall definiert und stetig ist.


Könntest du die Graphen der Terme auf beiden Seiten der Gleichung skizzieren? Könntest du auch den Graphen des Polynoms skizzieren?


Skizze 1:


~plot~ e^(x/5);2x-5;[[-1|20|-1|30]] ~plot~
  



Skizze 2:


f(x) = 20·x^6 + 52·x^5 - 15·x^4 - 80·x^3 - 40·x^2 + 6


f'(x) = 120·x^5 + 260·x^4 - 60·x^3 - 240·x^2 - 80·x = 0 --> x = - 2/3 ∨ x = - 1/2 ∨ x = -2 ∨ x = 1 ∨ x = 0


lim (x --> -∞) f(x) = ∞
  
irgendwo eine Nullstelle
  
f(-2) = -138
  
irgendwo eine Nullstelle
  
f(- 2/3) = 2822/729
  
f(- 1/2) = 15/4
  
f(0) = 6
  
irgendwo eine Nullstelle
  
f(1) = -57
  
irgendwo eine Nullstelle
  
lim (x → ∞) f(x) = ∞


Ich zähle 4 Nullstellen.


![blob.png](https://www.mathelounge.de/?qa=blob&qa_blobid=14239716518743424658)