Algorithmen, Teil IX.: Computer und andere Haustiere

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Unsere Datenschutzerklärung wurde aktualisiert. Mit der Nutzung unseres Forums akzeptierst Du unsere Datenschutzerklärung. Du bestätigst zudem, dass Du mindestens 16 Jahre alt bist.

    • Hallo p. specht,

      die Anleitung zum Herunterladen von Videos bei Youtube mussten wir leider löschen, das Vorgehen verstößt gegen die Google-Richtlinien zur Nutzung des Dienstes. Würde wir das stehen lassen, bekommen wir (wieder) Ärger mit Google.

      Gruß
      Schwabenpfeil!
      Meine aktuellen Bücher: Windows 7 Tipps & Tricks · · Windows 10 Schritt für Schritt erklärt · · Windows 10 Tipps & Tricks · · Gern zum Schlern

      »Nur wo du zu Fuß warst, bist du auch wirklich gewesen.«
      Johann Wolfgang von Goethe.
    • Sorry, das wusste ich nicht. Ich dachte, zumindest eigene Videos, z.B. meine Lehrvideos, düfte ich jederzeit dort runterladen, wo Kursteilnehmern kein Youtube erlaubt ist. Wäre ganz praktisch gewesen, Youtube sozusagen als Cloud zu nutzen. Aber wenn die das nicht erlauben, dann natürlich nicht - wir sind ja brave Staatsbürger! :vertrag:

      "Aber jetzt zu etwas ganz anderem..." (Monty Python):

      Abt. Wampe weg
      ===========
      Die Idee, einen Kalorien-Rechner zu programmieren, hatte ich zwar schon länger, aber andere waren da schneller (seit DOS-Zeiten!) und vor allem viel besser! Einem Einzelprogrammierer mangelt es ja oft auch an den notwendigen Daten zu Inhaltsstoffen und deren Mengen in diversen Speisen. Ausserdem fehlt oft eine Umrechnung auf übliche Gebrauchsmengen wie "Tasse","Becher", Stück kleine Kartoffeln etc. Ein vollständiges Freeware-Programm, daß auch solche Wünsche erfüllt, ist Kaloma. In der Entwicklerversion 5.0 werden dabei sogar individuelle Speisezusammenstellungen bewertet ausgegeben. Super Teil! :thumbsup: Weiteres Plus: Die Kalorientabellen gibt es extra, und zwar gleich zwei verschiedene! Das eröffnet für Entwickler weitere Möglichkeiten (Erlaubnis zur Nutzung vorausgesetzt).

      Ich beispielsweise wäre an einer Umrechnung in "Broteinheiten" interessiert, für einen Verwandten mit Diabetes. Diät ist nämlich nicht gleich Diät, und manche Menschen benötigen einerseits genau die Kalorien, um nicht dicker zu werden, dürfen aber andererseits nur eine bestimmte Menge an Kohlehydraten oder aber Fettstoffen zu sich nehmen.

      Dazu böte sich mathematisch der bekannte Simplex-Algorithmus an: So könnte man einerseits die genannten Grenzwerte einhalten, dabei aber den Magen doch recht gut füllen. Einziges Problem: Man müßte die jeweils gekochte Speise für einige Zeit sperren, sonst kommt der Algorithmus immer zur selben Speisenzusammenstellung - und die würde einem schon bald zum Halse raushängen. Na, mal sehen...
      Gruß
      Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,xpse,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB3
    • Abt. Kalorien je Gramm in Speisen
      =====================
      Die Sättigungsampel der Deutschen Apothekervereinigung gibt an, mit welchen Lebensmitteln man ohne viel überschüssige Kalorien zu mampfen satt wird. Das nachstehende Progrämmchen soll einen ersten Baustein zum im vorangehenden Beitrag erwähnten Langfrist-Ziel eines Optimierungsprogramms darstellen, - und sonst nix! Immerhin haben wir nun diese Public-Domain-Daten im Xprofan-Format vorliegen. Hat jemand Lust, ein Ratespiel daraus zu machen?
      Gruss

      Quellcode

      1. WindowTitle "Sättigungsampel der Deutschen Apothekervereinigung"
      2. ' Quelle: Public Domain - www.apothekenumschau.de - 23570513937.pdf
      3. ' Bezeichnung, Kalorien pro Gramm, Ampelfarbe (red,yellow,green = r y g)
      4. WindowStyle 24:font 2:Window %maxx*0.4,%maxy*0.8
      5. locate 2,2:print " Eintrag Kalorien je Gramm \n"
      6. Var Werte$="# Brot \n"+\
      7. "y, Schwarzbrot, 1.9 - 2.2 \n"+\
      8. "y, Graubrot, 1.9 - 2.2 \n"+\
      9. "r, Weißbrot, 2.5 \n"+\
      10. "r, Knäckebrot, 3.2 \n"+\
      11. "r, Croissant, 4.3 \n"+\
      12. \
      13. "#Beilagen mit Kohlenhydraten \n"+\
      14. \
      15. "g, Kartoffeln, 0.7 \n"+\
      16. "g, Kartoffelsalat mit Essig und Öl, 1.0 \n"+\
      17. "y, Kartoffelsalat mit Mayonnaise, 2.1 \n"+\
      18. "g, Kartoffelkloßteig (Ö: Kartoffelknödel), 1.1 \n"+\
      19. "g, Bratkartoffeln, 1.3 \n"+\
      20. "g, Reis, 1.1 \n"+\
      21. "g, Nudeln, 1.4 \n"+\
      22. "g, Vollkornnudeln, 1.4 \n"+\
      23. "y, Kroketten, 1.9 \n"+\
      24. "y, Spätzle, 1.8 \n"+\
      25. "r, Pommes frites (aus Friteuse), 2.9 \n"+\
      26. \
      27. "# Fleisch \n"+\
      28. \
      29. "g, Hähnchenbrustfilet, 1.0 \n"+\
      30. "g, Putenschnitzel, 1.0 \n"+\
      31. "g, Rindfleisch mager, 1.0 \n"+\
      32. "g, Kalbfleisch mager, 1.0 \n"+\
      33. "g, Rindersteak, 1.2 \n"+\
      34. "y, Rinderhackfleisch (Ö: Faschiertes), 2.2 \n"+\
      35. "r, Hackfleisch gemischt (Ö: Fettes Faschiertes), 2.6 \n"+\
      36. "g, Schweineschnitzel Natur, 1.1 \n"+\
      37. "r, Schweineschnitzel paniert, 3.2 \n"+\
      38. "g, Schweinskotelett, 1.5 \n"+\
      39. "y, Frikadelle/Bullette/Fleischpflanzerl/Ö: Faschiertes Laibchen, 2.1 \n"+\
      40. "y, Ente, 2.3 \n"+\
      41. "r, Gans, 3.4 \n"+\
      42. \
      43. "# Käse \n"+\
      44. \
      45. "g, Frischkäse 5 % Fett absolut, 1.1 \n"+\
      46. "g, Kräuterquark_(Ö:Topfen), 1.4 \n"+\
      47. "y, Mozzarella light, 1.6 \n"+\
      48. "g, Speisequark 40% FiT, 1.4 \n"+\
      49. "y, Frischkäse 16 % Fett absolut, 2.0 \n"+\
      50. "r, Mozzarella, 2.5 \n"+\
      51. "r, Frischkäse 60 % Fett, 2.9 \n"+\
      52. "r, Gouda, 3.5 \n"+\
      53. "r, Edamer, 3.5 \n"+\
      54. "r, Raclette. 45 % FiT, 3.5 \n"+\
      55. "r, Camembert 45 % FiT, 2.9 \n"+\
      56. "r, Mascarpone, 4.6 \n"+\
      57. \
      58. "# Wurst & Aufschnitt \n"+\
      59. \
      60. "g, Gekochter Schinken, 1.3 \n"+\
      61. "g, Kalter Braten, 1.4 \n"+\
      62. "g, Geräucherter Schinken, 1.5 \n"+\
      63. "g, Energiearme Wurst/Würstchen, 0.8 - 1.3 \n"+\
      64. "y, Bierschinken, 1.7 \n"+\
      65. "r, Landjäger, 4.6 \n"+\
      66. "r, Wiener Würstchen/Gelbwurst/Ö: Frankfurter, 2.8 \n"+\
      67. "r, Bratwurst, 3.1 \n"+\
      68. "r, Salami, 3.7 \n"+\
      69. "r, Leberwurst, 3.0 \n"+\
      70. "r, Leberkäs, 3.0 \n"+\
      71. \
      72. "# Obst & Gemüse \n"+\
      73. \
      74. "g, Obst (im Durchschnitt), 0.5 \n"+\
      75. "r, Trockenobst (im Durchschnitt), 2.7 \n"+\
      76. "g, Grüner Salat, 0.1 \n"+\
      77. "y, Salatsoße, 0.3 - 4.5 \n"+\
      78. "g, Gemüse (im Durchschnitt), 0.2 \n"+\
      79. "g, Tiefkühlgemüse, 0.2 - 1.2 \n"+\
      80. "r, Oliven schwarz, 3.5 \n"+\
      81. \
      82. "# Fette \n"+\
      83. \
      84. "r, Öl, 9.0 \n"+\
      85. "r, Butter, 8.0 \n"+\
      86. "r, Margarine, 8.0 \n"+\
      87. "r, Becel plus, 4.5 \n"+\
      88. "r, Halbfettbutter/-margarine, 3.7 \n"+\
      89. \
      90. "# Süßer Brotaufstrich \n"+\
      91. \
      92. "r, Honig, 3.3 \n"+\
      93. "r, Konfitüre / Marmelade, 2.7 \n"+\
      94. "r, Nussnougatcreme, 5.2 \n"+\
      95. \
      96. "# Fertiggerichte & Fastfood \n"+\
      97. \
      98. "g, Suppen, 0.3 - 0.8 \n"+\
      99. "g, Eier, 1.5 \n"+\
      100. "g, Eintöpfe (Konserve), 0.2 - 0.9 \n"+\
      101. "y, Hamburger, 2.4 \n"+\
      102. "y, Döner, 2.1 \n"+\
      103. "y, Fischstäbchen, 2.0 \n"+\
      104. "r, Tiefkühlpizza, 2.1 - 2.9 \n"+\
      105. \
      106. "# Müsli / Joghurt \n"+\
      107. \
      108. "g, Joghurt mit Früchten - gezuckert 1.5% Fett, 0.8 \n"+\
      109. "g, Joghurt mit Früchten - gezuckert 3.5% Fett, 0.9 \n"+\
      110. "r, Müsli (trocken), 3.1 - 4.4 \n"+\
      111. "r, Fruchtriegel / Müsliriegel, 3.2 - 4.2 \n"+\
      112. \
      113. "# Fisch \n"+\
      114. \
      115. "g, Seelachs, 0.8 \n"+\
      116. "g, Zander, 0.8 \n"+\
      117. "g, Kabeljau, 0.8 \n"+\
      118. "g, Krabben, 0.9 \n"+\
      119. "g, Forelle, 1.0 \n"+\
      120. "y, Sushi, 1.6 \n"+\
      121. "y, Makrele, 1.8 \n"+\
      122. "y, Lachs, 2.0 \n"+\
      123. "y, Heringsfilet in Tomatensoße, 2.0 \n"+\
      124. "r, Panierter Fisch, 3.2 \n"+\
      125. \
      126. "# Soßen \n"+\
      127. \
      128. "g, Braune bis helle Soßen, 0.4 - 1.1 \n"+\
      129. "g, Tomatensauce, 0.6 - 1.3 \n"+\
      130. "g, Saure Sahne (Ö: Sauermilch), 1.2 \n"+\
      131. "y, Cocktailsoße, 2.0 \n"+\
      132. "r, Sauce Holandaise, 4.4 - 5.7 \n"+\
      133. "r, Pesto, 3.6 - 5.8 \n"+\
      134. "r, Mayonnaise, 7.4 \n"+\
      135. "r, Sahne (Ö: Obers), 3.1 \n"+\
      136. "r, Crème Fraiche, 3.8 \n"+\
      137. \
      138. "# Knabbereien \n"+\
      139. \
      140. "r, Nüsse, 5.7 - 7.0 \n"+\
      141. "r, Kartoffelchips, 5.3 \n"+\
      142. "r, Reiskräcker, 3.8 \n"+\
      143. "r, Popcorn, 3.7 \n"+\
      144. "r, Salzstangen Ö: Soletti, 3.5 \n"+\
      145. \
      146. "# Süßigkeiten / Desserts \n"+\
      147. \
      148. "g, Pudding (aus dem Kühlregal), 0.6 - 1.2 \n"+\
      149. "g, Milchreis (aus dem Kühlregal), 0.6 - 1.2 \n"+\
      150. "y, Sahnepudding, 1.5 - 1.6 \n"+\
      151. "y, Eis, 1.4 - 2.9 \n"+\
      152. "y, Kaiserschmarrn, 2.4 \n"+\
      153. "r, Vollmilchschokolade, 5.4 \n"+\
      154. "r, Weiße Schokolade, 5.4 \n"+\
      155. "r, Edelbitterschokolade, 5.3 \n"+\
      156. "r, Marzipan, 4.9 \n"+\
      157. "r, Tiramisu (selbst gemacht), 2.6 \n"+\
      158. "r, Mousse (Schokolade+Vanille+Wein:selbst gemacht), 3.3 \n"+\
      159. \
      160. "# Kuchen \n"+\
      161. \
      162. "y, Obstkuchen aus Hefeteig, 1.8 \n"+\
      163. "r, Rührkuchen, 3.6 \n"+\
      164. "r, Sahnetorte (Ö: Topfentorte), 3.7 \n"+\
      165. "r, Blätterteiggebäck, 3.3 \n"+\
      166. \
      167. "# Getränke \n"+\
      168. \
      169. "g, Wasser, 0 \n"+\
      170. "g, Light-Limonaden, 0 \n"+\
      171. "g, Tee, 0 \n"+\
      172. "g, Kaffee ohne Mildch und Zucker, 0 \n"+\
      173. "r, Fruchtsaft, 0.5 \n"+\
      174. "r, Limonade, 0.4 \n"+\
      175. "r, Cola, 0.6 \n"+\
      176. "g, Cola light, 0 \n"+\
      177. "g, Cola Zero, 0 \n"+\
      178. "r, Alkoholfreies Bier, 0.3 \n"+\
      179. "r, Bier, 0.4 \n"+\
      180. "r, Rotwein, 0.8 \n"+\
      181. "r, Weißwein, 0.8 \n"+\
      182. "r, Sekt, 0.8 \n"+\
      183. "r, Likör, 2.4 \n"+\
      184. "r, Whisky, 2.4 \n"+\
      185. "r, Milch (1.5 % Fett), 0.5 \n"+\
      186. "r, Milch (3.5 % Fett), 0.6"
      187. 'werte$=translate$(werte$," ","")
      188. declare zwi$[]:zwi$[]=explode(werte$,"\n"):clear werte$
      189. declare n&,ampel$[],Item$[],Wert$[]
      190. whileloop 0,sizeof(zwi$[])-1 :case left$(zwi$[&loop],1)="#":continue
      191. ampel$[n&]=substr$(zwi$[&Loop],1,",")
      192. Item$[n&]=substr$(zwi$[&Loop],2,",")
      193. Wert$[n&]=substr$(zwi$[&Loop],3,",")
      194. inc n&
      195. endwhile
      196. clear zwi$[]
      197. whileloop 0,n&-1
      198. Select ampel$[&Loop]
      199. caseof "g":color 15,2
      200. caseof "y":color 0,14
      201. caseof "r":color 15,12
      202. endselect
      203. print tab(6);Item$[&Loop],
      204. color 0,15:print tab(50);Wert$[&Loop]
      205. if %csrlin > 40
      206. waitinput
      207. cls
      208. locate 2,2:print " Eintrag Kalorien je Gramm \n"
      209. endif
      210. endwhile
      211. waitinput
      212. end
      Alles anzeigen
      Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,xpse,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB3

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von p. specht ()

    • ... weiters sehr empfehlenswert: Ernährungsanalyse, Nährwerttabellen und freie Softwareprogramme der Uni Hohenheim (bei Stuttgart). Dort werden auch die physiologischen Zusammenhänge von Ernährung und den diversen Zivilisationskrankheiten erläutert.
      Gruss

      P.S.: Bekanntlich stammt die Familie von einem der Wegbereiter der modernen Chemie und Pharmazie aus dieser Gegend: Philippus Theophrastus Aureolus Bombastus von Hohenheim, genannt Paracelsus, erkannte beispielsweise als erster schon um A.D. 1520 herum: Alles ist giftig - es kommt nur auf die Menge an!
      Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,xpse,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB3
    • Abt. Übersichtlichere Tabellen im Programmtext
      ==============================
      darstellen ist und bleibt Geschmacksache. Ein wenig trauere ich noch immer dem READ/DATA von BASIC nach &-P

      Quellcode

      1. Cls
      2. ' Zl , Sp
      3. var n&=4:var m&=3
      4. declare x![n&-1,m&-1],k&,x#
      5. dim x#,8*m&*n&:k&=x#:x#=addr(x![0,0]):float x#,0= \
      6. \
      7. 1.1 , 2.2 , 3.33/10^2 ,\
      8. 4 , 5 , 6.6 ,\
      9. 7.7E2, 8.88, 9.9999 ,\
      10. 10.0 ,11.11,12.3456
      11. x#=k&:dispose x#
      12. whileloop 0,n&-1:k&=&loop
      13. whileloop 0,m&-1
      14. print x![k&,&Loop],
      15. endwhile:print
      16. endwhile
      17. waitinput
      Alles anzeigen
      Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,xpse,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB3
    • Abt. Aha-Erlebnisse
      ============

      Quellcode

      1. print \
      2. -1234567890123456 \
      3. + -1.2345678901234567
      4. waitinput
      Soweit, so gut.

      Quellcode

      1. print \
      2. 1234567890123456\
      3. + -1.2345678901234567
      4. waitinput
      Auch logisch, irgendwie...

      Quellcode

      1. print \
      2. 1111111111111111*11111111111111111
      3. waitinput
      Aha, eher merkwürdig, ...
      Windows-Calculator sagt 1234567901234567654320987654321. Aber der hat eben QuadPrecision (128 bit/32 Stellen), nicht DoublePrecision (64 bit/16.6 Stellen). Die US-Staatsschulden (14 Billionen US-$) darzustellen, erfordert nämlich bereits QuadPrecision...

      Quellcode

      1. set("decimals",18)
      2. print \
      3. 10000000000000000000/11
      4. waitinput
      scheint ausreichend genau gegenüber dem Windows-Calculatorergebnis 909090909090909090,90909090909091, zumindest für Technische Anwendungen. Für Finanzminister, die Pfennigfuchser sind, reicht DoublePrecision nicht.
      Gruss
      Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,xpse,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB3
    • Abt. Mathematica- bzw. wxMaxima-Matrizendarstellung entziffern
      =========================================
      Um die Einzeilen-Darstellung von Matrizen in den meisten symbolverarbeitenden CAS-Programmen - nämlich Spaltentrennung mit ',', Zeilentrennung mit ';' - in ein XProfan-Array einlesen zu können, ist zuerst eine Dimensionsbestimmung nötig.

      Quellcode

      1. Cls:Declare M$,h$[],z&,s&
      2. 'M$="(1.1,-3.33,44.2;8.11,-23/1e4,6;17.55,-10.2,13;9.80665,3.14159,1.234e2)"
      3. M$="(1.1,-3.33,44.2;8.11,-23/1e4,6)"
      4. M$=translate$(M$,"(",""):M$=translate$(M$,")",""):h$[]=explode(M$,",")
      5. s&=sizeof(h$[]):h$[]=explode(M$,";"):z&=sizeof(h$[]):clear h$[]:s&=int((z&+s&-1)/z&)
      6. print "\n Matrix-Dimensionen:",z&,"Zeilen x",s&,"Spalten"
      7. waitinput

      Gruss

      P.S.: Vorsicht, eine direkte Erfassung ohne Hilfs-DynArray liefert falsche Ergebnisse, wie folgende Zeile beweist: print sizeof(explode(M$,",")),"x",sizeof(explode(M$,";")) ' liefert immer 4 x 4 !
      Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,xpse,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB3
    • Abt. Fenster putzen
      ============
      bzw. "Windows pflegen":

      1. Macht doch mal wieder "Datenträger bereinigen". Hab das am Laptop gerade angestoßen, nun 6 GB mehr. Wenn der Plattenplatz gerade zu Ende geht, ein ganz netter Gewinn.

      2. 'Defrag' bringt auf normalen Harddisks einigen Geschwindigkeitsgewinn. Die Standardintervalle scheinen da etwas zu weit auseinander, sodaß bei großen Dateien doch ein spürbarer Geschwindigkeitsgewinn lukrierbar ist.

      3. Wer selbst in seinen Dateiverzeichnissen Ordnung hält, weiss ja wo er sucht. Mit RegEdit kann (Admin-Rechte vorausgesetzt) ggf. der Windows-Dateiindexierdienst auf 'Manuell' starten umgestellt werden. Anleitungen siehe Youtube.

      4. Wem das Runterfahren wegen zu langer Programm-Abwürgzeiten (Standard 10000 ms) schnarchlangsam erfolgt (traditionell brauchen Virensuchprogramme da länger), der kann den entsprechenden Registry-Wert ja runtersetzen, z.B. auf 5000. Schließlich will man ja irgendwann doch nach Hause gehen...

      Gruss
      Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,xpse,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB3
    • Abt. Schleudergang
      ============
      Bei der Anschaffung einer Waschmaschine argumentieren die Hersteller heutzutage mit Schleuderdrehzahlen jenseits der 1400 Umdrehungen pro Minute :!: Bringt das wirklich was :?: Hier die Fliehkraftberechnung für ein nasses, ein dreiviertel Kilogramm Masse aufweisendes Kleidungsstück. In den Trochnungsgrad (bzw. die Restfeuchtigkeit) geht natürlich noch die Schleuderzeit ein - das blieb hier aber erst einmal unberücksichtigt...

      Quellcode

      1. WindowTitle "Zentrifugalwirkung in einer Waschmaschine"
      2. 'Q: http://de.wikipedia.org/wiki/Zentrifugalkraft
      3. Windowstyle 24:Cls':Window 0,0-%maxx,%maxy
      4. set("decimals",2):declare Newton!,Kilopond!
      5. Proc Zentrifugal :parameters m!,upm!,r!:declare F!,w!
      6. w!=2*pi()*upm!/60:F!=m!*r!*w!*w!:return F!
      7. endproc
      8. whileloop 0,1600,50
      9. Newton!=Zentrifugal(val("0.75 kg"),val(str$(&Loop)+" Upm"),val("0.25 m Radius"))
      10. Kilopond!=Newton!/9.80665
      11. print "\n "+str$(&Loop),"Upm: ";tab(13);Newton!,"[N =Newton] = ";tab(36);Kilopond!,"[kp =Kilopond Zentrifugalkraft]";
      12. endwhile :waitinput
      Alles anzeigen
      P.S.: Da die Drehzahl quadratisch in die Fliehkraftformel eingeht, ergeben sich bei hohen Drehzahlen bereits Befürchtungen, daß empfindlichere Kleidungsstücke duch die Sieblöcher gedrückt werden... :whistling:
      Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,xpse,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB3
    • Abt. Kenndaten älterer Elektronik-Bauelemente
      =============================
      Ich dachte immer, ich hebe das Hobbyzeug aus meiner Jugend (Transistoren, LED, Kondis, Widerstände, Relais, TTL-IC etc.) lieber auf: Irgend wann kann man's ja vielleicht brauchen! Daß dieser Zeitpunkt die letzten 35 Jahre nicht gekommen ist, daß sich die Technologie selbstverständlich mittlerweile radikal geändert hat (Fast alles digital und in SMD), daß darüber hinaus Datenblätter vergilben und verkommen, Transistortaschenbücher bei Umzügen liegenblieben, Bastelzeitschriften dem Mottenfraß, dem Verborgen sowie Wassereinbrüchen zum Opfer fielen, das tat diesem heeren Entschluß bisher keinen Abbruch.

      Nur jetzt - als ich ein Ersatz-Bauteil gebraucht hätte, komme ich drauf: Ich find nix! Das alles ist irgendwo... aber wo? Und das Wenige, das ich noch fand hat vielleicht die gleiche Funktion, aber ich konnte den winzigen Kenn-Aufdruck kaum mehr lesen: Verblasst und nur mit Lupe in grellstem Licht noch entzifferbar - hat das Ding nun die gewünschte Funktion? Ich schwor mir also, irgendwann (in Rente? Noch ewig hin...) werde ich wieder Ordnung reinbringen und das Zeug dann zu sinnvollen Geräten verbauen. Klar, ich werde ja auch 300 Jahre alt!

      Bezüglich der Kenndaten kam dann via Internet doch noch Licht in die Sache (deswegen schreibe ich diesen ganzen Schmus ja): TOLLE INTERNET-BAUTEILEDATENBANK.
      Hoffe, dem einen oder der anderen ist dieser Link-Hinweis von Nutzen!
      Gruss

      P.S.: Äffle und Pferdle
      Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,xpse,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB3

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von p. specht ()

    • Registrywerte komplett lesen, ohne Rechte dazu zu haben

      Benötigt Adminrechte.
      Listet Keys innerhalb von HKEY_LOKAL_MACHINE\SAM - laut den Rechten dürfen das Admins nicht.

      Quellcode

      1. $U RegEx.PCU = RegistryEx.
      2. ClearList
      3. RegistryEx.InitRegEx(1)
      4. RegistryEx.KeysToList("HKEY_2", "SAM\SAM\Domains\Account\Users\Names")
      5. RegistryEx.InitRegEx(0)
      6. EditBox("Keys in HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names", 1)
      7. END

      Download EXE: RegistryTest_2.exe

      Das gleiche geht natürlich auch mit Registrywerten. :-)
      Der Code ändert in keiner Weise irgendetwas an den Rechten des Schlüssels - es geht trotzdem.
      ________________________________________________________

      PPFScanner PPFS Android MisterXMail@web.de
      Mfg AHT
    • Zu oben: WAHNSINN, schon wieder eine an der Frontseite angebrachte Hintertür. Mein Gehirn beginnt zu käsen, wenn ich daran denke was da noch alles möglich ist. Bezgl. der (bei der angebotenen .exe nicht nötigen) PCU gab es von AHT hier eine Klarstellung. Daß die Bezeichnung "RegEx.pcu" nichts mit den "Regular Expressions" von XProfan (eine "Untersprache" zur String-Suche im MATCH$-Befehl) zu tun hat, sei an dieser Stelle kurz angemerkelt.

      Abt. Neues aus der TOP 500-Supercomputerliste
      ==============================
      Der "Tianhe-2" (MilkyWay-2)-Rechner im chinesischen Guangzhou, er führt die technische Bezeichnung "TH-IVB-FEP Cluster" wurde mittlerweile auf folgenden Stand ausgebaut: Steuerung mit Intel Xeon E5-2692 12C mit 2.2 GHz Takt,
      Subprozessoren (aus Chinesischer Militärfertigung) TH Express-2, In/Out-Processing: Intel Xeon Phi 31S1P N-UDT. Das ergibt zusammengeschaltet die Gesamtzahl von Drei Millionen Einhundertzwanzigtausend Cores, die zusammen im Schnitt 33862.7 TeraFlops leisten (33.86 PetaFlops = 33.862.700.000.000.000 Gleitkommamultiplikationen pro Sekunde), bei Volloptimierung einen Spitzenwert von 54902.4 TeraFlops erreichen und dabei 17808 kW (17,8 MegaWatt) elektrische Leistung verbrauchen. Na Prost...

      Link: Was Elektronik-Weltkonzerne so treiben
      ============================
      ... zeigt sich z.B. bei Mitsubishi Electric Works an Hand der letzten Publikationen der Forschungsabteilung. So wurde gerade ein Verkehrszeichen-Erkennungssystem auf Praxistauglichkeit geprüft sowie neue schnelle Algorithmen für eine Leistungskodierung von Digitalsendern vorgestellt. Wer Zeit hat, kann ja mal...

      Was sich bei Leuchtmitteln so tut, zeigt sich bei Philips Eindhoven unter "Luminous Philips" (pdf)

      Auch Siemens schläft nicht und hat sich im Umweltbereich jüngst der Optimierung von Solargeräten (pdf) gewidmet.

      Beruhigend zu wissen, daß damit vielleicht die Arbeitslosenrate wieder etwas zurückgehen könnte. Der Schlüssel bleibt eine vernünftige Technologiepolitik.
      Gruss

      P.S.: Mary Poppins singt Death Metal
      Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,xpse,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB3
    • Abt. Beschleunigte Eigenmultiplikation einer Matrix
      ================================
      Bei mehreren Aufgabenstellungen, die mittels Matrizenrechnung gelöst werden sollen, ist das Produkt R = X' X einer Matrix gefragt. Mit X' wird bekanntlich die Transponierte (= die um die Hauptdiagonale gewendete Matrix) bezeichnet. Bei Eigenmultiplikationen kann man sich diese Transposition sowie die Berechnung aller unteren Diagonalelemente der Ergebnismatrix R aber sparen, da bei diesen Operationen immer eine quadratische, diagonalsymmetrische Matrix herauskommt. Das folgende Programmstück erspart also eine Menge Doppelgemoppel :s2: und vor allem bei größeren Matrizen viel Rechenzeit.

      Quellcode

      1. WindowTitle "Beschleunigte Eigenmultiplikation R=X'X einer Matrix X"
      2. Windowstyle 24:Window 0,0-%maxx,%maxy
      3. set("decimals",17):set("numwidth",26)
      4. var n&=4:var m&=3
      5. declare x![n&-1,m&-1],k&,x#
      6. dim x#,8*m&*n&:k&=x#:x#=addr(x![0,0]):float x#,0=\
      7. 1,2,1, 2,3,3, 3,2,1, 2,1,1
      8. ' 1.1 , 2.2 , 3.33/10^2 ,\
      9. ' 4 , 5 , 6.6 ,\
      10. ' 7.7E2, 8.88, 9.9999 ,\
      11. '10.0 ,11.11,12.3456
      12. x#=k&:dispose x#
      13. declare i&,j&,s!,R![m&-1,m&-1]
      14. whileloop 0,m&-1:k&=&Loop:s!=0
      15. Whileloop 0,n&-1
      16. s!=s!+SQR(x![&Loop,k&])
      17. endwhile
      18. R![k&,k&]=s!
      19. endwhile
      20. Whileloop 0,m&-1:k&=&Loop
      21. Whileloop k&+1,m&-1:j&=&Loop:s!=0
      22. whileloop 0,n&-1:i&=&Loop
      23. s!=s!+x![i&,j&]*x![i&,k&]
      24. endwhile
      25. R![j&,k&]=s!
      26. R![k&,j&]=s!
      27. endwhile
      28. endwhile
      29. 'Show
      30. whileloop 0,m&-1:i&=&Loop
      31. whileloop 0,m&-1:k&=&Loop
      32. print tab(k&*28);R![i&,k&],
      33. endwhile:print
      34. endwhile
      35. waitinput
      Alles anzeigen

      Gruss

      P.S.: Auf quadratisch-symmetrische Matrizen lassen sich auch andere Operationen besonders effizient anwenden, etwa die Spiegelungsoperationen des Algorithmus von Alston Scott Householder, das Jacobiverfahren, die Givens-Rotation oder die schrittweise Eigenwert-Faktorenermittlung nach Von_Mises.
      Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,xpse,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB3

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von p. specht ()

    • Abt. Brüche im Exact-Floatingpoint-System
      ===========================
      Vorab ein bisschen Schmus und Senf: Bekanntlich entstand die einfachste Menge, nämlich die Menge der Natürlichen Zahlen |N|={1,2,3,4,...} aus der Verschmelzung der Menge aller möglichen "Anzahlen" (aka 'Kardinalzahlen') mit der Menge der Platznummern (aka 'Ordnungszahlen', 'Ordinalzahlen'). Später wurde auch die von den Arabern dazuerfundene Nullmenge (aka '0') als 'Natürliche Zahl' hinzugenommen (Die Römer waren z.B. noch nicht so weit), sodaß man |N|_0={0,1,2,3,4,...+Inf} kannte. Damit konnten Aufgaben der Addition und Multiplikation positiver Ganzzahlen stets gelöst werden.

      Lange Zeit konnten Kaufleute Schulden von Guthaben nur unterscheiden, in dem sie die Zahlen auf unterschiedlichen Buchseiten anschrieben, nämlich entweder im SOLL (Links) oder im HABEN (Rechts, bei Bankbilanzen umgekehrt). Erst irgendwann im 15. Jahrhundert (d.h. zwischen 1401 und 1500) war es üblich, die Wörter „plus“ und „minus“ auszuschreiben. Laut Wikipedia wurde in italienischen und französischen Schriften dabei häufig nur der Buchstabe „m“ für Minus ausgeschrieben und mit einem waagerechten Strich versehen, um das Symbol besser zu kennzeichnen. Dieser Querstrich über dem „m“ ist eine Erklärung für die Entstehung des heutigen Minuszeichens.

      Damit war die Menge der Negativen Ganzzahlen geboren, die - vereinigt mit den Natürlichen Zahlen - die Menge aller Ganzen Zahlen inklusive Null |G|_0 ergab. So konnten auch Aufgaben wie die Subtraktion einer größeren Zahl von einer kleineren gelöst werden.

      Die Behandlung von Brüchen (Division ganzer Zahlen) durch die Alten Griechen führe auf eine neue Errungenschaft: Auf die Menge der Gebrochenen (aka 'Rationalen') Zahlen |R|, von denen weiter unten noch berichtet wird.

      Umso erstaunter war man als man bemerken mußte, daß Größen wie das Verhältnis von Kreisumfang zu Durchmesser oder das Verhältnis der Diagonalen im Quadrat zu dessen Seitenlänge nicht vollständig durch Brüche darstellbar war, diese also 'Irrationale Zahlen' waren.

      Die Beschäftigung mit der Frage, was eigentlich aus Negativen Zahlen wird, wenn man aus ihnen eine geradzahlige Wurzel ziehen will, führte die Herren Gerolamo Cardano (1545), Raffael Bombelli (1557), Leonard Euler (1777 ?) und Carl Friedrich Gauss (1831) dann auf die Menge der Komplexen Zahlen |K|. Weitere Mathematiker schufen andere Regeln für Mengenelemente; das führte u.a. zu 'Topologischen Halbordnungen', Abelschen und Nicht-Abelschen Gruppen, auf Verbände, Ringe und Zahlenkörper).
      Gruss

      P.S.: Bleiben wir doch noch mal kurz bei den Alten Griechen und ihren Brüchen: Ergänzt man ein Floatingpoint-Rechensystem um ein Zeichen für "Eingrenzung von wiederholten Zifferngruppen" (ich schlage dazu vor '_'), so ergibt sich die Frage, wie sich Echte Brüche dann wohl darstellen und welche davon man in einem solchen System sauber darstellen kann. Ich habe das unten mal für die ersten ganzzahligen Brüche versucht. Langfristige Aufgabe wäre die Erstellung eines Programmes, daß auch die Wiederholung längerer Zifferngruppen erkennen und diese entsprechend kennzeichnen kann. Das wird in der Praxis z.B. durch begrenzte Rechengenauigkeit und durch die automatische Rundung der letzten Ziffer im Floatingpoint-System ziemlich behindert... Schauen wir mal, wie weit wir kommen:

      Quellcode

      1. Alles exakte Darstellungen: Periode Ab_Dezimale.Länge
      2. 1 1 0
      3. 1/2 0.5 0
      4. 1/3 0._3_ 1.1
      5. 1/4 0.25 0
      6. 1/5 0.2 0
      7. 1/6 0.1_6_ 2.1
      8. 1/7 0._142857_ 1.6
      9. 1/8 0.125 0
      10. 1/9 0._1_ 1.1
      11. 1/10 0.1 0
      12. 1/11 0._09_ 1.2
      13. 1/12 0.08_3_ 3.1
      14. 1/13 0._076923_ 1.6
      15. 1/14 0.0_714285_ 2.6
      16. 1/15 0.0_6_ 2.1
      17. 1/16 0.0625 0
      18. 1/17 0._0598235294117647_ 1.16
      19. 1/18 0.0_5_ 2.1
      20. 1/19 0._052631578947368421_ 1.18
      21. 1/20 0.05 0
      22. 1/21 0._047619_ 1.6
      23. 1/22 0.0_45_ 2.2
      24. 1/23 0._0434782608695652173913_ 1.22
      25. 1/24 0.041_6_ 4.1
      26. 1/25 0.04 0
      27. 1/26 0.0_384615_ 2.6
      28. 1/27 0._037_ 1.3
      29. 1/28 0.03_571428_ 3.6
      30. 1/29 0._0344827586206896551724137931_ 1.28
      31. 1/30 0.0_3_ 2.1
      32. 1/31 0._032258064516129_ 1.15
      33. 1/32 0.03125 0
      34. 1/33 0._03_ 1.2
      35. 1/34 0.0_2941176470588235_ 2.16
      36. 1/35 0.0_285714_ 2.6
      37. 1/36 0.02_7_ 3.1
      38. 1/37 0._027_ 1.3
      39. 1/38 0.0_263157894736842105_ 2.18
      40. 1/39 0._025641_ 1.6
      41. 1/40 0.025 0
      42. 1/41 0._02439_ 1.5
      43. 1/42 0.0_238095_ 2.6
      44. 1/43 0._023255813953488372093_ 1.21
      45. 1/44 0.022_72_ 4.2
      46. 1/45 0.0_2_ 2.1
      47. 1/46 0.0_2173913043478260869565_ 2.22
      48. Microsoft-Desktop-Taschenrechner:
      49. 1/47 0.02127659574468085106382978723404?... KEINE PERIODIZITÄT ???
      50. Maxima: 0.0212765957446808505471036454537170357070863246917724609375 NANU ?
      51. BigNum: 0._0212765957446808510638297872340425531914893617_ DOCH ! 1.46
      52. 1/48 0.0208_3_ 5.1
      53. 1/49 0.02040816326530612244897959183673?... KEINE PERIODIZITÄT ???
      54. Maxima: 0.0204081632653061208204636756136096664704382419586181640625 ÄHM???
      55. BigNum: 0._020408163265306122448979591836734693877551_ DOCH ! 1.42
      56. 1/50 0.02 0
      57. 1/51 0._0196078431372549_ 1.16
      58. 1/52 0.01_923076_ 3.6
      59. 1/53 0._0188679245283_ 1.13
      60. 1/54 0.0_185_ 2.3
      61. 1/55 0.0_18_ 2.2
      62. 1/56 0.017_857142_ 4.6
      63. 1/57 0._017543859649122807_ 1.18
      64. 1/58 0.0_1724137931034482758620689655_ 2.28
      65. 1/59 0.01694915254237288135593220338983?... KEINE PERIODIZITÄT ???
      66. Maxima: 0.0169491525423728812971280177634980645962059497833251953125... ÄHM
      67. BigNum:0._0169491525423728813559322033898305084745762711864406779661_ 1.58
      68. 1/60 0.01_6_
      69. 1/61 0._016393442622950819672131147540983606557377049180327868852459_ 1.60
      70. 1/62 0.0_161290322580645_ 2.15
      71. ...
      Alles anzeigen

      PPS: Wie sähe ein Nachweis aus, daß jeder beliebige Bruch auf periodische Dezimalketten führt? Das muss nämlich passieren. Oben der Nachweis, daß Maxima's Rechengenauigkeit deutlich zu wünschen übrig lässt. Da ist BigNum schon ein anderes Kaliber! :admin: ACHTUNG, gemeint ist die Java BigNum Library, nicht der Trojaner "bignum.exe"! :bravo: WARNUNG!

      PPPS: Das oben öfter verwendete 'aka' ist Abkürzung des englischen "Also known as ...", sprich "Auch bekannt unter ..."
      Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,xpse,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB3

      Dieser Beitrag wurde bereits 10 mal editiert, zuletzt von p. specht ()

    • Wo ich diese ganzen Zahlenordnungen da lese, fällt mir ein Buch ein, das ich sehr interessant fand:
      "Weißes Licht" von Rudy Rucker (original: White Light: Or, What Is Cantor's Continuum Problem)
      de.wikipedia.org/wiki/Rudy_Rucker
      amazon.de/Wei%C3%9Fes-Licht-Rudy-Rucker/dp/3453312007

      Das ist keine trockene wissenschaftliche Abhandlung sondern eine humorig-absurde, auf mathematischen Spielereien beruhende Sience Fiction Erzählung.

      Hier noch zwei kurze Inhaltsangaben:
      randomhouse.de/ebook/Weisses-L…n/Rudy-Rucker/e457984.rhd
      rezensionen.literaturwelt.de/c…sses_licht_mtz_11786.html
      Anhören lohnt sich wuestensand.info
    • Toller Tipp, Joerg! Phantasivoll und lehrreich!
      Aber auch wir sind von fast unendlichen Größen umgeben:

      Abt. Größenordnungen
      ==============
      Die Lichtgeschwindigkeit im Vakuum ist festgelegt mit 299.792.458 m/s.
      1 Lichtjahr wird (seit 1964) stets bezogen auf ein Julianisches Jahr =
      365.25 d, damit ist es 9.460.730.472.580,800 km (9.46 Billionen km) lang.
      Das Hubble Deep field zeigt Galaxien vor 10.000.000.000 Jahren.Diese sind
      also etwa 94.607.304.725.808.000.000.000 km = ca 94,61 Trilliarden km weg.
      Da seit dem Big Bang nach neuesten Messungen des Plank-Satelliten (2013/03)
      13,82 Mrd Jahre vergangen sind, hat die Lichtkugel um uns herum derzeit
      einen Radius von ca. 130.747.295.131.066.656.000.000 = 130,74 Trilliarden km.
      Hier eine künsterische Darstellung.
      Gruss

      P.S.: Ein 1.80 m grosser Mensch ist also 6,0042 Nanolichtsekunden groß. :-D
      Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,xpse,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB3
    • Abt. Statistik in der Empirischen Sozialforschung
      ==============================
      Sozialforscher versuchen, Thesen wie "Angehörige bildungsferner Schichten oder aus Gebieten mit geringer Kaufkraft werden selten Generaldirektor" statistisch zu belegen. Damit moderne Clusterungs- und Korrelationsverfahren aber funktionieren, müssen erst die Umfrageskalen (Was bedeutet bildungsfern, was kaufkraftarm) miteinander wertmäßig vergleichbar gemacht werden. Als Verfahren hierzu wird gerne die Z-Spaltennormierung herangezogen, die ich testhalber Schritt für Schritt samt Probe zum besseren Nachvollziehen dargestellt habe.
      Gruss

      Quellcode

      1. Windowtitle "Spaltenweise z-Normierung zur Skalen-Vergleichbarmachung der [n,m]-Erfassungsmatrix einer Umfrage"
      2. '(Copyleft) 2015-04 by P. Specht, Wien. Ohne jede Gewähr!
      3. Windowstyle 24:font 2
      4. Window 0,0-%maxx,%maxy
      5. ' Dimension der gewünschten Testmatrix:
      6. Var n&=5:var m&=5
      7. Declare M![n&-1,m&-1],sum!,s![m&-1],Xm![m&-1],D![n&-1,m&-1],txt$
      8. Declare Q![n&-1,m&-1],qs![m&-1],v![m&-1],sigma![m&-1],i&,j&,Z_sp![n&-1,m&-1]
      9. Declare p![m&-1],pz![m&-1],ps![m&-1] 'Probevektoren
      10. txt$=" ["+str$(n&)+","+str$(m&)+"]-Testmatrix M, mit Zufallswerten belegt"
      11. Randomize
      12. whileloop 0,n&-1:i&=&Loop
      13. whileloop 0,m&-1:j&=&Loop
      14. M![i&,j&]=rnd(10000)'rnd()*10^(rnd(53)-18)
      15. endwhile
      16. endwhile
      17. Probe2:
      18. print:print txt$;
      19. whileloop 0,n&-1:i&=&Loop
      20. whileloop 0,m&-1:j&=&Loop
      21. print tab(j&*27);format$("%g",M![i&,j&]),
      22. endwhile
      23. endwhile
      24. print
      25. waitinput
      26. txt$=" Zeilenvektor s[] der Spaltensummen von M[,]"
      27. whileloop 0,m&-1:j&=&Loop
      28. sum!=0
      29. whileloop 0,n&-1:i&=&Loop
      30. sum!=sum!+M![i&,j&]
      31. endwhile
      32. s![j&]=sum!
      33. endwhile
      34. print:print txt$;
      35. whileloop 0,m&-1:j&=&Loop
      36. print tab(j&*27);format$("%g",S![j&]),
      37. endwhile
      38. print
      39. waitinput
      40. txt$=" Zeilenvektor Xm[] der Spaltenmittelwerte"
      41. whileloop 0,m&-1:j&=&Loop
      42. xm![j&]=S![j&]/n&
      43. endwhile
      44. print:print txt$;
      45. whileloop 0,m&-1:j&=&Loop
      46. print tab(j&*27);format$("%g",xm![j&]),
      47. endwhile
      48. print
      49. waitinput
      50. txt$=" Matrix D[,] der auf Spaltenmitten zentrierten Spalten"
      51. whileloop 0,m&-1:j&=&Loop
      52. whileloop 0,n&-1:i&=&Loop
      53. D![i&,j&]=M![i&,j&]-xm![j&]
      54. endwhile
      55. endwhile
      56. print:print txt$;
      57. whileloop 0,n&-1:i&=&Loop
      58. whileloop 0,m&-1:j&=&Loop
      59. print tab(j&*27);format$("%g",D![i&,j&]),
      60. endwhile
      61. endwhile
      62. print
      63. waitinput
      64. txt$=" Probe: Summe der Zentrierten Werte muss fast 0 sein!"
      65. whileloop 0,m&-1:j&=&Loop
      66. sum!=0
      67. whileloop 0,n&-1:i&=&Loop
      68. sum!=sum!+D![i&,j&]
      69. endwhile
      70. p![j&]=sum!
      71. endwhile
      72. print:print txt$;
      73. whileloop 0,m&-1:j&=&Loop
      74. print tab(j&*27);format$("%g",p![j&]),
      75. endwhile
      76. print
      77. waitinput
      78. txt$=" Matrix Q der Quadrate der (Spaltenmittelwert-zentrierten) Werte D"
      79. Whileloop 0,m&-1:j&=&Loop
      80. whileloop 0,n&-1:i&=&Loop
      81. Q![i&,j&]=sqr(D![i&,j&])
      82. endwhile
      83. endwhile
      84. print:print txt$;
      85. whileloop 0,n&-1:i&=&Loop
      86. whileloop 0,m&-1:j&=&Loop
      87. print tab(j&*27);format$("%g",Q![i&,j&]),
      88. endwhile
      89. endwhile
      90. print
      91. waitinput
      92. txt$=" Zeilenvektor qs[] der Spaltensummen von Q[,]"
      93. whileloop 0,m&-1:j&=&Loop
      94. sum!=0
      95. whileloop 0,n&-1:i&=&Loop
      96. sum!=sum!+Q![i&,j&]
      97. endwhile
      98. qs![j&]=sum!
      99. endwhile
      100. print:print txt$;
      101. whileloop 0,m&-1:j&=&Loop
      102. print tab(j&*27);format$("%g",qs![j&]),
      103. endwhile
      104. print
      105. waitinput
      106. txt$=" Zeilenvektor v[] der Spaltenvarianzen von D[,]"
      107. whileloop 0,m&-1:j&=&Loop
      108. v![j&]=qs![j&]/n&
      109. endwhile
      110. print:print txt$;
      111. whileloop 0,m&-1:j&=&Loop
      112. print tab(j&*27);format$("%g",v![j&]),
      113. endwhile
      114. print
      115. waitinput
      116. txt$=" Zeilenvektor sigma[] der Spalten-Standardabweichungen von D[,]"
      117. whileloop 0,m&-1:j&=&Loop
      118. 'case sigma![j&]<>0
      119. sigma![j&]=sqrt(v![j&])
      120. endwhile
      121. print:print txt$;
      122. whileloop 0,m&-1:j&=&Loop
      123. print tab(j&*27);format$("%g",sigma![j&]),
      124. endwhile
      125. print
      126. waitinput
      127. txt$=" Ergebnismatrix Z_sp der spaltenweise z-normierten Werte der Originalmatrix M"
      128. Whileloop 0,m&-1:j&=&Loop
      129. whileloop 0,n&-1:i&=&Loop
      130. if sigma![j&]<>0
      131. Z_sp![i&,j&]=D![i&,j&]/Sigma![j&]
      132. 'else
      133. ' print "********** Sigma[";str$(j&);"]=0 ignored! ***************":beep:waitinput
      134. ' Z_sp![i&,j&]=D![i&,j&]
      135. endif
      136. endwhile
      137. endwhile
      138. :::::::::::::::::::cls
      139. print:print txt$;
      140. whileloop 0,n&-1:i&=&Loop
      141. whileloop 0,m&-1:j&=&Loop
      142. print tab(j&*27);format$("%g",Z_sp![i&,j&]),
      143. endwhile
      144. endwhile
      145. print
      146. waitinput
      147. txt$=" Probe 1: Summe der Z-normierten Spaltenwerte muss nahe 0 sein!"
      148. whileloop 0,m&-1:j&=&Loop
      149. sum!=0
      150. whileloop 0,n&-1:i&=&Loop
      151. sum!=sum!+Z_sp![i&,j&]
      152. endwhile
      153. pz![j&]=sum!
      154. endwhile
      155. print:print txt$;
      156. whileloop 0,m&-1:j&=&Loop
      157. print tab(j&*27);format$("%g",pz![j&]),
      158. endwhile
      159. print
      160. waitinput
      161. print
      162. print " Probe 2: Die Standardabweichung der Spaltenwerte von Z_sp[,] muss 1 ergeben."
      163. print " Dazu wird Z_sp in M geladen und das Programm nochmals gestartet! "
      164. waitinput
      165. whileloop 0,m&-1:j&=&Loop
      166. whileloop 0,n&-1:i&=&Loop
      167. M![i&,j&]=Z_sp![i&,j&]
      168. endwhile
      169. endwhile
      170. txt$=" Die ["+str$(n&)+","+str$(m&)+"]-Testmatrix M ist nun mit den Z-normierten Werten belegt."
      171. cls
      172. GOTO "Probe2"
      173. END
      Alles anzeigen
      Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,xpse,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB3
    • Abt. Kegelschnitt-Typ und -Parameter aus Gleichung ermitteln
      =======================================
      Mit der Karthesischen Kegelschnittgleichung a*x² + 2b*x*y + c*y² + 2d*x + 2e*y + f = 0 können sämtliche Arten von Kegelschnitten (Ellipse, Parabel, Hyperbel) einschließlich aller degenerierten Fälle (Geradenzwickel, Gerade, Punkt oder Garnichts) dargestellt werden. Bei vorgegebenen Parametern wäre aber von Interesse, um welchen Typ es sich jeweils tatsächlich handelt und wie die Bestimmungselemente des Kegelschnittes lauten. Das leistet nachstehendes, von mir nach XProfan-11 übersetzes Programm von der genialen Homepage von Prof. J,-P, Moreau - Wie immer ohne Gewähr!
      Gruss

      P.S.: Ich gehe nun für vier Wochen auf Laptop-lose Reha. Freu' mich schon , wenn die Kurärzte mich um 06:00 Uhr früh 8O durch den nebelverhangenen Wald :wacko: auf 1400 m Seehöhe jagen werden. Bis dann! :hut:

      Quellcode

      1. WindowTitle upper$("Aus karthesischer Kegelschnittformel "+\
      2. "auf Parameter des Kegelschnittes schließen")
      3. WindowStyle 24':Window (%maxx-%maxy)/2,0-%maxy,%maxy
      4. font 2:set("decimals",12):randomize
      5. 'Q: http://jean-pierre.moreau.pagesperso-orange.fr/Basic/conical_bas.txt
      6. 'Transscribed to XProfan 11.2a by P.Specht, Vienna (Austria).
      7. '* Type: Parabola *
      8. '* Center: x=0.999999 y=5.000000 *
      9. '* Symmetry direction: x=1 y=-1 *
      10. '* Focus: x=1.124999 y=4.875000 *
      11. '* Parameter: 0.35355339 *
      12. '* *
      13. '* Basic version by J-P Moreau. *
      14. '* (www.jpmoreau.fr) *
      15. Declare c$,a!,b!,c!,d!,e!,f!,x!,y!
      16. Declare ex!,xc!,yc!,xla!,xlb!,xf1!,yf1!,xf2!,yf2!
      17. Declare xs1!,ys1!,xs2!,ys2!,xv1!,yv1!,xv2!,yv2!
      18. Declare delta!,u!,xl!,xm!,x2!,y2!,i&,j&,ityp&,typ&
      19. START:
      20. CLS rgb(200+rnd(56),200+rnd(56),200+rnd(56))
      21. print
      22. print " UMFORMUNG DER KEGELSCHNITTGLEICHUNG AUF ELEMENTARE DARSTELLUNG "
      23. print " ============================================================== \n"
      24. print " Parameter der Gleichung a*x² + 2b*x*y + c*y² + 2d*x + 2e*y + f = 0 eingeben:\n"
      25. 'Testwerte lt. Beispiel aus dem Sourcetext:
      26. a!=1:b!=2:c!=1:d!=-13:e!=-11:f!=32
      27. print " Frage: Sollen die Werte des internen Testbeispiels verwenden [j/n]? ";
      28. input c$:c$=left$(lower$(trim$(c$)),1):case (c$="j") or (c$="y"):goto "Huepf"
      29. print
      30. print " a = ";:input a!
      31. print " 2b = ";:input b!
      32. print " c = ";:input c!
      33. print " 2d = ";:input d!
      34. print " 2e = ";:input e!
      35. print " f = ";:input f!
      36. if (a!=0) and (b!=0) and (c!=0) and (d!=0) and (e!=0) and (f!=0)
      37. beep:print "\n *** Es wurden keine Werte eingegeben! *** "
      38. waitinput 10000
      39. goto "START"
      40. endif
      41. Huepf:
      42. print
      43. b!=b!/2: d!=d!/2: e!=e!/2
      44. delta!=a!*c!-b!*b!
      45. if delta!=0
      46. gosub "S1000" 'call Parabola
      47. else
      48. xc!=(b!*e!-d!*c!)/delta!
      49. yc!=(b!*d!-a!*e!)/delta!
      50. f! = f! + a!*xc!*xc!+2*b!*xc!*yc!+c!*yc!*yc!+2*d!*xc!+2*e!*yc!
      51. if f!=0
      52. if delta!>0
      53. ityp&=7 'one point
      54. else
      55. ityp&=6 'two lines
      56. goto "G100"
      57. endif
      58. endif
      59. u!=sqrt((a!-c!)*(a!-c!)+4*b!*b!)
      60. xl!=(a!+c!-u!)/2: xm!=(a!+c!+u!)/2
      61. if (a!=c!) and (b!=0)
      62. if (f!*a!)>=0
      63. ityp&=8 'no conical
      64. goto "G100"
      65. else
      66. ityp&=4 'circle
      67. xla!=sqrt(-f!/a!)
      68. ex!=1
      69. goto "G100"
      70. endif
      71. endif
      72. if (a!<c!) and (b!=0)
      73. x2!=1: y2!=0: xv1!=1: yv1!=0
      74. else
      75. xv1!=b!: yv1!=1-a!
      76. u!=sqrt(xv1!*xv1!+yv1!*yv1!)
      77. x2!=xv1!/u!: y2!=yv1!/u!
      78. endif
      79. if delta!<0
      80. gosub "S2000" 'call Hyperbola
      81. else
      82. gosub "S3000" 'call Ellipse
      83. endif
      84. endif 'else if delta=0
      85. ' print results
      86. G100:
      87. if ityp&=1
      88. print " Type: Ellipse"
      89. print
      90. print " Mittelpunktkoordianten: x=";format$("%g",xc!);" y=";format$("%g",yc!)
      91. print "\n Richtung Große Achse : x=";format$("%g",xv1!);" y=";format$("%g",yv1!)
      92. print "\n Richtung Kleine Achse : x=";format$("%g",xv2!);" y=";format$("%g",yv2!)
      93. print "\n Länge Große Halbachse : ";format$("%g",xla!)
      94. print "\n Länge Kleine Halbachse: ";format$("%g",xlb!)
      95. print "\n Brennpunktkoordinaten : x=";format$("%g",xf1!);" y=";format$("%g",yf1!)
      96. print "\n Zweiter Brennpunkt : x=";format$("%g",xf2!);" y=";format$("%g",yf2!)
      97. print "\n Num.Exzentrizität : ";format$("%g",ex!)
      98. endif
      99. if ityp&=2
      100. if (a!+c!)=0
      101. print " Typ: Gleichseitige Hyperbel"
      102. else
      103. print " Typ: Hyperbel"
      104. endif
      105. print
      106. print " Mittelpunkt : x=";format$("%g",xc!);" y=";format$("%g",yc!)
      107. print "\n Richtung Erste Achse : x=";format$("%g",xv1!);" y=";format$("%g",yv1!)
      108. print "\n Richtung Zweite Achse : x=";format$("%g",xv2!);" y=";format$("%g",yv2!)
      109. print "\n Erste Leitgerade : x=";format$("%g",xs1!);" y=";format$("%g",ys1!)
      110. print "\n Zweite Leitgerade : x=";format$("%g",xs2!);" y=";format$("%g",ys2!)
      111. print "\n Erster Brennpunkt : x=";format$("%g",xf1!);" y=";format$("%g",yf1!)
      112. print "\n Zweiter Brennpunkt : x=";format$("%g",xf2!);" y=";format$("%g",yf2!)
      113. print "\n Num.Exzentrizität : ";format$("%g",ex!)
      114. endif
      115. if ityp&=3
      116. print " Typ: Parabel"
      117. print
      118. print " Mittelpunkt : x=";format$("%g",xc!); " y=";format$("%g",yc!)
      119. print "\n Symmetrieachsenvektor : x=";format$("%g",xv1!);" y=";format$("%g",yv1!)
      120. print "\n Brennpunktskoordinaten: x=";format$("%g",xf1!);" y=";format$("%g",yf1!)
      121. print "\n Parameter der Parabel : "; format$("%g",ex!)
      122. endif
      123. if ityp&=4
      124. print " Typ: Kreis"
      125. print
      126. print " Mittelpunkt : x=";format$("%g",xc!);" y=";format$("%g",yc!)
      127. print "\n Radius : ";format$("%g",xla!)
      128. print "\n Num.Exzentrizität : ";format$("%g",ex!)
      129. endif
      130. case ityp&=5: print " Dieser Kegelschnitt degeneriert zur Linie."
      131. case ityp&=6: print " Dieser Kegelschnitt degeneriert zu zwei Geraden."
      132. case ityp&=7: print " Dieser Kegelschnitt degeneriert zu einem einzelnen Punkt."
      133. case ityp&=8: print " Reell nicht lösbar. Kein Kegelschnitt!"
      134. print
      135. Waitinput
      136. Print "\n Noch ein Beispiel durchrechnen [n,e = Ende]? ";
      137. input c$:c$=left$(lower$(trim$(c$)),1)
      138. casenot (c$="n") or (c$="e"):Goto "START"
      139. beep:Print "\n Programm beendet.\n\n Auf Wiedersehen!"
      140. Waitinput 3000
      141. END 'of main program
      142. 'Subroutine Parabel
      143. S1000:
      144. ityp&=3
      145. if (c!=0) and (a!=0) 'The parabola does not exist or is degenerated into a line
      146. if (d!=0) and (e!=0)
      147. typ&=8 'no conical
      148. else
      149. typ&=5 'line
      150. return
      151. endif
      152. endif
      153. if (a!=0)
      154. x2!=1: y2!=0: xl!=0: xm!=1
      155. else
      156. if a!<0
      157. f!=-f!: e!=-e!: d!=-d!
      158. c!=-c!: b!=-b!: a!=-a!
      159. endif
      160. xl!=sqrt(a!): xm!=sqrt(c!)
      161. case b!<0 : xm!=-xm!
      162. u!=sqrt(a!+c!)
      163. x2!=xm!/u!: y2!=-xl!/u!
      164. f!=f!*u!:c!=(a!+c!)*u!
      165. u!=d!*xm!-e!*xl!: e!=d!*xl!+e!*xm!: d!=u!
      166. endif
      167. if d!=0
      168. if sqr(e!)<(c!*f!)
      169. typ&=8
      170. else
      171. typ&=6 'two lines
      172. return
      173. endif
      174. else
      175. x!=(e!*e!-c!*f!)/2/c!/d! : y!=-e!/c!
      176. xc!=x!*x2!-y!*y2! : yc!=y!*x2!+x!*y2!
      177. ex!=-d!/c!
      178. xf1!=xc!+ex!*x2!/2 :yf1!=yc!+ex!*y2!/2
      179. xv1!=xm! : yv1!=-xl!
      180. endif
      181. return
      182. 'Subroutine Hyperbel
      183. S2000:
      184. ityp&=2
      185. xla!=sqrt(-abs(f!)/xl!): xlb!=sqrt(abs(f!)/xm!)
      186. if f!<0
      187. u!=xla!: xla!=xlb!: xlb!=u!
      188. u!=x2!: x2!=-y2!: y2!=u!
      189. u!=xv1!: xv1!=-yv1!: yv1!=u!
      190. endif
      191. xv2!=-yv1!: yv2!=xv1!
      192. u!=sqrt(xla!*xla!+xlb!*xlb!)
      193. xs1!=xc!+x2!*xla!: ys1!=yc!+y2!*xla!
      194. xs2!=xc!-x2!*xla!: ys2!=yc!-y2!*xla!
      195. xf1!=xc!+x2!*u!: yf1!=yc!+y2!*u!
      196. xf2!=xc!-x2!*u!: yf2!=yc!-y2!*u!
      197. ex!=u!/xla!
      198. return
      199. 'Subroutine Ellipse
      200. S3000:
      201. ityp&=1
      202. if (f!*xl!)>0
      203. typ&=8 'no conical
      204. return
      205. endif
      206. xla!=sqrt(-f!/xl!): xlb!=sqrt(-f!/xm!)
      207. if xl!<0
      208. u!=xla!: xla!=xlb!: xlb!=u!
      209. u!=x2!: x2!=-y2!: y2!=u!
      210. u!=xv1!: xv1!=-yv1!: yv1!=u!
      211. endif
      212. xv2!=-yv1!: yv2!=xv1!
      213. u!=sqrt(xla!*xla!-xlb!*xlb!)
      214. xf1!=xc!+x2!*u!: yf1!=yc!+y2!*u!
      215. xf2!=xc!-x2!*u!: yf2!=yc!-y2!*u!
      216. ex!=u!/xla!
      217. return
      Alles anzeigen
      Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,xpse,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB3
    • Abt. HUCH Wie sieht's denn hier aus?
      =======================
      Nach dem ersten Eindruck etwas verwirrt, gewöhne ich mich gerade an das neue Layout des Forums. Und langsam beginne ich, es sogar GUT zu finden... nein, eigentlich sogar SUPER! Alles Neu macht der Mai, sozusagen??? Leider werden einige Smiley-Arten nicht mehr so wiedergegeben wie vormals, ich hoffe das verwirrt Neulinge nicht.
      Gruss

      P.S.: Von Reha zurück, 4 Kilo leichter und Waldlauf-Fan geworden. Die Gehirnwäsche dort trägt also schon erste Früchte :-)
      Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,xpse,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB3