ln (1 + x) in eigenen Code ohne Math.Log(1 + x)

  • VB.NET

Es gibt 44 Antworten in diesem Thema. Der letzte Beitrag () ist von Facebamm.

    dekon12 schrieb:

    Das einzige was mir noch den Kopf zerbricht ist ,dass
    … Du anscheinend nicht bereit bist, auf gestellte, offene Fragen einzugehen. Bis zu einer Änderung dieser Einstellung bin ich hier raus.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Wie dem auch sei, hab es selber hinbekommen!

    VB.NET-Quellcode

    1. ​Option Strict On
    2. Public Class Form1
    3. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    4. Dim x As Double = CType(TextBox1.Text, Double)
    5. Dim n As Integer = CType(TextBox2.Text, Integer)
    6. Dim Summe As Double = 0
    7. For k As Integer = 1 To n Step 1
    8. Dim i As Double = (x ^ k / k)
    9. Dim newi As Double = -(x ^ k / k)
    10. If k Mod 2 = 0 Then
    11. i = i * (-1)
    12. End If
    13. Summe = Summe + i
    14. Next k
    15. TextBox3.Text = CStr(Summe)
    16. x = Math.Log(1 + x)
    17. TextBox4.Text = CStr(x)
    18. End Sub
    19. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    20. AcceptButton = Button1
    21. End Sub
    22. End Class


    Anbei der Code, Formatierungsfehler könnt ihr mir bestimmt verzeihen!
    @dekon12 ganz langsam, leider zu langsam, wird es.
    Ich hab mal Deinen Code etwas überarbeitet:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Form1
    3. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    4. Dim x As Double = Double.Parse(TextBox1.Text)
    5. Dim n As Integer = Integer.Parse(TextBox2.Text)
    6. Dim Summe As Double = 0
    7. For k As Integer = 1 To n
    8. Dim i As Double = (x ^ k / k)
    9. If k Mod 2 = 0 Then
    10. i = -i
    11. End If
    12. Summe += i
    13. Next k
    14. TextBox3.Text = Summe.ToString()
    15. x = Math.Log(1 + x)
    16. TextBox4.Text = x.ToString()
    17. End Sub
    18. 'Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    19. ' AcceptButton = Button1
    20. 'End Sub
    21. End Class
    Den AcceptButton setzt Du besser im Designer.
    Als nächstes verwendest Du zur Zahleneingabe ein NumericUpDown-Control. ;)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    C-Quellcode

    1. int ilog2(int x) {
    2. int i, j, k, l, m;
    3. x = x | (x >> 1);
    4. x = x | (x >> 2);
    5. x = x | (x >> 4);
    6. x = x | (x >> 8);
    7. x = x | (x >> 16);
    8. // i = 0x55555555
    9. i = 0x55 | (0x55 << 8);
    10. i = i | (i << 16);
    11. // j = 0x33333333
    12. j = 0x33 | (0x33 << 8);
    13. j = j | (j << 16);
    14. // k = 0x0f0f0f0f
    15. k = 0x0f | (0x0f << 8);
    16. k = k | (k << 16);
    17. // l = 0x00ff00ff
    18. l = 0xff | (0xff << 16);
    19. // m = 0x0000ffff
    20. m = 0xff | (0xff << 8);
    21. x = (x & i) + ((x >> 1) & i);
    22. x = (x & j) + ((x >> 2) & j);
    23. x = (x & k) + ((x >> 4) & k);
    24. x = (x & l) + ((x >> 8) & l);
    25. x = (x & m) + ((x >> 16) & m);
    26. x = x + ~0;
    27. return x;
    28. }


    Edit: ~NoFear23m
    @'Facebamm' Bitte in Zukunft auch gerne was dazu schreiben und vorallem die Quelle angeben: stackoverflow.com/questions/21…e-operators-in-c/21443178

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Nofear23m“ ()