Цілочислові характеристичні многочлени
Поверніть коефіцієнти det(xI−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- Проєкт
- Перевірте порожню матрицю й кратні власні значення, відхиляючи нерівні рядки та булеві елементи без наближення коренів.
- Перевірте перед застосуванням
- Порівняйте фактичну поведінку з очікуваним результатом. Якщо перевірка не проходить, з’ясуйте причину перед наступними змінами.
- Моделі
- Налаштуйте OpenAI-сумісний або Anthropic endpoint із базовою URL-адресою та API-ключем, якщо він потрібен. Перевірте з’єднання. Локальний сервер моделі має працювати; віддалені інструменти можуть окремо передавати дані.
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Перевіряйте математичний код на рівні застосунку
Математична нотація може створити враження завершеної реалізації ще до перевірки її програмного контракту. SpectrumGorse — робоче середовище програмування з ШІ для Windows, де можна перевірити обидва аспекти. Відкрийте проєкт і попросіть підключену модель визначити допустимі дані, очікуване подання результату й обробку помилок до пропозиції змін обчислення.
Конкретним завданням може бути перевірка процедури характеристичного полінома для невеликих цілочисельних матриць. Надайте код виклику та тестові приклади з незалежно відомими коефіцієнтами, а потім попросіть помічника пояснювати кожну запропоновану зміну в цих термінах. Відокремте обчислення коефіцієнтів від інших подальших операцій програми, щоб перевірка непомітно не перетворилася на заміну чисельного розв’язувача.
Перевіряйте подання так само ретельно, як арифметику. Запустіть тести проєкту для порожньої матриці, якщо вона підтримується, простих діагональних випадків і відхилених неквадратних даних. Перевірте порядок коефіцієнтів та домовленості про знаки в коді споживача й дослідіть додані числові перетворення. Правдоподібних коефіцієнтів недостатньо, якщо код виклику інакше тлумачить їх порядок або потребує точних цілих результатів.
SpectrumGorse підтримує підключення моделей через сумісні з OpenAI кінцеві точки та Anthropic. Виберіть модель ШІ без цензури, якщо її пропонує сервіс; обмеження й інструменти визначаються цим налаштуванням. Розмова допомагає пояснити запропонований код, а його придатність визначають ваші незалежні тестові приклади й перевірки застосунку.
Оцінювання виправлення точного обчислення
Що надати крім прикладу матриці?
Додайте очікуваний порядок коефіцієнтів, домовленість про знаки та код виклику, що використовує результат. Покажіть допустимі розміри й типи елементів. Ці деталі дають змогу оцінити програмну сумісність, а не лише знайомість математичного виразу.
Чи можна перевіряти коефіцієнти тією самою реалізацією?
Це дає слабкий незалежний доказ. Використайте прості матриці з відомими результатами або іншу обґрунтовану перевірку у проєкті. Поясніть походження очікуваних значень, щоб відрізнити спільну помилку від справжнього збігу.
Чи має процедура полінома також знаходити його корені?
Лише якщо це окрема вимога. Точне обчислення коефіцієнтів і чисельний пошук коренів мають різні контракти. Збережіть вузький обсяг виправлення, якщо програма явно не потребує обох операцій із визначеним використанням результатів.
Навіщо перевіряти числові перетворення у змінах?
Перетворення може зробити точну арифметику наближеною, навіть коли звичайні тести проходять. Визначте потрібне програмі подання й перевірте, що проміжні операції та повернені значення зберігають його в підтримуваному діапазоні даних.
SpectrumGorse · Оновлено 2026-10-25