Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1563 | Anzahl registrierter User: 1896 | Besucher online: 233
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

Quadratwurzel ohne Sqrt() Funktion ziehen


Autor: Tim Hartwig
Sprache: VB.NET
Bewertung:
6.65 (4 votes)
Anzahl der Aufrufe: 9352
  
Kick it on dotnet-kicks.de  

Beschreibung:

Nun ich weiß das es bereits eine Funktion zum Wurzeln ziehen im Framework gibt aber ich wollte es auch als eigene Funktion veröffentlichen damit man sehen kann wie das ganze funktioniert.

Abgelegt unter: Wurzel, Mathe.



Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Public Function SquareRoot(ByVal Expression As Double) As Double
    Dim Number As Double = 1
    Dim Tmp As Double = 0

    For i As Long = 1 To CLng(Expression)
        Number = 0.5 * (Number + (Expression / Number))
        If Tmp = Number Then Return Number
        Tmp = Number
    Next
    Return Number
End Function
Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)

Günther Foidl schrieb am:  25.09.2008 00:09:17

Aus numerischer Sicht ist ein Vergleich mit = bei Gleitkommazahlen nicht unproblematisch - aufgrund der ungenauen Darstellung dieser Zahlen.

Besser wäre ein Vergleich der Art:

If (Abs(Tmp - Number) < epsilon) Then Return Number

wobei epsilon für die Maschinengenauigkeit steht.
Siehe auch http://dotnet-snippets.de/dns/maschinengenauigkeit-SID961.aspx
Harper schrieb am:  11.12.2008 22:30:02

Public Function SquareRoot(ByVal Expression As Double, ByVal Potenz as Byte) As Double
Dim Number as Double
Number = Expression ^ (1/Potenz)
Return Number
End Function

Ich habs mal umgeschrieben, weil es sich für Wuzelooperationen einfach gut macht ;)

Eine Wurzel ist nichts anders als eine umgekehrte Potenzierung, also muss die Potenz nur negiert werden, dabei gilt, eine Potenz von 1 gibt den natürlichen Wert zurück, während Potenzen < 1 und > 0 die Wurzel darstellt. Somit hast Du nun eine klitze kleine Funktion und fundamentales mathematisches Wissen, um alle Potenzaufgaben zu lösen.

Harper
(Kryptographischer Wahnsinn in Zahlen und Worten)


Diese Snippets könnten für Sie interessant sein:
[C#] Quadratwurzel ziehen
[VB.NET] Ganzzahlige Wurzel
[C#] Wurzel und Potenz berechnen ohne Math-Klasse
[C#] Summe 1..n berechnen
[C#] Fibonacci-Folge berechnen
[C#] n-te Fibonaccizahl rekursiv berechnen
[C#] Summe 1²...n² berechnen.
[C#] Summe 1³..n³ berechnen.
[C#] größten gemeinsamen Teiler berechnen.
[VB.NET] Multiplikation von übergroßen Zahlen
[C#] Dreiecksberechnung
[VB.NET] PI nach der Bailey-Borwein-Plouffe-Formel berechnen
[VB.NET] Quadratische Gleichung mit der PQ Formel lösen
[VB.NET] Basisrechenfunktionen für einen Kreis
[C++] Exponents
[C#] Quersummenberechnung
[C#] Geodaten in sexagesimal Format umrechnen
[VB.NET] Größten gemeinsamen Teiler berechnen
[C#] Addiere alle ganzen Zahlen von x bis y
[C++] Caesar
[C#] "echte" Teiler Summe berechnen
[C#] Formelevaluierung aus RPN Form
[C#] Prüfung auf narzisstische Zahlen
[C#] CellMatrix
[C#] Maschinengenauigkeit
[C#] Flächenberechnungen am Kreis,Quadrat,Parallelogramm,Trapez
[C#] Bruch-Klasse
[VB.NET] einfacher rekursiver Mathe Parser
[VB.NET] Permutation nachweisen
[VB.NET] Das Sieb des Eratosthenes
[VB.NET] Primfaktorzerlegung
[VB.NET] Größter gemeinsamer Teiler
[VB.NET] Modulare Exponentation
[VB.NET] Fibonacci-Folge iterativ erzeugen
[VB.NET] Das Sieb von Atkin
[VB.NET] Das Sieb von Atkin (2)
[VB.NET] Werte zweier Variablen tauschen
[VB.NET] Binäre Exponentation
[VB.NET] Größter gemeinsamer Teiler (2)
[VB.NET] Binomialkoeffizient
[VB.NET] Kleinster natürlicher Teiler > 1
[VB.NET] Das Sieb von Atkin (2) - aktuell
[VB.NET] Dezimalzahl in Zahl der Basis b < 37 konvertieren

schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.