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 Center および File ExchangeFunction Creation についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by