evaluate expression

3 次查看(过去 30 天)
omnia
omnia 2011-5-12
I have equation y=x*exp( (1-y)/(A*y)*B ) where A nd B constants in my program. I have a vector values for x. How can I evaluate y to plot y versus x ?

采纳的回答

Andrei Bobrov
Andrei Bobrov 2011-5-12
ezplot(['y-x*exp( (1-y)/(' num2str(A) '*y)*' num2str(B) ')'],[x(1) x(end)])
more
As = ...;
Bs = ...;
y = zeros(size(x));
for j = 1:length(x)
y(j) = fzero(@(y)y-x(j).*exp( (1-y)./(As*y)*Bs ),1);
end
plot(x,y);
  2 个评论
John D'Errico
John D'Errico 2011-5-12
It is generally not a good idea to convert the numeric values into strings to then pass into ezplot. This loses precision. Far, far better is to use an anonymous function here.
omnia
omnia 2011-5-13
Thank you alot

请先登录,再进行评论。

更多回答(1 个)

Andrew Newell
Andrew Newell 2011-5-12
It would be simpler to provide y and solve for x:
y = -1:0.01:1;
x = y.*exp(- (1-y)./(A*y)*B );
In plotting this, you have to be careful because x goes to Inf or -Inf as y approaches zero from below:
I = y < 0 & abs(x) < 10;
plot(x(I),y(I))
hold on
I = y > 0 & abs(x) < 10;
plot(x(I),y(I))
  1 个评论
omnia
omnia 2011-5-13
yes I know it is easier to provide y and solve for x, but I don't have y. The input to my file is x values.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Function Creation 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by