Gehele karakteristieke polynomen
Geef aflopende coëfficiënten van det(xI−A) voor een vierkante gehele matrix van orde nul tot zes met waarden tot 1000 in absolute grootte.
def characteristic_polynomial(matrix):
if type(matrix) not in (list, tuple) or len(matrix) > 6:
raise ValueError("charpoly.size")
n = len(matrix)
if any(type(row) not in (list, tuple) or len(row) != n or any(type(v) is not int or abs(v) > 1000 for v in row) for row in matrix):
raise ValueError("charpoly.entry")
block = [[int(i == j) for j in range(n)] for i in range(n)]
coefficients = [1]
for degree in range(1, n+1):
product = [[sum(matrix[i][k]*block[k][j] for k in range(n)) for j in range(n)] for i in range(n)]
trace = sum(product[i][i] for i in range(n))
coefficient = -trace // degree
coefficients.append(coefficient)
block = [[product[i][j] + (coefficient if i == j else 0) for j in range(n)] for i in range(n)]
return coefficients- Project
- Test de lege matrix en herhaalde eigenwaarden, weiger ongelijke rijen en booleans zonder wortels te benaderen.
- Controleer vóór het toepassen
- Vergelijk het werkelijke gedrag met het verwachte resultaat. Onderzoek een mislukte controle voordat je verdergaat met wijzigingen.
- Modellen
- Stel een OpenAI-compatibel of Anthropic-endpoint in met de basis-URL en zo nodig een API-sleutel. Test de verbinding. Een lokale modelserver moet actief zijn; externe hulpmiddelen kunnen apart gegevens versturen.
def characteristic_polynomial(matrix):
if type(matrix) not in (list, tuple) or len(matrix) > 6:
raise ValueError("charpoly.size")
n = len(matrix)
if any(type(row) not in (list, tuple) or len(row) != n or any(type(v) is not int or abs(v) > 1000 for v in row) for row in matrix):
raise ValueError("charpoly.entry")
block = [[int(i == j) for j in range(n)] for i in range(n)]
coefficients = [1]
for degree in range(1, n+1):
product = [[sum(matrix[i][k]*block[k][j] for k in range(n)) for j in range(n)] for i in range(n)]
trace = sum(product[i][i] for i in range(n))
coefficient = -trace // degree
coefficients.append(coefficient)
block = [[product[i][j] + (coefficient if i == j else 0) for j in range(n)] for i in range(n)]
return coefficientsBeoordeel wiskundige code op toepassingsniveau
Wiskundige notatie kan een implementatie af lijken te maken voordat het softwarecontract is onderzocht. SpectrumGorse is een AI-programmeerwerkruimte voor Windows om beide te beoordelen. Open het project en vraag het verbonden model de geaccepteerde invoer, verwachte uitvoerrepresentatie en foutafhandeling te identificeren voordat het wijzigingen aan de berekening voorstelt.
Een concrete taak kan het beoordelen van een routine voor karakteristieke polynomen van kleine gehele matrices zijn. Geef de aanroepende code en onafhankelijk bekende testgevallen voor coëfficiënten en vraag de assistent elke voorgestelde wijziging in die termen uit te leggen. Houd coëfficiëntberekening gescheiden van andere bewerkingen die de toepassing later kan uitvoeren, zodat de beoordeling niet ongemerkt uitbreidt tot vervanging van een numerieke oplosser.
Verifieer de representatie net zo zorgvuldig als de rekenkundige bewerkingen. Voer projecttests uit voor een lege matrix indien ondersteund, eenvoudige diagonale gevallen en afgewezen niet-vierkante invoer. Controleer coëfficiëntvolgorde en tekenconventies bij de afnemer en onderzoek elke toegevoegde numerieke conversie. Een antwoord met aannemelijke coëfficiënten is onvoldoende als de aanroepende code hun volgorde anders interpreteert of exacte gehele resultaten vereist.
SpectrumGorse ondersteunt OpenAI-compatibele en Anthropic-eindpunten voor modelverbindingen. Selecteer een AI-model zonder censuur waar je dienst dat aanbiedt; beperkingen en tools worden door die configuratie bepaald. Het gesprek helpt voorgestelde code uit te leggen; je onafhankelijke testgevallen en toepassingscontroles bepalen of die past.
Een patch voor een exacte berekening beoordelen
Wat moet ik naast een matrixvoorbeeld aanleveren?
Neem de verwachte coëfficiëntvolgorde, tekenconventie en aanroepende code die het resultaat gebruikt op. Toon geldige dimensies en elementtypen. Met die details kan de assistent softwarecompatibiliteit beoordelen in plaats van alleen te kijken of een wiskundige uitdrukking vertrouwd lijkt.
Kunnen coëfficiënten met dezelfde implementatie worden gecontroleerd?
Dat levert zwak onafhankelijk bewijs op. Gebruik eenvoudige matrices met bekende resultaten of een andere onderbouwde controle in je project. Leg uit hoe verwachte waarden zijn verkregen, zodat de beoordeling een gedeelde fout kan onderscheiden van daadwerkelijke overeenstemming.
Moet een polynoomroutine ook de nulpunten vinden?
Alleen als dat een afzonderlijke eis is. Exacte coëfficiëntberekening en numeriek nulpunten zoeken hebben verschillende contracten. Houd de huidige patch gericht, tenzij de toepassing expliciet beide nodig heeft en je hebt gedefinieerd hoe de uitvoer wordt gebruikt.
Waarom numerieke conversies in de diff onderzoeken?
Een conversie kan exacte rekenkunde veranderen in een benadering, zelfs wanneer gewone testgevallen nog slagen. Vermeld de representatie die de toepassing vereist en controleer dat zowel tussenbewerkingen als geretourneerde waarden die behouden binnen het ondersteunde invoerbereik.
SpectrumGorse · Bijgewerkt 2026-10-25