Maple: доступ к решениям решения при решении для нескольких функций

Когда я хочу решить набор линейных уравнений для двух функций, например

solutions := solve({f(x)=x,g(x)=x},{f(x),g(x)});

что именно я могу сделать, чтобы работать с решениями как с самими функциями в клене?

Единственное, что я смог сделать, это

f_solution := x2 -> subs(x=x2, rhs(solutions[1]))

Но это некрасиво во многих отношениях. Во-первых, эта банальная замена x->x2 кажется необходимой, без нее не получится. Во-вторых, конструкция rhs(solutions[1]) очень плохая, так как невозможно контролировать порядок решений. Следовательно, каждый раз, когда я изменяю свои уравнения, мне придется вручную проверять, верен ли индекс [1].

Есть ли чистый и стандартный способ извлечения функций из набора?


person flonk    schedule 06.02.2013    source источник


Ответы (2)


solutions := solve({2*f(x)=sin(x),g(x)/3=cos(x)},{f(x),g(x)});

           /       1                        \ 
          { f(x) = - sin(x), g(x) = 3 cos(x) }
           \       2                        / 

и теперь, с f_solution в качестве выражения,

f_solution := eval(f(x), solutions);

                        1       
                        - sin(x)
                        2       

или с f_solution в качестве процедуры,

f_solution := unapply( eval(f(x), solutions), x);

                         1       
                    x -> - sin(x)
                         2       
person acer    schedule 06.02.2013
comment
Спасибо, похоже, это именно то, что мне нужно, завтра попробую! - person flonk; 06.02.2013

Взгляните на assign. Он может исправить решения, которые вы получите в своих расчетах.

> restart:
> solutions := solve({f(x)=x,g(x)=x},{f(x),g(x)});

                  solutions := {f(x) = x, g(x) = x}

> assign(%);
> f(x);

                                  x

Вы также можете просто попробовать subs вот так

> restart:
> solutions := solve({f(x)=x,g(x)=x},{f(x),g(x)});

                  solutions := {f(x) = x , g(x) = x}

> subs(solutions,f(x));
                                  x
person Origin    schedule 06.02.2013
comment
Большое спасибо. Однако было бы неплохо вместо этого назначить решение новому символу f_solution, чтобы мой проект оставался чистым. - person flonk; 06.02.2013