Помогите новичку

Форум пользователей пакета Maple

Модератор: Admin

Freakbee
Сообщения: 1
Зарегистрирован: Чт фев 07, 2008 10:06 pm

Помогите новичку

Сообщение Freakbee » Чт фев 07, 2008 10:08 pm

Приветстую!
использую функцию cooefs, чтобы вытащить аргументы, но не работает, что я не так делаю?

Код: Выделить всё

phi1:= x_1+2*x_2+4*x_3=5:
cooefs(phi1);

Как правильно записать?
Пробовал с функцией indent с разными типами, но тогда не выписывает аргумент x_1 единицу: 2,4,5 а нужно 1,2,4,5
И вопрос вдогонку, есть код:

Код: Выделить всё

eq1:= x_1+2*x_2=5:
eq2:= 2*x_1+x_2+2=6:

Как эти уравнения вывести на экран как систему? (Обьединяющая скобка слева)

aar
Сообщения: 100
Зарегистрирован: Чт авг 10, 2006 11:27 am

Сообщение aar » Пт фев 08, 2008 9:55 am

Во-первых, процедура называется coeffs.
Во-вторых она применяется к полиному, а не к уравнению.
В-третьих, неплохо бы задать ей второй аргумент, от какой из трех переменных нужны коэффициенты.
Можно сделать и по всем переменным:

Код: Выделить всё

> coeffs(lhs(phi1)-rhs(phi1));
                                 -5, 1, 2, 4

Порядок коэффициентов в результате непредстказуем. В некоторых случаях этого достаточно.
Если нужно знать место каждого коэффициента, то задется и третья переменная:

Код: Выделить всё

> coeffs(lhs(phi1)-rhs(phi1), {x_1, x_2, x_3}, 't');
                                 -5, 1, 2, 4
> t;
                              1, x_1, x_2, x_3

Теперь видно, что коэффициент -5 -- свободный член, 1 -- коэффициент при x_1 и т.д.

По второму вопросу, таким образом системы уравнений в Maple не выводятся. Объединяющая скобка слева используется для обозначения кусочно-непрерывных функций (piecewise)

Учитель
Сообщения: 68
Зарегистрирован: Вс июн 19, 2005 2:53 pm

Сообщение Учитель » Вт фев 12, 2008 9:45 pm

Для вывода системы с объединяющей скобкой слева можно использовать процедуру

braces - output of systems of equations and/or inequalities in standard view

из б-ки Аладьева. САм использовал, проблему решает.

Andrey
Сообщения: 667
Зарегистрирован: Пн июн 10, 2002 2:05 pm

Сообщение Andrey » Ср фев 13, 2008 5:26 pm

aar писал(а):Порядок коэффициентов в результате непредстказуем. В некоторых случаях этого достаточно.
Если нужно знать место каждого коэффициента, то задется и третья переменная

Извините, а как теперь к ним корректно обращаться? Как-то пересортировать или есть другие ходы?

aar
Сообщения: 100
Зарегистрирован: Чт авг 10, 2006 11:27 am

Сообщение aar » Чт фев 14, 2008 9:07 am

Извините, а как теперь к ним корректно обращаться? Как-то пересортировать или есть другие ходы?

Зависит от задачи. Когда мне нужен упорядоченный список коэффициентов полинома, я делаю так:

Код: Выделить всё

> p := a*x^10+b*x^3+c*x+d;
                              10      3         
                           a x   + b x  + c x + d
> [seq(coeff(p, x, i), i = 0 .. degree(p, x))];
                      [d, c, 0, b, 0, 0, 0, 0, 0, 0, a]

Если мне нужно определить, при каких значениях параметров данный полином нулевой, то делаю так:

Код: Выделить всё

> solve({coeffs(p, x)});
                        {a = 0, b = 0, c = 0, d = 0}
 

И еще, не забывайте перед вызовом coeffs, coeff, degree приводить полином в порядок: по необходимости вызывайте expand, потом collect.

Andrey
Сообщения: 667
Зарегистрирован: Пн июн 10, 2002 2:05 pm

Сообщение Andrey » Чт фев 14, 2008 5:47 pm

Немного не так. Предположим, есть формула, которая сводится к виду:
AA*x + BB*y + CC*z + DD
где AA, BB, CC и DD какие-то выражения
А нужно получить (a*AA+BB)/(DD-c*CC)

aar
Сообщения: 100
Зарегистрирован: Чт авг 10, 2006 11:27 am

Сообщение aar » Чт фев 14, 2008 7:07 pm

Например так:

Код: Выделить всё

> expr := AA*x+BB*y+CC*z+DD:
> (a*coeff(expr, x)+coeff(expr, y))/(eval(expr, {y = 0, z = 0, x = 0})-c*coeff(expr, z));
                                  a AA + BB
                                  ---------
                                  DD - c CC

Для верности лучше выполнить сначала collect(expr,{x,y,z})

Andrey
Сообщения: 667
Зарегистрирован: Пн июн 10, 2002 2:05 pm

Сообщение Andrey » Пт фев 15, 2008 4:13 pm

Да, спасибо! Такой вариант устроит, хотя в Математике лаконичнее.