y=double(evalin(symengine, 'binomial(2634,1)*binomial(1360*125-2634, 125-1)/binomial(1360*125, 125)'))
The above gives sume number y. but instead of 1 I want variable x in the above equation.
function y=f(x)
y=double(evalin(symengine, 'binomial(2634,x)*binomial(1360*125-2634, 125-x)/binomial(1360*125, 125)'))
end
Of course this gives an error. How can I make function using the input variable x? Thank you.

 Respuesta aceptada

Birdman
Birdman el 31 de Oct. de 2017

0 votos

x=sym('x');
y=evalin(symengine, 'binomial(2634,x)*binomial(1360*125-2634, 125-x)/binomial(1360*125, 125)','x');
y=double(vpa(subs(y,x,1)))

5 comentarios

kman
kman el 31 de Oct. de 2017
Thank you!!
Birdman
Birdman el 31 de Oct. de 2017
If the answer is useful, then accept the answer so that other people having the same problem will know there is a working solution.
Stephen23
Stephen23 el 31 de Oct. de 2017
Note that using evalin or eval is not recommended for using with symbolic equations, no matter how much beginners think they are and recommend them to each other. The correct operations are described in the MATLAB documentation: double, subs, or vpa. Symbolic language is not quite the same as MATLAB language, and using eval or evalin is simply the wrong tool for the task.
Read this comment from Steven Lord:
Birdman
Birdman el 31 de Oct. de 2017
Hi Stephen,
I did not recommend him to use eval function. Thank you for your attention once more.
Walter Roberson
Walter Roberson el 31 de Oct. de 2017
There are some symbolic tasks that still need evalin(symengine) or feval(symengine), but those are somewhat advanced tasks.

Iniciar sesión para comentar.

Más respuestas (0)

Preguntada:

el 31 de Oct. de 2017

Comentada:

el 31 de Oct. de 2017

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!