Assigning a placeholder variable

122 ビュー (過去 30 日間)
Daniel
Daniel 2014 年 6 月 26 日
回答済み: Elias Hasle 2018 年 11 月 6 日
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 件のコメント
José-Luis
José-Luis 2014 年 6 月 26 日
編集済み: José-Luis 2014 年 6 月 26 日
By xexp did you mean x * exp?
Daniel
Daniel 2014 年 6 月 27 日
編集済み: Daniel 2014 年 6 月 27 日
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?

サインインしてコメントする。

回答 (2 件)

José-Luis
José-Luis 2014 年 6 月 26 日
編集済み: José-Luis 2014 年 6 月 26 日
your_fun = @(x) x.*exp(-(x.^2) ) + x
your_fun(3)
Please accept the answer that best solves your problem.
  3 件のコメント
Image Analyst
Image Analyst 2014 年 6 月 27 日
You forgot to attach your updated code.
Daniel
Daniel 2014 年 6 月 27 日
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

サインインしてコメントする。


Elias Hasle
Elias Hasle 2018 年 11 月 6 日
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!

Translated by