Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2003.05.01;
Скачать: [xml.tar.bz2];

Вниз

Программа для решения систем уравнений   Найти похожие ветки 

 
Pat   (2003-04-15 14:23) [0]

Народ, подскажите программу, с помощью которой можно было бы решить систему уравнений в символьном виде, например:
ax+by=z1
cx+dy=z2

a,b,c,d,z1,z2 - некоторые константы
x,y - переменные

Программа должна получить ответ в виде
x = ...
y = ...

ну если такое вообще возможно :-\


 
han_malign   (2003-04-15 14:30) [1]

Ну, вобщем-то, парсинг матрицы уравнения из текста заданного вида, задача довольно тривиальная, во всяком случае проще парсинга произвольного выражения, и решается в лоб.
Хотя проще просто матрицу коэфициентов вводить.
А способов решения системы линейных уравнений - Гаус, Крамер..., короче, сводится к задаче транспонирования матрицы...


 
Neft   (2003-04-15 14:44) [2]

полюбому матрицу выделять придется и потом дальше как сказал хан_малигн


 
Mystic   (2003-04-15 14:52) [3]

MATLAB, Symbolic toolbox

Solution of Equations
compose - Functional composition.
dsolve - Solution of differential equations.
finverse - Functional inverse.
solve - Solution of algebraic equations.

Например

r = solve("a*x+b*y=z1", "c*x+d*y=z2", "x", "y");
r.x
-(-d*z1+z2*b)/(a*d-b*c)
r.y
(a*z2-z1*c)/(a*d-b*c)




 
nikkie   (2003-04-15 14:54) [4]

MAPLE
он даже такую систему сможет решить
ax^2+by^2=z1
cx^3+dy^3=z2


 
Внук   (2003-04-15 15:00) [5]

MAPLE


 
Феу   (2003-04-15 15:06) [6]

2nikkie
За что ты его так? Нормально решает (у меня :-).


 
Mystic   (2003-04-15 15:14) [7]


> nikkie © (15.04.03 14:54)


Нет проблем:

>> r = solve("a*x^2+b*y^2=z1", "c*x^2+d^2*y=z2", "x", "y");
>> r.x

ans =

[ 1/2/c*(-(-4*z2*b*c+2*a*d^4-2*(-4*z2*b*c*a*d^4+a^2*d^8+4*b*c^2*z1*d^4)^(1/2))/b)^(1/2)]
[ -1/2/c*(-(-4*z2*b*c+2*a*d^4-2*(-4*z2*b*c*a*d^4+a^2*d^8+4*b*c^2*z1*d^4)^(1/2))/b)^(1/2)]
[ 1/2/c*(-(-4*z2*b*c+2*a*d^4+2*(-4*z2*b*c*a*d^4+a^2*d^8+4*b*c^2*z1*d^4)^(1/2))/b)^(1/2)]
[ -1/2/c*(-(-4*z2*b*c+2*a*d^4+2*(-4*z2*b*c*a*d^4+a^2*d^8+4*b*c^2*z1*d^4)^(1/2))/b)^(1/2)]

>> r.y

ans =

[ -(-1/4/c*(-4*z2*b*c+2*a*d^4-2*(-4*z2*b*c*a*d^4+a^2*d^8+4*b*c^2*z1*d^4)^(1/2))/b-z2)/d^2]
[ -(-1/4/c*(-4*z2*b*c+2*a*d^4-2*(-4*z2*b*c*a*d^4+a^2*d^8+4*b*c^2*z1*d^4)^(1/2))/b-z2)/d^2]
[ -(-1/4/c*(-4*z2*b*c+2*a*d^4+2*(-4*z2*b*c*a*d^4+a^2*d^8+4*b*c^2*z1*d^4)^(1/2))/b-z2)/d^2]
[ -(-1/4/c*(-4*z2*b*c+2*a*d^4+2*(-4*z2*b*c*a*d^4+a^2*d^8+4*b*c^2*z1*d^4)^(1/2))/b-z2)/d^2]


 
AlexKniga   (2003-04-15 15:31) [8]

MathCAD


 
NetBreaker666   (2003-04-15 15:36) [9]

Удалено модератором
Примечание: А по-другому свои мысли выражать не получается?


 
nikkie   (2003-04-15 15:56) [10]

>Феу
не понял. кого его? кто у тебя нормально решает. MATLAB? да я его в глаза не видел... а кленовый листок я и не обижал... я наоборот за... :)

