2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Maple цикл for
Сообщение04.03.2021, 12:16 


04/03/21
1
Код:
for i from 0 to 5 do
    f := simplify(subs(A[i] = solveSys[1][i + 1], f));
end do

После этих строчек код в f получается вся цепочка преобразований, заключенная в 5 скобок f=(((((...=...=...=...=...))))). Как получить последнее значение f (после последнего равно)? f=...

-- 04.03.2021, 12:17 --

Код:
restart;
f := x^2*A[3] + x*y*A[5] + y^2*A[4] + x*A[1] + y*A[2] + A[0];
         2                    2                             
   f := x  A[3] + x y A[5] + y  A[4] + x A[1] + y A[2] + A[0]

a[0] := subs(x = -1, y = -1, f);
        a[0] := A[0] - A[1] - A[2] + A[3] + A[4] + A[5]

a[1] := subs(x = 0, y = -1, f);
                   a[1] := A[0] - A[2] + A[4]

a[2] := subs(x = 1, y = -1, f);
        a[2] := A[0] + A[1] - A[2] + A[3] + A[4] - A[5]

a[3] := subs(x = -1, y = 0, f);
                   a[3] := A[0] - A[1] + A[3]

a[4] := subs(x = 0, y = 0, f);
                          a[4] := A[0]

a[5] := subs(x = 1, y = 0, f);
                   a[5] := A[0] + A[1] + A[3]

a[6] := subs(x = -1, y = 1, f);
        a[6] := A[0] - A[1] + A[2] + A[3] + A[4] - A[5]

a[7] := subs(x = 0, y = 1, f);
                   a[7] := A[0] + A[2] + A[4]

a[8] := subs(x = 1, y = 1, f);
        a[8] := A[0] + A[1] + A[2] + A[3] + A[4] + A[5]

for i from 0 to 8 do
    s[i] := (a[i] - z[i])^2;
end do;
                                                           2
   s[0] := (A[0] - A[1] - A[2] + A[3] + A[4] + A[5] - z[0])

                                                 2
              s[1] := (A[0] - A[2] + A[4] - z[1])

                                                           2
   s[2] := (A[0] + A[1] - A[2] + A[3] + A[4] - A[5] - z[2])

                                                 2
              s[3] := (A[0] - A[1] + A[3] - z[3])

                                          2
                     s[4] := (A[0] - z[4])

                                                 2
              s[5] := (A[0] + A[1] + A[3] - z[5])

                                                           2
   s[6] := (A[0] - A[1] + A[2] + A[3] + A[4] - A[5] - z[6])

                                                 2
              s[7] := (A[0] + A[2] + A[4] - z[7])

                                                           2
   s[8] := (A[0] + A[1] + A[2] + A[3] + A[4] + A[5] - z[8])

S := sum(s[j], j = 0 .. 8);
                                                          2
     S := (A[0] - A[1] - A[2] + A[3] + A[4] + A[5] - z[0])

                                     2
        + (A[0] - A[2] + A[4] - z[1])

                                                          2
        + (A[0] + A[1] - A[2] + A[3] + A[4] - A[5] - z[2])

                                     2                2
        + (A[0] - A[1] + A[3] - z[3])  + (A[0] - z[4])

                                     2
        + (A[0] + A[1] + A[3] - z[5])

                                                          2
        + (A[0] - A[1] + A[2] + A[3] + A[4] - A[5] - z[6])

                                     2
        + (A[0] + A[2] + A[4] - z[7])

                                                          2
        + (A[0] + A[1] + A[2] + A[3] + A[4] + A[5] - z[8])



for i from 0 to 5 do
    d[i] := simplify(diff(S, A[i]));
