Извлечь значение переменной из решения

Я пытаюсь написать функцию для калькулятора TI-Nspire cx cas. Мне нужно решить большую систему, используя встроенную функцию solve. Я хочу сохранить результат solve в некоторых переменных. Например, если результат равен u1=2 and u2=3, я хотел бы сохранить 2 и 3 соответственно в переменных u1 и u2. Кто-нибудь знает, как это сделать автоматически в программе?


person Christian Lorenz    schedule 27.02.2015    source источник
comment
Вы можете использовать string(Solve(...)) для преобразования вывода Solve в строку, а затем выполнить интенсивную обработку строк (используя inString для поиска символов между "=" и " "), чтобы извлечь числовые значения и преобразовать их в числа с помощью expr. Это единственный способ, которым я могу это сделать. Извините, у меня сейчас нет времени писать код, но я проверил, и string преобразует выражение в строку.   -  person PGmath    schedule 01.03.2015
comment
Таким образом, нет встроенного способа сделать это   -  person eigenfield    schedule 13.07.2020


Ответы (2)


Попробуйте функцию exp▶list(Expr,Var). Пример>

res:=solve({x+2*y=5,x-y=2},{x,y})

х=3 и у=1

l1:=exp▶list(res,{x,y})

[[3,1]]

person fragg    schedule 29.11.2016

Для линейных уравнений вы можете просто использовать linsolve():

linSolve(x=5 and y=x+5, x, y)
-> {5,10}

Очень удобен символ вертикальной черты для доступа к переменным вывода:

solve(x=5 and y=x+5, x, y)
-> x=5 and y=10

x|x=5 and y=10
-> 5

Вы также можете сохранить значение:

res:={x, y}|x=5 and y=10

К сожалению, это не работает с or в выводе solve.

person jeanggi90    schedule 09.01.2019
comment
Я здесь, чтобы использовать and вместе с |, что сводило меня с ума на час. Спасибо. - person eigenfield; 13.07.2020