NewtonRootFinder 1.0.2

dotnet add package NewtonRootFinder --version 1.0.2
                    
NuGet\Install-Package NewtonRootFinder -Version 1.0.2
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="NewtonRootFinder" Version="1.0.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="NewtonRootFinder" Version="1.0.2" />
                    
Directory.Packages.props
<PackageReference Include="NewtonRootFinder" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add NewtonRootFinder --version 1.0.2
                    
#r "nuget: NewtonRootFinder, 1.0.2"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package NewtonRootFinder@1.0.2
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=NewtonRootFinder&version=1.0.2
                    
Install as a Cake Addin
#tool nuget:?package=NewtonRootFinder&version=1.0.2
                    
Install as a Cake Tool

NewtonRootFinder

NuGet

Biblioteka C# do znajdowania wszystkich pierwiastków rzeczywistych wielomianów metodą Newtona z deflacją.

Skąd pomysł?

Podczas zajęć z programowania gdy szybko skończyłem proste zadanie, nauczyciel dał mi dodatkowe trudniejsze. Moim zadaniem było zaimplementować metodę Newtona dla funkcji kwadratowej aby pokazać miejsca zerowe wielomianów. Gdy zacząłem szukać gotowych przykładów w C# okazało się że w internecie trudno znaleźć implementację która łączy metodę Newtona z deflacją wielomianu i jest napisana w sposób zrozumiały.

Instalacja

dotnet add package NewtonRootFinder

Użycie

using NewtonRootFinder;

double[] coefficients = { 1, -6, 11, -6 }; // x³ - 6x² + 11x - 6
var roots = RootFinder.FindAllRoots(coefficients);

foreach (var root in roots)
{
    Console.WriteLine(root); // 0,9999999999999996 | 2,000000000000001 | 2,999999999999999
}

Jak to działa?

Biblioteka używa metody Newtona połączonej z deflacją wielomianu. Algorytm działa w trzech krokach:

  1. Dla każdego punktu startowego z zakresu [-10, 10] wywołuje metodę Newtona
  2. Po znalezieniu pierwiastka dzieli wielomian przez (x - pierwiastek) deflacja obniża stopień wielomianu
  3. Powtarza proces na wielomianie niższego stopnia aż znajdzie wszystkie pierwiastki

Do obliczania wartości wielomianu i jego pochodnej używany jest schemat Hornera, który jest szybszy i bardziej stabilny numerycznie niż liczenie potęg.

Parametry

Parametr Typ Opis Domyślnie
coefficients double[] Współczynniki wielomianu od najwyższej potęgi wymagany
epsilon double Dokładność przybliżenia 1e-9

Znane ograniczenia

  • Punkty startowe są stałe w zakresie [-10, 10] pierwiastki spoza tego zakresu mogą nie zostać znalezione.
  • Obsługiwane są tylko pierwiastki rzeczywiste pierwiastki zespolone nie są wspierane.
  • Podwójne pierwiastki mogą być mniej dokładne numerycznie.

Słownik pojęć

Metoda Newtona - algorytm do znajdowania pierwiastków funkcji. Zaczyna od punktu startowego i iteracyjnie poprawia przybliżenie według wzoru x = x - f(x) / f'(x) aż wynik jest wystarczająco bliski zeru.

Schemat Hornera - efektywny sposób obliczania wartości wielomianu. Zamiast liczyć potęgi osobno, składa wynik w jednym przebiegu pętli tylko mnożenie i dodawanie na każdym kroku. Jest szybszy i mniej podatny na błędy zaokrągleń niż tradycyjne podejście.

Deflacja wielomianu - po znalezieniu pierwiastka r dzielimy wielomian przez (x - r), co obniża jego stopień o jeden. Dzięki temu możemy szukać kolejnych pierwiastków w prostszym wielomianie.

Notatka

Projekt powstał z pomocą różnych asystentów AI, które pomagały mi zrozumieć algorytm metody Newtona, schemat Hornera oraz deflację wielomianu. Kod był przeze mnie sprawdzany, testowany i na każdym kroku analizowany zależało mi żeby rozumieć każdą linię, a nie tylko skopiować gotowe rozwiązanie. Przy projekcie pomagał mi również nauczyciel.

Wkład w projekt

Jeśli znalazłeś błąd lub masz pomysł na ulepszenie śmiało otwórz Issue lub zrób forka i wyślij Pull Request. Każda pomoc mile widziana!

Jeśli biblioteka ci się przydała, zostaw gwiazdkę ⭐ to motywuje do dalszego rozwoju projektu i tworzenia kolejnych rozwiązań trudnych problemów.

Licencja

MIT © 2025 Kuba 'Kubaleek' Król

Szczegóły licencji znajdziesz w pliku LICENSE.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net8.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.2 78 2/19/2026
1.0.0 75 2/19/2026