1

У меня есть системы многочленов, довольно простые полиномиальные выражения, но довольно длинные для оптимизации моей руки. Выражения сгруппированы в множествах, а в заданном наборе есть общие термины в нескольких переменных.компьютерная алгебра soft для минимизации числа операций в наборе многочленов

Я хотел бы знать, есть ли система компьютерной алгебры, такая как Mathematica, Matlab или sympy, которая может оптимизировать несколько многочленов с общими терминами для минимизации числа операций. Было бы также здорово, если бы такая система могла свести к минимуму количество промежуточных терминов, чтобы уменьшить количество регистров.

Если такая система не существует, я собираюсь сделать свое, используя символическую алгебру Python Sympy. Если вы работаете над таким пакетом или заинтересованы в разработке или использовании одного из них, пожалуйста, дайте мне знать.

здесь выдуманный пример

x0 = ((t - q*A)*x + B)*y 
y0 = ((t - q*A)*y + B)*z 
z0 = ((t - q*A)*z + B)*x 

так что вы можете явно профакторизовать (т - Qa) член. Теперь, если вы делаете количество терминов очень больших с различными комбинациями общих терминов, это становится трудным сделать вручную. Уравнения я имею включать до 40 терминов и размера набора составляет около 20. Надежды, что помогает

Спасибо

+0

Не могли бы вы рассказать о том, что именно вы подразумеваете под оптимизацией и что вы хотите сделать? Может быть, пример? – Rook

+1

Simpy - это дискретный пакет симуляции, вы имеете в виду sympy. – PaulMcG

+0

Вы правы, я имею в виду sympy – Anycorn

ответ

1

ли sympy то, что вы ищете? Я полагаю, что он поддерживает полиномы, хотя я не знаю, поддерживает ли он все функции, которые могут вам пожелать (все же, настройка его, чтобы добавить то, что, по вашему мнению, может отсутствовать, должно быть проще, чем писать свои собственные с нуля ;-) ,

+0

Да, я посмотрел на него. Это не совсем то, что я хочу, но если я действительно откажусь от себя, это то, что я собираюсь использовать. Я на самом деле имел в виду это, когда я сказал символическую алгебру Питона – Anycorn

1

Вы считаете Maxima?

Это впечатляющий символический пакет вычислений, который является бесплатным, открытым исходным кодом и имеет сильное и активное сообщество, которое оказывает ценную помощь при работе с неочевидными формулировками. Он легко доступен для всех трех основных операционных систем и имеет предварительно скомпилированный двоичный файл Windows.

У вас есть множество алгебраических преобразований доступных команд для выражений и для систем уравнений (таких, как ваша): расширяющих, фактор, упрощающих, ratsimp, linsolve и т.д.

Эта страница (Maxima for Symbolic Computation) вы должны получить началось - загрузка, установка, несколько примеров, а затем указание дополнительных ресурсов, которые помогут вам на вашем пути, включая быстрый справочник команд/чит-лист и некоторые рекомендации для написания собственных сценариев.

0

Ну, Mathematica, безусловно, может делать всевозможные преобразования на множествах полиномиальных уравнений, таких как ваши, и некоторые из этих преобразований могут заключаться в сокращении числа членов. Является ли это правильным ответом для вас, можно задать вопрос, поскольку у вас нет копии. Я ожидаю, что то же самое верно для Maple и для большинства других CAS.

Но ваше упоминание о

уменьшить число регистров

предполагает, что вы на самом деле пытаетесь сделать некоторый анализ потока данных для компиляции. Возможно, вам захочется взглянуть на литературу и на эту тему. Некоторые из этой литературы действительно относятся к преобразованиям с помощью компьютерной алгебры в выражениях.

1

Mathomatic может быть легким решением, которое вы ищете. Посмотрите: http:www.mathomatic.org.

Это простая алгебра со всеми обычными операторами, способная упростить символические выражения, решать для переменных и множеств уравнений.

У него нет возможности программирования. Вы можете создать автономное приложение или использовать API в виде библиотеки и заголовочных файлов, чтобы включить его в C, C++ или Objective-C, или вы можете запустить приложение из своего приложения, где вы предоставляете командную строку и среду ,

Посмотрите на NSTask, который также позволяет передавать stdin и stdout в потоки данных в вашем собственном приложении.

Mathomatic также может сохранять полученные выражения в формате java, python или maxima для включения в программный код этих систем.

 Смежные вопросы

  • Нет связанных вопросов^_^