Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.01;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.01 c
8-653
xn0bys
2003-01-24 10:36
2003.05.01
Перерисовка куска Image...


14-785
dlph
2003-04-15 17:44
2003.05.01
международный чат по db


1-596
_MAXi_
2003-04-18 15:54
2003.05.01
Множественный Undo???


3-412
Mic_2000
2003-04-11 10:52
2003.05.01
Мнопользовательская работа с просмотрами в IB6?


14-786
vajo
2003-04-15 13:17
2003.05.01
Установка PHP