Polinomi caratteristici interi
Restituisci i coefficienti decrescenti di det(xI−A) per una matrice quadrata intera di ordine da zero a sei con elementi di valore assoluto fino a 1000.
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- Progetto
- Prova matrice vuota e autovalori ripetuti, rifiutando righe irregolari e booleani senza approssimare radici.
- Controlla prima di applicare
- Confronta il comportamento effettivo con il risultato atteso. Se una verifica fallisce, indaga la causa prima di altre modifiche.
- Modelli
- Configura un endpoint compatibile con OpenAI o Anthropic usando URL di base e chiave API, se necessaria. Prova la connessione. Il server locale deve essere in esecuzione; gli strumenti remoti possono trasmettere dati separatamente.
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 coefficientsEsamina il codice matematico nel contesto dell'applicazione
La notazione matematica può far apparire definitiva un'implementazione prima che ne sia stato esaminato il contratto software. SpectrumGorse è un ambiente di programmazione con IA per Windows per esaminare entrambi. Apri il progetto e chiedi al modello collegato di identificare input accettati, rappresentazione attesa dell'output e gestione degli errori prima di suggerire modifiche al calcolo.
Un'attività concreta potrebbe esaminare una routine per il polinomio caratteristico di piccole matrici di interi. Fornisci il chiamante e casi di prova con coefficienti noti indipendentemente, poi chiedi all'assistente di spiegare in questi termini ogni modifica proposta. Mantieni il calcolo dei coefficienti separato dalle altre operazioni che l'applicazione potrebbe eseguire in seguito, così la revisione non si estende silenziosamente alla sostituzione di un risolutore numerico.
Verifica la rappresentazione con la stessa cura dell'aritmetica. Esegui i test del progetto per una matrice vuota, se supportata, semplici casi diagonali e input non quadrati da rifiutare. Controlla l'ordine dei coefficienti e le convenzioni sui segni nel codice utilizzatore ed esamina ogni conversione numerica introdotta. Una risposta con coefficienti plausibili non basta se il chiamante ne interpreta diversamente l'ordine o richiede risultati interi esatti.
SpectrumGorse supporta endpoint compatibili con OpenAI e endpoint Anthropic per le connessioni ai modelli. Seleziona un modello IA senza censura dove il tuo servizio ne offre uno, con restrizioni e strumenti regolati da quella configurazione. La conversazione aiuta a spiegare il codice proposto; i tuoi casi di prova indipendenti e i controlli dell'applicazione determinano se è adatto.
Valutare una modifica a un calcolo esatto
Cosa devo fornire oltre a una matrice di esempio?
Includi l'ordine atteso dei coefficienti, la convenzione sui segni e il chiamante che usa il risultato. Mostra dimensioni e tipi delle voci validi. Questi dettagli consentono all'assistente di valutare la compatibilità software anziché solo la familiarità apparente di un'espressione matematica.
Si possono verificare i coefficienti con la stessa implementazione?
Fornirebbe prove indipendenti deboli. Usa matrici semplici con risultati noti o un altro controllo giustificato nel tuo progetto. Spiega come sono stati ottenuti i valori attesi, così la revisione può distinguere un errore condiviso da una concordanza effettiva.
Una routine per polinomi dovrebbe trovarne anche le radici?
Solo se è un requisito separato. Il calcolo esatto dei coefficienti e la ricerca numerica delle radici hanno contratti diversi. Mantieni la modifica attuale circoscritta, salvo che l'applicazione richieda esplicitamente entrambi e tu abbia definito come usarne gli output.
Perché esaminare le conversioni numeriche nelle differenze?
Una conversione può trasformare l'aritmetica esatta in un'approssimazione anche quando i normali casi di prova continuano a passare. Indica la rappresentazione richiesta dall'applicazione e verifica che sia le operazioni intermedie sia i valori restituiti la preservino nell'intervallo di input supportato.
SpectrumGorse · Aggiornato 2026-10-25