Assigning a placeholder variable

122 visualizaciones (últimos 30 días)
Daniel
Daniel el 26 de Jun. de 2014
Respondida: Elias Hasle el 6 de Nov. de 2018
I am by no means a Matlab expert so I apologize if this is a question with an easy answer, but I couldn't find any help online.
I have y=x*exp(-(x^2))+x for all x
y is given by previous functions and is some real number
however,x is not yet defined, and I can't get the formula into x= form How can I input this formula without having x defined yet? Is there a way to define x as an empty value and then impute the formula, getting the actual value for x? What am I missing here?
EDIT: I got it to work using fzero. Now I am trying to rework the code to get it to work when y exists as a range of known values instead of one known value. It looks like fzero can't be vectorized, so I tried using a for loop. I get the results, but r0 gts printed into the command line for each value of rm. I want to create a vector of all of the r0 values (and then all of the x0,y0 values). Is this possible?
Here is the code I currently have:
mu=2
nsamples=100;
for rm=linspace(-2,2,10000)
funct=@(r0,rm)mu*r0.*exp(-r0.^2)+r0-rm
options=optimset('Display','off')
[r0]=fzero(@(r0) funct(r0,rm),-2)
end
  3 comentarios
José-Luis
José-Luis el 26 de Jun. de 2014
Editada: José-Luis el 26 de Jun. de 2014
By xexp did you mean x * exp?
Daniel
Daniel el 27 de Jun. de 2014
Editada: Daniel el 27 de Jun. de 2014
Ok, I got it to work using fzero. Now I am trying to rework the code to get it to work when y is a vector of known values, instead of one known value. It looks like fzero can't be vectorized. is there another way of of tackling this problem with a vector?

Iniciar sesión para comentar.

Respuestas (2)

José-Luis
José-Luis el 26 de Jun. de 2014
Editada: José-Luis el 26 de Jun. de 2014
your_fun = @(x) x.*exp(-(x.^2) ) + x
your_fun(3)
Please accept the answer that best solves your problem.
  3 comentarios
Image Analyst
Image Analyst el 27 de Jun. de 2014
You forgot to attach your updated code.
Daniel
Daniel el 27 de Jun. de 2014
updated code:
mu=2
nsamples=100;
for rm=linspace(-2,2,10000)
funct=@(r0,rm)mu*r0.*exp(-r0.^2)+r0-rm
options=optimset('Display','off')
[r0]=fzero(@(r0) funct(r0,rm),-2)
end
Also see above

Iniciar sesión para comentar.


Elias Hasle
Elias Hasle el 6 de Nov. de 2018
Couldn't you use the symbolic toolbox? E.g.:
syms x_symbol
y = <some expression of x_symbol>
z = <some other expression of x_symbol, could include the y expression etc.>
x_value = 1234
z_result = double(subs(z, x, x_value))

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by