Assigning a placeholder variable

122 views (last 30 days)
Daniel
Daniel on 26 Jun 2014
Answered: Elias Hasle on 6 Nov 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 Comments
José-Luis
José-Luis on 26 Jun 2014
Edited: José-Luis on 26 Jun 2014
By xexp did you mean x * exp?
Daniel
Daniel on 27 Jun 2014
Edited: Daniel on 27 Jun 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?

Sign in to comment.

Answers (2)

José-Luis
José-Luis on 26 Jun 2014
Edited: José-Luis on 26 Jun 2014
your_fun = @(x) x.*exp(-(x.^2) ) + x
your_fun(3)
Please accept the answer that best solves your problem.
  3 Comments
Image Analyst
Image Analyst on 27 Jun 2014
You forgot to attach your updated code.
Daniel
Daniel on 27 Jun 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

Sign in to comment.


Elias Hasle
Elias Hasle on 6 Nov 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))

Community Treasure Hunt

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

Start Hunting!