Я хотел бы, чтобы результат ввода максимальных значений был [6,12,18], но это приводит к 2ac. Может ли кто-нибудь помочь?Оценка выражения с использованием списков maxima
a:2;
c:[1,2,3];
b:'(a*c);
''b;
a:3;
''b;
f:'(b*2);
''f;
Я хотел бы, чтобы результат ввода максимальных значений был [6,12,18], но это приводит к 2ac. Может ли кто-нибудь помочь?Оценка выражения с использованием списков maxima
a:2;
c:[1,2,3];
b:'(a*c);
''b;
a:3;
''b;
f:'(b*2);
''f;
Я думаю, ev(f, infeval)
- это то, что вы хотите. См. ? ev
для информации о infeval
и других флагах оценки.
(%i1) c : [1, 2, 3];
(%o1) [1, 2, 3]
(%i2) b : '(a*c);
(%o2) a c
(%i3) a : 3;
(%o3) 3
(%i4) f : '(b*2);
(%o4) 2 b
(%i5) f;
(%o5) 2 b
(%i6) ''f;
(%o6) 2 a c
(%i7) ev (f);
(%o7) 2 a c
(%i8) ev (f, infeval);
(%o8) [6, 12, 18]
Вы также можете написать ev(f, infeval);
, как только f, infeval;
на входе строке.
Это, мой совет, не пытайтесь слишком усердно найти хитрые способы оценить материал. Легко написать что-то, что имеет неожиданные результаты и трудно понять. Вам нужно будет найти баланс между попыткой заставить Maxima делать то, что вы хотите, и приспособить особенности Maxima (т. Е. Измените свои идеи в соответствии с Maxima).
сказочный - это будет прекрасно и спасибо за совет. – TomH
Вы должны использовать f:'(''b*2);
. Это работает так, как вы ожидаете.
Спасибо. Есть ли другая альтернатива добавлению «каждой переменной, которую мне нужно оценить? – TomH
@TomH Я не знаю, существует ли он. И не забудьте, пожалуйста, возвысить. – justanothercoder
мелкий редактирование сделано. 12ac до 2ac – TomH