Polynômes caractéristiques entiers
Renvoyez les coefficients décroissants de det(xI−A) pour une matrice carrée entière d’ordre zéro à six avec entrées bornées à 1000 en valeur absolue.
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- Projet
- Testez la matrice vide et les valeurs propres répétées, refusez les lignes irrégulières et booléens sans approcher les racines.
- Vérifiez avant d’appliquer
- Comparez le comportement observé au résultat attendu. Si une vérification échoue, cherchez la cause avant de poursuivre les modifications.
- Modèles
- Configurez un endpoint compatible OpenAI ou Anthropic avec son URL de base et une clé API si nécessaire. Testez la connexion. Un serveur local doit fonctionner ; les outils distants peuvent transmettre des données séparément.
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 coefficientsExaminez le code mathématique dans le contexte de l’application
La notation mathématique peut donner l’impression qu’une implémentation est établie avant même l’examen de son contrat logiciel. SpectrumGorse est un espace de programmation assistée par IA sous Windows pour examiner les deux. Ouvrez le projet et demandez au modèle connecté d’identifier les entrées acceptées, la représentation de sortie attendue et la gestion des erreurs avant de suggérer des modifications du calcul.
Une tâche concrète pourrait examiner une routine de polynôme caractéristique pour de petites matrices entières. Fournissez le code appelant et des jeux de coefficients connus indépendamment, puis demandez à l’assistant d’expliquer toute modification proposée dans ces termes. Séparez le calcul des coefficients des autres opérations que l’application pourrait effectuer ensuite, afin que la révision ne se transforme pas silencieusement en remplacement d’un solveur numérique.
Vérifiez la représentation aussi soigneusement que l’arithmétique. Exécutez les tests du projet pour une matrice vide si elle est prise en charge, des cas diagonaux simples et des entrées non carrées rejetées. Vérifiez l’ordre des coefficients et les conventions de signe dans le code utilisateur du résultat, et examinez toute conversion numérique introduite. Des coefficients plausibles ne suffisent pas si le code appelant interprète autrement leur ordre ou exige des résultats entiers exacts.
SpectrumGorse prend en charge les points de terminaison compatibles OpenAI et Anthropic pour les connexions aux modèles. Sélectionnez un modèle d’IA sans censure si votre service en propose un ; les restrictions et les outils sont régis par cette configuration. La conversation aide à expliquer le code proposé ; vos jeux de test indépendants et les vérifications de l’application déterminent s’il convient.
Évaluer une correction de calcul exact
Que fournir en plus d’un exemple de matrice ?
Incluez l’ordre attendu des coefficients, la convention de signe et le code appelant qui exploite le résultat. Indiquez les dimensions et les types d’éléments valides. Ces détails permettent à l’assistant d’évaluer la compatibilité logicielle plutôt que la seule familiarité d’une expression mathématique.
Peut-on vérifier les coefficients avec la même implémentation ?
Cela fournirait peu de preuves indépendantes. Utilisez des matrices simples aux résultats connus ou une autre vérification justifiée dans votre projet. Expliquez comment les valeurs attendues ont été obtenues afin de distinguer une erreur commune d’un accord réel.
Une routine de polynôme doit-elle aussi chercher ses racines ?
Uniquement si cela constitue une exigence distincte. Le calcul exact des coefficients et la recherche numérique de racines ont des contrats différents. Limitez la correction actuelle, sauf si l’application a explicitement besoin des deux et que vous avez défini l’utilisation de leurs sorties.
Pourquoi examiner les conversions numériques dans le diff ?
Une conversion peut transformer l’arithmétique exacte en approximation même si les tests ordinaires réussissent encore. Précisez la représentation requise par l’application et vérifiez que les opérations intermédiaires comme les valeurs renvoyées la préservent dans la plage d’entrée prise en charge.
SpectrumGorse · Mis à jour 2026-10-25