>Mystic
copy/paste проблема у тебя. у меня второе уравнение третьей степени было.


 
Manulo   (2003-04-15 16:05) [11]

Удалено модератором


 
Mystic   (2003-04-15 16:09) [12]

copy/paste проблема у тебя. у меня второе уравнение третьей степени было.

Ну тогда получаем уравнение шестой степени, решение которого не представимо в виде элементарных функций. Те ответы, которые выводит Maple, имхо сложнее считать, чем численно решить систему :)

Пакет прикладных программ, дающих системе MATLAB принципиально новые возможности — возможности решения задач в символьном (аналитическом) виде, включая реализацию точной арифметики произвольной разрядности. Пакет базируется на применении ядра символьной математики одной из самых мощных систем компьютерной алгебры — Maple V R4. Обеспечивает выполнение символьного дифференцирования и интегрирования, вычисление сумм и произведений, разложение в ряды Тейлора и Маклорена, операции со степенными многочленами (полиномами), вычисление корней полиномов, решение в аналитическом виде нелинейных уравнений, всевозможные символьные преобразования, подстановки и многое другое. Имеет команды прямого доступа к ядру системы Maple V.

Пакет позволяет готовить процедуры с синтаксисом языка программирования системы Maple V R4 и устанавливать их в системе MATLAB. К сожалению, по возможностям символьной математики пакет сильно уступает специализированным системам компьютерной алгебры, таким как новейшие версии Maple и Mathematica.

А вот многое из
http://www.phys.nsu.ru/cherk/matlab6/Chapter%2023/1.htm
в Maple отсутсвует.


 
nikkie   (2003-04-15 16:27) [13]

>Ну тогда получаем уравнение шестой степени, решение которого не представимо в виде элементарных функций.
угу. вот и надо это уравнение 6-й степени получить.

поскольку общее алгебраическое уравнение порядка выше 4 не имеет решения в радикалах, то решением системы алгебраических уравнений принято считать приведение системы к эквивалентной системе вида
p_1(x_1) = 0
x_2 = p_2(x_1)
x_3 = p_3(x_1)
...
то есть сведение системы уравнений к одному уранению. задачка нетривиальная, но алгоритмически разрешимая. инструмент решения - базис Гребнера.

>А вот многое из ... в Maple отсутсвует.
кто бы спорил... каждой задаче свой инструмент. но для решения систем алгебраических уравнений альтернативы MAPLE я не знаю. по крайней мере, профессиональные алгебраисты пользуются им.


 
MBo   (2003-04-15 16:37) [14]

>nikkie
И систему из двух кубических Maple решает с получением ур-я 9-й степени. Текста килобайт на 20 ;)


 
nikkie   (2003-04-15 18:02) [15]

>Mbo
>Текста килобайт на 20 ;)
так это, понимашь, зависит от того, сколько у тя параметров. если все коэффициенты числа, то 10 коэффициентов много не должны занять :)

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


 
MBo   (2003-04-15 18:09) [16]

>если все коэффициенты числа
в символьном виде.

>ответ, занимающий 20Kb имеет мало смысла?
нет, я этого не имел в виду.

BTW, через результанты получилось короче.


 
Marser   (2003-04-15 18:21) [17]

ИМХО, Крамер - рулез форева! ;-)))))


 
nikkie   (2003-04-15 18:40) [18]

>в символьном виде.
представь себе. система уравнений без параметров, а решают ее в символьном виде, что есть антоним численного решения.

>BTW, через результанты получилось короче
как бы странно, поскольку ответ-то один :)
может там просто надо выделить множитель.

BTW результанты позволяют получить p_1(x_1) только в случае 2-х уравнений с двумя неизвестными (или когда остальные уравнения линейные по одной из переменных). в случае большего числа нелинейных уравнений, результанты дают существенно более высокие степени. например, есть система из 3 уравнений степеней 2, 3, 4 дает p_1 степени 24, а если делать через результанты, то получаем сначала 2 уравнения порядка 6 и 8, потом одно уравнение степени 48...



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2003.05.01;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.007 c
14-790
Doctor
2003-04-15 19:01
2003.05.01
Вступайте в проект по ...


14-789
tytus
2003-04-15 17:24
2003.05.01
Вид компонент


14-788
Бармен
2003-04-15 17:30
2003.05.01
Народ, не подскажете ссылочку на EhLib для D7?


14-746
Agent[007]
2003-04-14 14:27
2003.05.01
Форум


7-817
SasH_Ok
2003-03-14 06:02
2003.05.01
Сколько памяти занимает процесс





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский