NewtonRootFinder 1.0.2
dotnet add package NewtonRootFinder --version 1.0.2
NuGet\Install-Package NewtonRootFinder -Version 1.0.2
<PackageReference Include="NewtonRootFinder" Version="1.0.2" />
<PackageVersion Include="NewtonRootFinder" Version="1.0.2" />
<PackageReference Include="NewtonRootFinder" />
paket add NewtonRootFinder --version 1.0.2
#r "nuget: NewtonRootFinder, 1.0.2"
#:package NewtonRootFinder@1.0.2
#addin nuget:?package=NewtonRootFinder&version=1.0.2
#tool nuget:?package=NewtonRootFinder&version=1.0.2
NewtonRootFinder
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:
- Dla każdego punktu startowego z zakresu [-10, 10] wywołuje metodę Newtona
- Po znalezieniu pierwiastka dzieli wielomian przez (x - pierwiastek) deflacja obniża stopień wielomianu
- 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 | Versions 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. |
-
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.