Neue Antwort erstellen

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.

Neu erstellte Beiträge unterliegen der Moderation und werden erst sichtbar, wenn sie durch einen Moderator geprüft und freigeschaltet wurden.

Informationen
Frage Bitte beantworten Sie die untenstehende Frage bzw. lösen Sie die untenstehende Aufgabe.
Nachricht
Internet-Adressen werden automatisch erkannt und umgewandelt.
Smiley-Code wird in Ihrer Nachricht automatisch als Smiley-Grafik dargestellt.
Sie können BBCodes zur Formatierung Ihrer Nachricht nutzen.

Vorherige Beiträge 70

  • Abt. Paralellogramm-Gleichung
    ====================
    Die Paralellogramm-Gleichung macht eine Aussage über die Quadrate der beiden Parallelogrammseiten im Verhältnis zu den Quadraten über der beiden Diagonalen dieses Parallelogramms (In der Schule war mir das offenbar vollkommen entgangen, deshalb hat es mich heute so erstaunt!).

    In Vektorform lautet diese Gleichung: ||a+b||^2 + ||a-b||^2 = 2*(||a||^2 + ||b||^2),
    wobei ||..|| ´Länge von x´ bzw. Abstand bedeutet (Mathematiker nennen das ´Norm´).

    In Komponentenschreibweise - für Computer ohne Vektor-Mathematikpaket - kann man das so schreiben:
    (ax+bx)^2+(ay+by)^2 + (ax-bx)^2+(ay-by)^2 = 2 * (ax^2+ay^2 + bx^2+by^2)

    bzw. in XProfan:
    sqr(ax+bx)+sqr(ay+by) + sqr(ax-bx)+sqr(ay-by) = 2 * (sqr(ax)+sqr(ay) + sqr(bx)+sqr(by))

    Probieren wir doch mal mit verschiedenen Werten, ob das stimmt:

    Quellcode

    1. WindowTitle "Parallelogrammgleichung überprüfen"
    2. CLS:font 2:randomize
    3. AppendMenuBar 100," Zufallswert 1 "+\
    4. "Zufallswert 2 Abs. u. Relativer Fehler"
    5. Declare ax!,ay!,bx!,by! 'Zufallwerte in weitem Bereich
    6. Declare z1!,z2! 'Linke und rechte Gleichungsseite
    7. Declare z3! 'Relativer Fehler, Alarm falls > 10^-15
    8. Nochmal:
    9. ax!=(1-2*rnd(2))*rnd()*10^(rnd(200)-100)
    10. ay!=(1-2*rnd(2))*rnd()*10^(rnd(200)-100)
    11. bx!=(1-2*rnd(2))*rnd()*10^(rnd(200)-100)
    12. by!=(1-2*rnd(2))*rnd()*10^(rnd(200)-100)
    13. z1!= sqr(ax!+bx!)+sqr(ay!+by!) + sqr(ax!-bx!)+sqr(ay!-by!)
    14. z2!= 2*(sqr(ax!)+sqr(ay!) + sqr(bx!)+sqr(by!))
    15. print tab(2);format$("%g",z1!);tab(26);format$("%g",z2!),
    16. print tab(50);format$("%g",z1!-z2!)
    17. if (z1!-z2!)<>0
    18. z3!=abs((z1!-z2!)/z1!)
    19. print tab(39);"Rel.Error: ";format$("%g",z3!)
    20. waitinput 1200
    21. if z3!>val("1e-15")
    22. sound 2000,200
    23. Print "\n F E H L E R A L A R M bei folgenden Komponenten:"
    24. print ax!
    25. print ay!
    26. print bx!
    27. print by!
    28. waitinput
    29. waitinput
    30. endif
    31. endif
    32. 'waitinput 10'000
    33. goto "Nochmal"
    Alles anzeigen
    Bei mir sieht es so aus als ob es stimmt - Beweis ist das im strengen Sinne natürlich keiner.
    Gruss

    P.S.: Wer die einleuchtende geometrische Deutung dieser Sache wissen will, kann sich in diesem informativen Youtube-Video von Prof. Weitz schlau machen.

    PPS.: Den echten Beweis gibt´s nachstehend im Spoiler!
    Spoiler anzeigen

    Die Parallelogrammgleichung:

    (ax+bx)^2+(ay+by)^2 + (ax-bx)^2+(ay-by)^2 = 2 * (ax^2+ay^2 + bx^2+by^2)

    ergibt mit ausgerechneten Quadraten:

    (ax^2+bx^2+2*ax*bx) +(ay^2+by^2+2*ay*by) + (ax^2+bx^2-2*ax*bx)+(ay^2+by^2-2*ay*by) =
    = 2 * (ax^2+ay^2 + bx^2+by^2)

    bzw. ohne die unnötigen Klammern:

    ax^2+bx^2+2*ax*bx + ay^2+by^2+2*ay*by + ax^2+bx^2-2*ax*bx + ay^2+by^2-2*ay*by =
    = 2 * ax^2+2 * ay^2 + 2 * bx^2+2 * by^2

    und etwas georndeter:

    ax^2+ ax^2 + ay^2+ ay^2 + bx^2+bx^2 + by^2+by^2 + 2*ax*bx +2*ay*by -2*ax*bx -2*ay*by =
    = 2 * ax^2+2 * ay^2 + 2 * bx^2+2 * by^2 ,

    somit:

    2*ax^2+2*ay^2+2*bx^2+2*by^2 + 2*ax*bx +2*ay*by -2*ax*bx -2*ay*by =
    2*ax^2+2*ay^2+2*bx^2+2*by^2 ,

    was soviel bedeutet wie

    2*ax*bx-2*ax*bx + 2*ay*by -2*ay*by = 0,

    daher 0 = 0, und das stimmt ja wohl auch!

    q.e.d.
    ------
  • Fortsetzung: ... und das gilt auch für die ggw. 28.504 angemeldeten Mitglieder von Paules PC-Forum, + 1 Info-Bot, minus einige Doubletten, Karteileichen und tatsächlich Verstorbene. Mit anderen Worten: Hier bewegen sich rund 28.400 Mitglieder mit 0.21 % der Lichtgeschwindigkeit weiter! :P
  • Abt. Wie schnell bewegen sich Programmierer?
    ==================================
    Die tägliche Erddrehung verleiht einem Punkt am Äquator eine Geschwindigkeit von etwa 464 m/s = 1670 km/h,
    einem sitzenden Münchner auf 48.1351° Nördl. Breite immer noch 1115 km/h.

    Bezogen auf die jährliche Umkreisung der Sonne hat die Erde eine Geschwindigkeit von fast 30 Kilometern pro Sekunde,
    das sind rund 107.600 km/h. Das Sonnenesysstem selbst ist etwa 25.000 Lichtjahre vom Zentrum der Milchstraße entfernt und braucht für einen Umlauf grob 240 Millionen Jahre. Daraus folgt, daß sich das Sonnensystem mit rund 220 Kilometern pro Sekunde, das sind 782.000 km/h, in der Galaxie um das Zentrum bewegt.

    Die aus Messungen gegenüber der Hintergrundstrahlung des Universums abgeleitete Summe der verschiedenen Geschwindigkeitskomponenten unseres Sonnensystems beträgt etwa 370 Kilometer pro Sekunde bzw. 1.332.000 km/h.
    Die Milchstraße und ihre benachbarten Galaxien bilden nämlich die so genannte Lokale Gruppe, die sich auf das Sternbild Jungfrau (den Virgo-Haufen) zubewegt. Die Geschwindigkeit dieses Galaxienhaufens wurde zu etwa 630 Kilometer pro Sekunde = 2.268.000 km/h errechnet.

    Frage: Sind das nicht bereits relativistische Geschwindigkeiten?

    Kontrollrechnung :
    Lichgeschwindigkeit 299792,458 km/s = 17.987.547,48 km/min = 1.079.252.849 km/h

    2.268.000 km/h / 1.079.252.848,8 km/h = 0.002101454
    Antwort: Programmierer bewegen sich mit 0.21 % der Lichtgeschwindigkeit.
  • Abt. Zeitbedarf für Message-abholendes Waitinput stark reduzieren
    ================================================
    Jens-Arne Reumschüssel fand dazu kürzlich eine Lösung, die ohne API-Fummelei auskommt und eine deutliche Beschleunigung sowohl im Interpreter als auch Compiler bringt. Dazu im Anhang ein kleiner Benchmark.
    Gruss

    Quellcode

    1. WindowTitle "Messageabholendes Waitinput beschleunigt:"+\
    2. " Lösung von Jens-Arne Reumschüssel testen"
    3. '(CL) CopyLEFT 2019-01 by P.Specht, Vienna/AT/EU
    4. CLS:Randomize:font 2
    5. declare n&,tm&,i&,x&,y&,txt$,ungueltig&
    6. $IFNDEF COMPILER
    7. txt$="INTERPRETER"
    8. n&=2500
    9. $ELSE
    10. txt$="COMPILER"
    11. n&=4000
    12. $ENDIF
    13. AppendMenuBar 100," "+txt$+" zählt bis "+str$(n&)+\
    14. ". ESC-Taste soll erkannt werden und zerstört den laufenden Test!"
    15. print "\n OHNE Beschleunigung:",:x&=%pos:y&=%csrlin
    16. waitinput 3:sound 200,20:ungueltig&=0
    17. tm&=&GetTickCount
    18. Whileloop n&:locate 20,20:print &Loop;" ";
    19. i&=&Loop
    20. waitinput 3
    21. :if %Key="27":ungueltig&=1:break:endif
    22. Endwhile
    23. tm&=&GetTickCount-tm&
    24. locate y&,x&
    25. ifnot ungueltig&: print tm&,"ms"
    26. else :print "<abgebrochen>":clear ungueltig&
    27. Endif
    28. print "\n NUR Fastmode:",:x&=%pos:y&=%csrlin
    29. waitinput 3:sound 200,20:ungueltig&=0
    30. tm&=&GetTickCount
    31. set("Fastmode",1)
    32. Whileloop n&:locate 20,20:print &Loop;" ";
    33. waitinput 3
    34. :if %Key="27":ungueltig&=1:break:endif
    35. Endwhile
    36. set("Fastmode",0)
    37. tm&=&GetTickCount-tm&
    38. locate y&,x&
    39. ifnot ungueltig&: print tm&,"ms"
    40. else :print "<abgebrochen>":clear ungueltig&
    41. Endif
    42. print "\n NUR MIT rnd()-Chance:",:x&=%pos:y&=%csrlin
    43. waitinput 3::sound 200,20:ungueltig&=0
    44. tm&=&GetTickCount
    45. Whileloop n&:locate 20,20:print &Loop;" ";
    46. if rnd()>0.95
    47. waitinput 3
    48. :if %Key="27":ungueltig&=1:break:endif
    49. endif
    50. Endwhile
    51. tm&=&GetTickCount-tm&
    52. locate y&,x&
    53. ifnot ungueltig&: print tm&,"ms"
    54. else :print "<abgebrochen>":clear ungueltig&
    55. Endif
    56. print "\n LÖSUNG von Jens-Arne R.: Fastmode mit %PeekMessage:",:x&=%pos:y&=%csrlin
    57. waitinput 3:sound 200,20:ungueltig&=0
    58. tm&=&GetTickCount
    59. set("Fastmode",1)
    60. Whileloop n&:locate 20,20:print &Loop;" ";
    61. if %PeekMessage
    62. waitinput 3
    63. :if %Key="27":ungueltig&=1:break:endif
    64. Endif
    65. Endwhile
    66. set("Fastmode",0)
    67. tm&=&GetTickCount-tm&
    68. locate y&,x&
    69. ifnot ungueltig&: print tm&,"ms"
    70. else :print "<abgebrochen>":clear ungueltig&
    71. Endif
    72. print "\n OHNE JEDE ABFRAGE:",:x&=%pos:y&=%csrlin
    73. waitinput 3:sound 200,20:ungueltig&=0
    74. tm&=&GetTickCount
    75. Whileloop n&:locate 20,20:print &Loop;" ";
    76. :
    77. Endwhile
    78. tm&=&GetTickCount-tm&
    79. locate y&,x&
    80. ifnot ungueltig&: print tm&,"ms"
    81. else :print "<abgebrochen>":clear ungueltig&
    82. Endif
    83. hold:
    84. sound 2000,60
    85. Waitinput 7000:casenot %wmTimer:goto "hold"
    86. END
    Alles anzeigen
  • Abt. Parametrierte Figuren
    ====================
    Die sog. Superformel (Youtube, engl.) erzeugt bei geeigneter Wahl der Parameter recht interessante Figuren. Für Bildschirmschoner ist das aber zuwenig - da will man Bewegung. Doch auch diese wird irgendwann langweilig, wie das nachstehende Machwerk als abschreckendes Beispiel zeigt.
    Gruss

    P.S. Ich trauere immer noch dem alten DOS-Bildschirmschoner Dazzle nach. Nun habe ich ihn wenigstens als Youtube-Video wiedergefunden: Nostalgie pur!

    Quellcode

    1. WindowTitle "Figuren mittels Superformel erzeugen"
    2. WindowStyle 24:Cls rgb(0,0,0):ShowMax
    3. var xh&=width(%hwnd)\2:var yh&=height(%hwnd)\2:randomize:font 2
    4. Proc Superformel 'liefert Radius(phi!,...)
    5. parameters phi!,Symmetrie!,Form1!,Form2!,Form3!,xHalbachse!,yHalbachse!
    6. casenot xHalbachse!*yHalbachse!:return 0
    7. var Winkel!=Symmetrie!*phi!*0.25
    8. 'r! = (abs(cos(Winkel!)/xHalbachse!)^Form2!+abs(sin(Winkel!)/yHalbachse!)^Form3!)^(-1/Form1!)
    9. var co!=cos(Winkel!):var si!=sin(Winkel!)
    10. var r!=0:case co!<>0:r!=abs(co!/xHalbachse!)^Form2!
    11. case si!<>0:r!=r!+abs(sin(Winkel!)/yHalbachse!)^Form3!
    12. :if r!>0:r! = r!^(-1/Form1!):else r!=0:endif
    13. return r!
    14. EndProc
    15. :Proc To_xy :parameters r!,phi!:x!=r!*cos(phi!):y!=r!*sin(phi!):endproc
    16. :Proc rPhi :parameters x!,y!:r!=sqrt(sqr(x!)+sqr(y!)):phi!=ArcTan4(x!,y!):endproc
    17. Proc ArcTan4 :parameters x!,y!:var pi!=3.1415926535897932:var w!=0
    18. if x!=0:if y!>0:w!=pi!*0.5:elseif y!<0:w!=pi!*1.5:else :w!=0:endif :return w!:elseif x!>0
    19. if y!=0:w!=0:return w!:elseif y!>0:if x!>y!:w!=arctan(y!/x!):else :w!=pi!/2-arctan(x!/y!):endif
    20. return w!:else :if x!<-y!:w!=pi!*1.5+arctan(x!/-y!):else :w!=2*pi!-arctan(-y!/x!):endif :return w!
    21. endif :else :if y!>0:if x!>-y!:w!=pi!/2+arctan(-x!/y!):return w!:else :w!=pi!-arctan(y!/-x!)
    22. return w!:endif :elseif y!<0:if x!<y!:w!=pi!+arctan(-y!/-x!):else :w!=pi!*1.5-arctan(-x!/-y!)
    23. endif :return w!:else :w!=pi!:return w!:endif :endif :Print " ArcTan4 ERROR":waitinput 1e5
    24. endproc
    25. MAIN:
    26. var s!=100 ' Size
    27. var f!=pi()/180
    28. Declare x!,y!,r!,phi!,w!,n&,\
    29. \
    30. Symmetrie!,Form1!,Form2!,Form3!,xHalbachse!,yHalbachse! :var Data$=\
    31. "3 5 18 18 1 1 "+"6 20 7 18 1 1 "+"4 2 4 13 1 1 "+"7 2 4 17 1 1 " +\
    32. "7 3 6 6 1 1 "+"3 3 14 2 1 1 "+"19 9 14 11 1 1 "+"12 15 20 3 1 1 "+\
    33. "8 1 1 8 1 1 "+"8 1 5 8 1 1 "+"8 3 4 3 1 1 "+"8 7 8 2 1 1 "+\
    34. "5 2 6 6 1 1 "+"6 1 1 6 1 1 "+"6 1 7 8 1 1 "+"7 2 8 4 1 1 "+\
    35. "3 2 8 3 1 1 "+"3 6 6 6 1 1 "+"4 1 7 8 1 1 "+"4 4 7 7 1 1 "+\
    36. "2 2 2 2 1 1 "+"2 1 1 1 1 1 "+"2 1 4 8 1 1 "+"3 2 5 7 1 1"
    37. Declare LSymmetrie!,LForm1!,LForm2!,LForm3!,LxHalbachse!,LyHalbachse!
    38. Declare p!,q!, p1!,p2!,p3!,p4!,p5!,p6!
    39. Nochmal:
    40. Whileloop 0,23:n&=&Loop
    41. Symmetrie!=val(substr$(Data$,6*n&+1," "))
    42. Form1!=val(substr$(Data$,6*n&+2," "))
    43. Form2!=val(substr$(Data$,6*n&+3," "))
    44. Form3!=val(substr$(Data$,6*n&+4," "))
    45. xHalbachse!=val(substr$(Data$,6*n&+5," "))
    46. yHalbachse!=val(substr$(Data$,6*n&+6," "))
    47. Whileloop 200,0,-2
    48. p!=&Loop/200:q!=1-p!
    49. p1!=LSymmetrie!*p!+Symmetrie!*q!
    50. p2!=LForm1!*p!+Form1!*q!
    51. p3!=LForm2!*p!+Form2!*q!
    52. p4!=LForm3!*p!+Form3!*q!
    53. p5!=LxHalbachse!*p!+xHalbachse!*q!
    54. p6!=LyHalbachse!*p!+yHalbachse!*q!
    55. phi!=0
    56. r!=Superformel(phi!,p1!,p2!,p3!,p4!,p5!,p6!)
    57. To_xy(r!,phi!)
    58. 'cls 0:locate 1,1:print " ";n&;" - ";&Loop;" "
    59. MCLS %maxx, %maxy, 0'$FFFFFF
    60. StartPaint -1
    61. Usepen 0,12,rgb(0,255,0)
    62. moveto xh&+s!*x!,yh&-s!*y!
    63. whileloop 0,360,3 :phi!=f!*&Loop
    64. r!=Superformel(phi!,p1!,p2!,p3!,p4!,p5!,p6!)
    65. To_xy(r!,phi!):Lineto xh&+s!*x!,yh&-s!*y!
    66. endwhile
    67. EndPaint
    68. MCopyBMP 0, 0 - %maxx,%maxy > 0, 0; 0
    69. ' waitinput 42
    70. Endwhile
    71. LSymmetrie!=Symmetrie!
    72. LForm1!=Form1!
    73. LForm2!=Form2!
    74. LForm3!=Form3!
    75. LxHalbachse!=xHalbachse!
    76. LyHalbachse!=yHalbachse!
    77. waitinput 1000
    78. 'cls 0
    79. Endwhile
    80. beep
    81. n&=0
    82. goto "Nochmal"
    Alles anzeigen
  • Abt. Verlegenheitslösung
    ==================
    Nachdem die PTB Braunschweig die Atomzeitserver offenbar etwas umgestellt hat, funktionieren einige Programme nicht mehr. Da es aber Branchenservices und Fachgeschäfte mit Atomzeitangaben gibt, ist die folgende Verlegenheitslösung entstanden - Achtung, in nachstehender Form vor allem für Österreich gültig! Aber auf Google kann man sicher Dienste finden, die auf das jeweilige Land Bezug nehmen.
    Gruss

    Quellcode

    1. WindowTitle "Uhrzeit und Datum":WindowStyle 24:Window 100,100 - 200,100
    2. cls:font 2:declare c$,url$,OnString$,ldl&,lon&,zeit$,datm$,in&,Tag$
    3. url$="https://www.zeitzonen.de/oesterreich.html":print "\n zeitzonen.de ..."
    4. @downloadfile(url$):while %Loading:waitinput 333:endwhile:ldl&=&Bytesread
    5. CLS':print "\n ";ldl&;" Byte\n":OnString$="time clock":lon&=len(OnString$)
    6. in&=instr(OnString$,$Download):if in&<=0:print " Zeit nicht gefunden!"
    7. else :zeit$=mid$($Download,in&+lon&+2,8):endif
    8. OnString$="<span class="+chr$(34)+"weekday"+chr$(34)+">"
    9. lon&=len(OnString$):in&=instr(OnString$,$Download)
    10. if in&<=0:print " Tag nicht gefunden!":else :Tag$=mid$($Download,in&+lon&,2)
    11. endif:in&=instr(chr$(34)+"date"+chr$(34),$Download)
    12. if in&<=0:print "Datum nicht gefunden!"
    13. else :Datm$=mid$($Download,in&+7,10):endif
    14. print "\n ";Tag$;" ";Datm$;" ";Zeit$:waitinput 6000:End
    Alles anzeigen
  • Lösung zu EaR 14: STRG+D
    --------------------------
    Die Tabelle im Spoiler enthält Tastenkombinationen für die Arbeit mit WordPad.
    Spoiler anzeigen

    WordPad Tastaturkürzel
    ======================
    Strg+N ... Ein neues Dokument erstellen
    Strg+O ... Öffnen eines vorhandenen Dokuments
    Strg+S ... Änderungen an einem Dokument speichern
    F12 ...... Speichern Sie das Dokument als neue Datei.
    Strg+P ... Ein Dokument drucken
    Alt+F4 ... WordPad schließen
    Strg+Z ... Eine Änderung rückgängig machen
    Strg+Y ... Eine Änderung wiederholen
    Strg+A ... Das gesamte Dokument auswählen
    Strg+X ... Eine Auswahl ausschneiden
    Strg+C ... Kopieren einer Auswahl in die Zwischenablage
    Strg+V ... Eine Auswahl aus der Zwischenablage einfügen
    Strg+B ... Markierten Text fett setzen
    Strg+I ... Ausgewählten Text kursiv darstellen
    Strg+U ... Markierten Text unterstreichen
    Strg+=== . Markierten Text tiefgestellt machen
    Strg+Umschalt+== Markierten Text hochstellen
    Strg+L ... Text links ausrichten
    Strg+E ... Textmitte ausrichten
    Strg+R ... Text rechtsbündig ausrichten
    Strg+J ... Text ausrichten
    Strg+1 ... Einzelzeilenabstand einstellen
    Strg+2 ... Doppelten Zeilenabstand einstellen
    Strg+5 ... Zeilenabstand auf 1,5 einstellen
    Strg+Umschalt+> .Schriftgröße vergrößern
    Strg+Umschalt+< .Verkleinern der Schriftgröße
    Strg+Shift+A ... Ändernt die Zeichen alle Großbuchstaben.
    Strg+Shift+L ... Ändern des Aufzählungszeichens
    Strg+D ... Einfügen einer Microsoft Paint Zeichnung
    Strg+F ... Text in einem Dokument suchen
    F3 ....... Suchen Sie die nächste Instanz des Textes im Dialogfenster Suchen.
    Strg+H ... Text in einem Dokument ersetzen
    Strg+Linkspfeil ....... Bewegen Sie den Cursor ein Wort nach links.
    Strg+Rechtspfeil ...... Bewegen Sie den Cursor ein Wort nach rechts.
    Strg+Pfeil_nach_oben .. Bewegen Sie den Cursor auf die Zeile über der Zeile.
    Strg+Pfeil_nach_unten . Bewegen Sie den Cursor auf die folgende Zeile
    Strg+Home ... An den Anfang des Dokuments springen
    Strg+Ende ... An das Ende des Dokuments springen
    Strg+Seite_nach_oben ... Eine Seite nach oben blättern
    Strg+Seite_nach_unten .. Eine Seite nach unten blättern
    Strg+Löschen ... Das nächste Wort löschen
    F10 ............ Keytips anzeigen
    Umschalt+F10 ... Zeigt das aktuelle Kontextmenü an.
    F1 .............. WordPad-Hilfe öffnen