Stabilní kořeny kvadratické rovnice
Spočítejte reálné kvadratické kořeny se škálovanými koeficienty a vzorcem omezujícím numerické odečítání.
from math import isfinite, sqrt, copysign
def real_roots(a, b, c):
original = (a, b, c)
if not all(type(v) in (int, float) and isfinite(v) for v in original) or a == 0:
raise ValueError("finite quadratic coefficients")
if c == 0:
other = -b / a
if not isfinite(other) or (b != 0 and other == 0):
raise ValueError("unrepresentable root")
return [0.0] if b == 0 else sorted((0.0, other))
scale = max(map(abs, original))
a, b, c = (v / scale for v in original)
if any(v != 0 and s == 0 for v, s in zip(original, (a,b,c))):
raise ValueError("coefficient underflow")
d = b*b - 4*a*c
if d < 0: return []
if d == 0: roots = [-b / (2*a)]
else:
q = -0.5 * (b + copysign(sqrt(d), b))
if q == 0: raise ValueError("root underflow")
roots = sorted((q/a, c/q))
if not all(map(isfinite, roots)) or (original[2] != 0 and 0 in roots):
raise ValueError("unrepresentable roots")
return rootsModely
Nastavte endpoint kompatibilní s OpenAI nebo Anthropic pomocí základní URL a případného API klíče. Otestujte připojení. Lokální server modelu musí běžet; vzdálené nástroje mohou data odesílat samostatně.
Projekt
Ověřte dvojitý a vzdálené kořeny, odmítněte nulový vedoucí koeficient či nereprezentovatelné výsledky a při záporném diskriminantu vraťte žádné kořeny.
Před použitím zkontrolujte
Porovnejte skutečné chování s očekávaným výsledkem. Pokud kontrola selže, před dalšími změnami zjistěte příčinu.
from math import isfinite, sqrt, copysign
def real_roots(a, b, c):
original = (a, b, c)
if not all(type(v) in (int, float) and isfinite(v) for v in original) or a == 0:
raise ValueError("finite quadratic coefficients")
if c == 0:
other = -b / a
if not isfinite(other) or (b != 0 and other == 0):
raise ValueError("unrepresentable root")
return [0.0] if b == 0 else sorted((0.0, other))
scale = max(map(abs, original))
a, b, c = (v / scale for v in original)
if any(v != 0 and s == 0 for v, s in zip(original, (a,b,c))):
raise ValueError("coefficient underflow")
d = b*b - 4*a*c
if d < 0: return []
if d == 0: roots = [-b / (2*a)]
else:
q = -0.5 * (b + copysign(sqrt(d), b))
if q == 0: raise ValueError("root underflow")
roots = sorted((q/a, c/q))
if not all(map(isfinite, roots)) or (original[2] != 0 and 0 in roots):
raise ValueError("unrepresentable roots")
return rootsPrověřte numerické chování i mimo běžný případ
RootEquinox je prostředí pro programování s AI ve Windows pro vývojáře, kteří potřebují zkoumat chování numerické implementace mimo pohodlné příklady. Začněte projektovými soubory a popište rozsah vstupů očekávaných aplikací. Požádejte připojený model o kontrolu výpočtu i reakce volajícího, když výsledek nelze reprezentovat zamýšleným způsobem.
Jedním konkrétním úkolem je rutina pro kořeny kvadratické rovnice. Koeficienty s velmi rozdílnými velikostmi mohou odhalit chování, které malý školní příklad mine, proto před žádostí o úpravu přineste do konverzace reprezentativní testovací případy. Proberte násobné kořeny, odmítané vedoucí koeficienty a způsob hlášení nepodporovaného výsledku. Tyto otázky propojují navrženou změnu vzorce s okolním smluveným chováním softwaru.
Prohlédněte výsledný zdrojový kód a spusťte projektové kontroly s původními testovacími případy, případně včetně kontrol reziduí. Nepovažujte věrohodně zobrazené číslo za dostatečný důkaz dodržení mezí implementace. RootEquinox pracuje s podporovanými koncovými body kompatibilními s OpenAI nebo Anthropic a podle potřeby používá přihlašovací údaje. Nabízí-li nastavená služba neomezený model, je jednou z možností, zatímco nástroje a limity kontextu závisí na serveru. Cílem je numerická změna posouditelná podle výslovných případů, s chováním při odmítnutí kontrolovaným stejně pečlivě jako úspěšný výstup.
Posuzování numerické úpravy
Co má doprovázet hlášení nepřesného výsledku?
Dodejte vstupní koeficienty, očekávané chování a dostatek podrobností k reprodukci nesrovnalosti. Zahrňte způsob použití výsledku volajícím. Asistent tak získá konkrétní softwarový problém místo pobídky k nahrazení vzorce bez důkazů.
Proč prověřovat cesty odmítnutí v numerickém kódu?
Volající potřebují definovanou reakci, když je vstup neplatný nebo užitečný výsledek nelze reprezentovat. Prověřte tyto cesty společně s výpočtem, aby úprava nenahradila jasné selhání zavádějícím výstupem nebo neočekávanou výjimkou.
Může kontrola rezidua prokázat přesnost každého kořene?
Přispívá důkazy o vrácených hodnotách, ale není univerzálním důkazem. Používejte ji s referenčními případy a kontrolami vstupních mezí a prověřte předpoklady tolerance místo přijetí jediného malého rezidua jako úplné validace.
Mám přijmout přepis, který projde běžnými příklady?
Až po kontrole obtížných případů, které úkol vyvolaly. V projektových testech zachovejte velmi rozdílná měřítka, násobné kořeny a stanovené neplatné vstupy. Před přijetím náhrady prověřte každou změnu chování při selhání.
RootEquinox · Aktualizováno 2026-10-25