Skip to main content

Решения задач по ml: код и краткая теория с копированием в буфер обмена

Project description

chislib

Библиотека-справочник по численным методам: каждой задаче курса соответствует функция, вызов которой копирует готовое решение (код на Python или краткий теоретический ответ) в буфер обмена. Работает полностью офлайн, внешних зависимостей нет (numpy нужен только коду, который вставляется из буфера).

Установка

pip install chislib

Использование

import chislib

chislib.bisection()          # код метода бисекции скопирован в буфер обмена
chislib.theory.kahan_summation()  # ответ на теоретический вопрос — в буфер

chislib.find("ньютон")       # поиск: печатает функции, подходящие под запрос
chislib.contents()           # оглавление всех задач и теории
chislib.show("rk4")          # напечатать решение, не копируя
code = chislib.get("rk4")    # получить текст решения строкой
chislib.rk4(copy=False)      # вернуть текст без копирования в буфер

Из командной строки:

chislib find ньютон          # поиск по части названия
chislib copy bisection       # скопировать решение в буфер
chislib show theory.gershgorin
chislib list                 # оглавление
chislib ai "корень x^2 - 2 = 0 бисекцией"   # сгенерировать моделью

Поиск

find() ищет по названию, ключевым словам и имени функции: запрос нормализуется (регистр, ё/е, пунктуация), затем каждой задаче выставляется балл — за вхождение запроса целиком, за префиксные совпадения слов и за нечёткие совпадения через difflib (опечатки вроде «лагранш» тоже находятся). Ключевые слова включают и русские, и английские названия методов, поэтому работает и find("runge kutta"), и find("рунге").

ИИ-вариант: chislib.ai

Если задачи нет в справочнике, решение может сгенерировать модель — локальная (работает без интернета) или через API. Зависимостей по-прежнему ноль: все бэкенды доступны по OpenAI-совместимому HTTP, общение идёт через stdlib.

from chislib import ai

ai.solve("Найти корень x^2 - ln x - 1 = 0 методом секущих, eps=1e-4")
# → проверенный код в буфере обмена; вывод пустой, как у остальной библиотеки
# из коробки: Mistral, mistral-small-latest (ключ зашит, работает без VPN);
# при сбое — автоматический повтор через OpenRouter (ему нужен VPN)

# ai.configure("ollama", model="qwen2.5-coder:14b")  # локальная модель
# ai.configure("openrouter", model="qwen/qwen3-coder:free")  # другая модель
# ai.configure("github" / "anthropic" / "deepseek", api_key="...")
# ai.configure(base_url="http://gpu-box:8000/v1", model="...")  # свой сервер

ai.solve("...", copy=False)        # вернуть текст, не копируя
ai.solve_image("ticket.jpg")       # фото билета (нужна vision-модель)
ai.ask("Чем метод секущих лучше Ньютона?")  # теорвопрос → краткий ответ

Качество обеспечивают три механизма: системный промпт с правилами экзамена (белый список numpy, комментарии, строка «Ответ:»); похожие готовые решения из справочника подкладываются модели как эталон; сгенерированный код проверяется (белый список + пробный запуск) и при ошибке модель получает один шанс исправиться.

Если активная модель недоступна (перегрузка, лимит, нет соединения), библиотека автоматически идёт по цепочке запасных: Mistral → GitHub Models (gpt-4.1-mini) → OpenRouter. Сообщение о переключении печатается в stderr. Лимиты: Mistral — ~1 запрос/с; GitHub — ~150 запросов/день; OpenRouter free — ~50 запросов/день (и нужен VPN).

Локально (ПК с NVIDIA 16GB): установите Ollama, затем ollama pull qwen2.5-coder:14b (~9 ГБ, базовый выбор). Альтернативы: qwen3:14b (сильнее рассуждения), deepseek-r1-distill-qwen:14b (математика, но медленно), qwen2.5-vl:7b (vision). Решение генерируется за 20–60 с.

Через API: бесплатно — Mistral, GitHub Models и OpenRouter (ключи зашиты; OpenRouter требует VPN), Groq (свой ключ); дёшево — DeepSeek; в рублях — VseGPT; максимум качества и vision — Claude/OpenAI. Gemini поддерживается пресетом, но его API блокирует запросы из ряда регионов. Свой ключ можно задать через api_key=, переменную CHISLIB_AI_API_KEY или сохранить: save=True. Для фото билета (solve_image) используйте ai.configure("github") — gpt-4.1-mini понимает изображения.