end do;
  d[0] := -2 z[8] - 2 z[7] - 2 z[6] - 2 z[5] - 2 z[4] - 2 z[3]

     - 2 z[2] - 2 z[1] - 2 z[0] + 12 A[4] + 12 A[3] + 18 A[0]


  d[1] := -2 z[8] + 2 z[6] - 2 z[5] + 2 z[3] - 2 z[2] + 2 z[0]

     + 12 A[1]


  d[2] := -2 z[8] - 2 z[7] - 2 z[6] + 2 z[2] + 2 z[1] + 2 z[0]

     + 12 A[2]


  d[3] := -2 z[8] - 2 z[6] - 2 z[5] - 2 z[3] - 2 z[2] - 2 z[0]

     + 8 A[4] + 12 A[3] + 12 A[0]


  d[4] := -2 z[8] - 2 z[7] - 2 z[6] - 2 z[2] - 2 z[1] - 2 z[0]

     + 12 A[4] + 8 A[3] + 12 A[0]


      d[5] := -2 z[8] + 2 z[6] + 2 z[2] - 2 z[0] + 8 A[5]

solveSys := solve([d[0], d[1], d[2], d[3], d[4], d[5]], [A[0], A[1], A[2], A[3], A[4], A[5]]);
            [[         1        1        2        2        1     
solveSys := [[A[0] = - - z[8] - - z[6] + - z[5] + - z[3] - - z[2]
            [[         9        9        9        9        9     

     1        2        2        5       
   - - z[0] + - z[7] + - z[1] + - z[4],
     9        9        9        9       

         1        1        1        1        1        1       
  A[1] = - z[8] - - z[6] + - z[5] - - z[3] + - z[2] - - z[0],
         6        6        6        6        6        6       

         1        1        1        1        1        1         
  A[2] = - z[8] + - z[7] + - z[6] - - z[2] - - z[1] - - z[0], A[3
         6        6        6        6        6        6         

      1        1        1        1        1        1     
  ] = - z[8] - - z[7] + - z[6] + - z[2] - - z[1] + - z[0]
      6        3        6        6        3        6     

     1        1        1              1        1        1     
   + - z[5] - - z[4] + - z[3], A[4] = - z[8] + - z[7] + - z[6]
     6        3        6              6        6        6     

     1        1        1        1        1        1       
   - - z[5] - - z[4] - - z[3] + - z[2] + - z[1] + - z[0],
     3        3        3        6        6        6       

         1        1        1        1     ]]
  A[5] = - z[8] - - z[6] - - z[2] + - z[0]]]
         4        4        4        4     ]]


for i from 0 to 5 do f := simplify(subs(A[i] = solveSys[1][i + 1], f)); end do


вот весь код до этого

 Профиль  
                  
 
 Re: Maple цикл for
Сообщение04.03.2021, 15:06 
Заслуженный участник


12/07/07
4529
Задача не сформулирована. Если угадывать, то можно что-то такое написать:
Код:
> f := x^2*A[3] + x*y*A[5] + y^2*A[4] + x*A[1] + y*A[2] + A[0]:
                    <.....>
> solveSys := solve([d[0], d[1], d[2], d[3], d[4], d[5]], [A[0], A[1], A[2], A[3], A[4], A[5]]):
> eval(f, solveSys[1]);
   2
  x  (1/6 z[0] - 1/3 z[1] + 1/6 z[2] + 1/6 z[3] - 1/3 z[4] + 1/6 z[5]

         + 1/6 z[6] - 1/3 z[7] + 1/6 z[8])
                                                              2
         + x y (1/4 z[0] - 1/4 z[2] - 1/4 z[6] + 1/4 z[8]) + y  (

        1/6 z[0] + 1/6 z[2] - 1/3 z[3] - 1/3 z[5] + 1/6 z[6]

         + 1/6 z[8] + 1/6 z[1] - 1/3 z[4] + 1/6 z[7]) + x (-1/6 z[0]

         + 1/6 z[2] - 1/6 z[3] + 1/6 z[5] - 1/6 z[6] + 1/6 z[8]) + y

        (-1/6 z[0] - 1/6 z[1] - 1/6 z[2] + 1/6 z[6] + 1/6 z[7]

         + 1/6 z[8]) - 1/9 z[0] + 2/9 z[1] - 1/9 z[2] - 1/9 z[6]

         + 2/9 z[7] - 1/9 z[8] + 2/9 z[3] + 2/9 z[5] + 5/9 z[4]


-- Thu 04.03.2021 14:12:38 --

Отличие от текста в исходном сообщении состоит, конечно, не в замене subs на eval, а в изменении указания самой замены. Можно и с subs, конечно.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group