fehler mit Sinuns

  • Hi,

    Ich versuche die Berechnung für die Fläche eines Kreissegments zu automatisieren.
    [Blockierte Grafik: http://upload.wikimedia.org/math/e/d/5/ed596d7edc629352de5f04ddf7379d2a.png]

    Aber in der Formel taucht Sinus auf, und der wird in Autoit anscheinend nicht richtig berechnet.
    Als sinus für 180 bekomm ich -0,8011... raus und das kann nich stimmen.

    Jetzt frag ich mich wie ich das Problem umgehen\beseitigen kann.

    Hier ist der Code:

    [autoit]

    func flaeche_kreissegment($r, $alpha)
    $Flaeche_Kreissegment1= $pi*$alpha/360
    $Flaeche_Kreissegment2=sin($alpha)/2
    $Flaeche_Kreissegment3=$Flaeche_Kreissegment1-$Flaeche_Kreissegment2
    $Flaeche_Kreissegment4=$r^2
    $Flaeche_Kreissegment=$Flaeche_Kreissegment4*$Flaeche_Kreissegment3

    msgbox(0, "Ergebnis", "Das Kreissegment hat eine Größe von "&$Flaeche_Kreissegment)
    EndFunc

    [/autoit]


    Es wäre schön wenn ihr mit sagen könntet ob ich einfach nur zu doof bin um den Befehl richtig ein zutippen und ob es wiklich ein Fehler in Autoit ist.

    Falls es eingenverschuldung ist bitte ich dies zu entschuldigen. :)

    Mfg
    monkey

    Monkey - die finale Potenz von göttlich!
    Sloganizer

  • autoit rechnet mit rad, du möchtest den Wert aber in deg deswegen einfach noch
    #include <Math.au3>
    _Degree ( $nRadians )


    Parameters

    $nRadians Radians to be converted into degrees.


    Return Value

    Success: Degrees converted from radians.
    Failure: Blank string and @error set to 1.

  • Entschuldigung das ich das schon wieder unterm Tisch herkrame aber ich hab das jetzt versucht so zu lösen:

    [autoit]

    func flaeche_kreissegmentR($r, $alpha)
    $Flaeche_Kreissegment1= $pi*$alpha/360
    $degToRad = $pi / 180
    $Flaeche_Kreissegment2=sin($alpha*$degToRad)/2
    $Flaeche_Kreissegment3=$Flaeche_Kreissegment1-$Flaeche_Kreissegment2
    $Flaeche_Kreissegment4=$r^2
    $Flaeche_Kreissegment=$Flaeche_Kreissegment4*$Flaeche_Kreissegment3

    msgbox(0, "Ergebnis", "Das Kreissegment hat eine Größe von "&$Flaeche_Kreissegment)
    EndFunc

    [/autoit]

    Aber das Klappt nicht immer z.B wenn ich als Radius 9 Angebe und als Alpha 90 dann bekomme ich da 23.1172512351933 raus und das kann nicht stimmen weil r²*Pi= 9²*Pi = 254,46900494077325231547411404564. Und wenn man das durch 4 rechnet dann kommt da aufjedenfall mehr als 23,.. raus.

    Wenn ich aber als Alpha z.B 180 eingebe dann passt das schon wieder.
    Bin gerade doch etwas verwirrt ?(

    Mfg
    monkey

    Monkey - die finale Potenz von göttlich!
    Sloganizer

  • deg 2 rad ist 180 / Pi , nicht Pi / 180 !

    Spoiler anzeigen
    [autoit]

    Const $PI = 3.14159265358979
    Const $DegToRad = 180 / $PI

    [/autoit] [autoit][/autoit] [autoit]

    func flaeche_kreissegmentR($r, $alpha)
    $Flaeche_Kreissegment1= $pi*$alpha/360
    ;$degToRad = $pi / 180
    $Flaeche_Kreissegment2=sin($alpha*$degToRad)/2
    $Flaeche_Kreissegment3=$Flaeche_Kreissegment1-$Flaeche_Kreissegment2
    $Flaeche_Kreissegment4=$r^2
    $Flaeche_Kreissegment=$Flaeche_Kreissegment4*$Flaeche_Kreissegment3

    msgbox(0, "Ergebnis", "Das Kreissegment hat eine Größe von "&$Flaeche_Kreissegment)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    flaeche_kreissegmentR(9,90)

    [/autoit]
  • Ich hab das Script mal durchlaufen lassen und bekomme "102.257..." raus .
    Als ich dann mal 180 als Alpha gesetzt hab kamen nur "104,08..."raus.

    Und wenn 180° nur 1,8 gößer ist als 90° dann find ich das schon arg wenig.

    Mfg
    monkey

    Monkey - die finale Potenz von göttlich!
    Sloganizer

    • Offizieller Beitrag

    Dann korrigiere mal deine Formel:

    [autoit]

    ConsoleWrite(' 90° : ' & _AreaKreisSegment(9, 90) & @CRLF)
    ConsoleWrite('180° : ' & _AreaKreisSegment(9, 180) & @CRLF)
    Func _AreaKreisSegment($Radius, $Winkel)
    Local Const $pi = 3.14159265358979
    Local $degToRad = $pi / 180
    Return $Radius^2*(($pi*$Winkel/360)-(Sin($Winkel*$degToRad)/2))
    EndFunc

    [/autoit]
    Code
    90° : 23.1172512351932
    180° : 127.234502470386

    Edit: Oops, da hatte ich doch glatt den Radius mit dem Rest potenziert :D - nu stimmts aber

  • Hi,

    aber jetzt bin ich total verwirrt. Sollte das was Bugfix da jetzt geschrieben hat richtig sein oder ist das eine andere Schreibweise meines Codes um mir zu verdeutlichen wo der Fehler liegt?

    Wenn mir gerade einen wink mit dem Zaunpfahl auf den Fehler gegeben wurde dann hat das nicht geklappt, da ich da immer noch nits erkenne.

    Falls das Script von Bugfix richtig sein sollte dann frag ich mich warum die 90° ca 16-mal kleiner sind als die 180°.

    Ich bitte nochmals um entschuldigung für meine dummen Fragen, und danke euch für eure extreme Geduld.

    Mfg
    monkey

    Monkey - die finale Potenz von göttlich!
    Sloganizer

    • Offizieller Beitrag

    Ich hab nur deine Formel 1:1 umgesetzt. Ob sie sachlich richtig ist, weiß ich nicht. ;)
    Die Berechnung des Sinus hab ich analog aus der Hilfe entnommen:

    [autoit]

    $degToRad = $pi / 180
    $y = Sin(90 * $degToRad) ;sine of 90°

    [/autoit]

    Aber ich werd jetzt mal mein Tabellenbuch vorholen und schauen, wie die Formel zur Berechnung ist. Dann melde ich mich nochmal.


    EDIT:
    Ich glaube, ich weiß, wo das Problem liegt.
    Also meine Berechnung ist korrekt.
    Aber ich gehe mal davon aus, dass du gar kein Kreissegment meinst!
    Du willst sicher den Flächeninhalt eines "Tortenstücks" ermitteln - das ist aber kein Kreissegment sondern ein Kreissektor!
    Schau mal unter Wikipedia nach Kreissegment - dort ist es gut abgebildet.

    Und für dein Tortenstück die Fläche ist doch simpel:
    Teilfläche = Fläche Vollkreis / 360 * Winkel
    Ask = Winkel / 360 * pi * Radius²

  • deg 2 rad ist 180 / Pi , nicht Pi / 180 !

    Die Berechnung des Sinus hab ich analog aus der Hilfe entnommen:

    [autoit]

    $degToRad = $pi / 180
    $y = Sin(90 * $degToRad) ;sine of 90°

    [/autoit]

    Ihr macht mich fertig ^^ . Was denn nun der eine sagt $pi/180 und der andere 180/$pi.

    Mfg
    monkey

    Monkey - die finale Potenz von göttlich!
    Sloganizer

    • Offizieller Beitrag

    Vertrau der Hilfe ;) - das ist richtig.
    Hier, das was du wohl wolltest:

    [autoit]

    ConsoleWrite(' 90° : ' & _AreaKreisSektor(9, 90) & @CRLF)
    ConsoleWrite('180° : ' & _AreaKreisSektor(9, 180) & @CRLF)
    Func _AreaKreisSektor($Radius, $Winkel)
    Local Const $pi = 3.14159265358979
    Return $Radius^2*($pi*$Winkel/360)
    EndFunc

    [/autoit]
    Code
    90° : 63.6172512351933
    180° : 127.234502470387
  • Kannst mir ruhig glauben: DegToRad = Pi / 180 da:

    360° = 2 * Pi rad
    --->
    1° = (Pi / 180) rad

    also bedeutet die Einheit ° nichts weiter als (Pi / 180) - und damit muss demnach dein Gradbetrag multipliziert werden um zur Einheit radiant zu kommen.

    BugFix :
    Das ist aber die Gleichung für den Kreissektor - er wollte doch aber das Kreissegment - oder?

    monkey - so sollte es funktionieren:

    Spoiler anzeigen
    [autoit]

    Global Const $PI = 3.14159265358979
    Const $DegToRad = $PI / 180

    [/autoit] [autoit][/autoit] [autoit]

    func flaeche_kreissegmentR($r, $alpha)
    Return ($r ^ 2) * ((($Pi * $alpha) / 360) - Sin($DegToRad * $alpha) / 2 )
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    msgbox(0, "Ergebnis", "Das Kreissegment hat eine Größe von "& flaeche_kreissegmentR(9,180))

    [/autoit]

    Edit: BugFix : Oh sorry - hab überlesen das du das bewusst gemacht hast mit dem Kreissektor :whistling:

  • Kannst mir ruhig glauben: DegToRad = Pi / 180 da:

    360° = 2 * Pi rad
    --->
    1° = (Pi / 180) rad

    Ja, sry. Es gibt 2 Möglichkeiten zum Berechnen, hab nicht gemerkt, dass du die 2. hast :):

    so wie die Funk Radian:
    $DegToRad = 180 / PI = 57.2957795
    $Radian = $Degree / $DegToRad

    oder

    $DegToRad = PI / 180 = 0.0174532925
    $Radian = $Degree * $DegToRad