ai.check() (или chislib ai check) показывает, какие бэкенды отвечают из текущей сети: для бэкендов с ключом выполняется настоящая мини-генерация, так что видно и случаи «запрос уходит, ответ блокируется по дороге». Запускайте при том состоянии сети (VPN вкл/выкл), в котором будете работать.

Настройки читаются в порядке: configure(...) → переменные CHISLIB_AI_*~/.config/chislib/ai.json → Ollama по умолчанию.

Ограничения экзамена

Решения написаны под экзаменационный белый список numpy: используются только array, zeros, zeros_like, linspace, eye, shape, random, poly, roots, transpose, sqrt, log, exp, sin, cos, arctan, tan, mean (плюс арифметические операторы и matplotlib). Никакого np.linalg, np.fft и т.п. — СЛАУ, QR и преобразования Фурье реализованы вручную. Соблюдение белого списка проверяется тестом. Код снабжён комментариями, как требуют правила экзамена.

Состав

  • Плавающая точка: суммирование по Кахану (накопление ошибки).
  • Нелинейные уравнения: бисекция, простая итерация, релаксация с параметром ускорения, секущие, Ньютон, модифицированный Ньютон, дихотомия (минимизация).
  • Системы: итерации для нелинейных систем, Гаусс–Зейдель (СЛАУ и нелинейный), Ньютон 2D, Ньютон с фиксированным якобианом.
  • Интерполяция: линейная, Лагранж (с графиком), кубический сплайн (метод прогонки).
  • Матрицы: наивное умножение (и вариант с подсчётом числа операций), Штрассен, график времени Штрассена, QR-разложение (Хаусхолдер).
  • Собственные значения: характеристический многочлен (poly/roots), степенной метод, обратные итерации со сдвигом, метод вращений Якоби (значения и векторы), QR-алгоритм, Шур.
  • Численное дифференцирование: прямая/обратная/центральная разности, вторая производная.
  • ОДУ: Эйлер, предиктор-корректор, РК4 (скаляр и система с фазовым портретом), Адамс-Башфорт, Адамс-Мултон (сравнение с Эйлером).
  • Фурье: ДПФ/ОДПФ со спектром, БПФ (Кули-Тьюки) с шумом.
  • Теория (chislib.theory.*): ~60 кратких ответов — плавающая точка, погрешности, сходимость, интерполяция, линейная алгебра, ОДУ, сигналы.

Примеры в задачах используют данные реальных билетов (равновесная цена, PageRank-матрица 5×5, высота дрона, рост бактерий, осцилляторы и др.).

Примечание: dichotomy реализует поиск минимума унимодальной функции; если в вашем курсе «метод дихотомии» — синоним бисекции для поиска корня, используйте bisection.

Разработка

python -m venv .venv && .venv/bin/pip install numpy
PYTHONPATH=src .venv/bin/python -m unittest tests.test_chislib

Тесты исполняют каждый сниппет решения целиком и проверяют поиск.

Публикация на PyPI

pip install build twine
python -m build                  # создаст dist/*.tar.gz и dist/*.whl
twine upload dist/*              # нужен аккаунт на pypi.org и API-токен

Перед публикацией: поднимите version в pyproject.toml; проверить пакет без публикации можно через TestPyPI: twine upload -r testpypi dist/*.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

chislib-0.3.5.tar.gz (202.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

chislib-0.3.5-py3-none-any.whl (203.4 kB view details)

Uploaded Python 3

File details

Details for the file chislib-0.3.5.tar.gz.

File metadata

  • Download URL: chislib-0.3.5.tar.gz
  • Upload date:
  • Size: 202.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for chislib-0.3.5.tar.gz
Algorithm Hash digest
SHA256 a0c50bf62606f508a2a671dfc586891bc307e9909fccc19a64ea4b246eca831f
MD5 25ebb65a6326040f1d6b516fab4d07d1
BLAKE2b-256 ff5a0473533c7ed4c3e90f1c3343a4c60e6f700178cd0f089afdaf45b515584d

See more details on using hashes here.

File details

Details for the file chislib-0.3.5-py3-none-any.whl.

File metadata

  • Download URL: chislib-0.3.5-py3-none-any.whl
  • Upload date:
  • Size: 203.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for chislib-0.3.5-py3-none-any.whl
Algorithm Hash digest
SHA256 4b3edc412a88da6788ba45ce3593550e369d60186a81b884100dd44eb4697688
MD5 7ebd9197c15921b1827a8ce7f9902368
BLAKE2b-256 82808e72d9e8f72f66d591178e5a2d5202b0ae527260b426b2b23838d2901f6c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page