Максима: почему решение ничего не возвращает

Я хочу решить, чтобы вернуть значение t1, которое является единственной неизвестной переменной. Но вместо этого он возвращает (%o3) [], и я не понимаю, почему.

find_root делает то, что ожидается, и возвращает значение t1, но я хотел бы понять, в чем источник проблемы.

kill(all);
CIFV(K,r,t,m):= K*(1+r/m)^(t*m);
eq1: (CIFV(1000,0.06,t1,2)=1500);
solve(%,t1);
find_root(eq1,t1,0,100);

person UpsideDownRide    schedule 14.05.2015    source источник
comment
Пожалуйста, объясните предполагаемый результат и то, что вы на самом деле получаете.   -  person SuperBiasedMan    schedule 14.05.2015
comment
Предназначен для решения, чтобы вернуть значение t1, которое является единственной неизвестной переменной. Но вместо этого он возвращает это - (%o3) [] и я не понимаю, почему. find_root делает то, что ожидается, и возвращает значение t1.   -  person UpsideDownRide    schedule 15.05.2015


Ответы (1)


Я считаю, что проблема в том, что solve предназначено для решения алгебраических уравнений, а в вашем уравнении в качестве показателя степени указано неизвестное.

Учитывая уравнение 2 ^ x = 3, solve правильно даст [x=log(3)/log(2)]. Однако уравнение 1.5^x=1 будет интерпретироваться как сокращение от (3/2)^x=1 и в конечном итоге даст результат [3^x=2^x].

Обходной путь состоит в том, чтобы решить ваше уравнение символически, а затем подставить значения после.

(%i13) solve(CIFV(K,r,t,m)=1500,t);
(%o13) [t=log(1500/K)/(m*log(r/m+1))]
person soegaard    schedule 20.05.2015
comment
Примечание. Я пытался использовать keepfloat:true, чтобы предотвратить rat переписывание 3.1 в 31/10, но solve проигнорировал это. Может быть, есть способ решить это? - person soegaard; 21.05.2015
comment
Согласно следующей ссылке, это ошибка в solve, которая не позволяет игнорировать настройку keepfloat:true. osdir.com/ml/mathematics.maxima.general/2003- 06/msg00038.html - person soegaard; 21.05.2015