Problem with function handle? or something.

2 ビュー (過去 30 日間)
Dakota Burrow
Dakota Burrow 2013 年 7 月 7 日
So, first off, the answer to this problem should be roughly .0028. But, somewhere in the code there is an issue and it will not compute correctly. Can you help?
clc
clear
v = input('Enter initial guess for the volume of methane: ');
R = .518;
pc = 4600;
tc = 191;
T = -40 + 273;
P = 65000;
a = .427*R^2*tc^2.5/pc;
b = .0866*R*tc/pc;
gv =@(v)(R*T)-(((a*(v-b)^2)/(v*(v+b)*sqrt(T))) + P * b)/P;
n = 4;
es = .5*10^(2-n);
[r, I] = Redlich_Kwong(es, v, gv);
fprintf('\nThe calculated volume is : %.6f',r);
fprintf('\nIt took %1.0d iterations to converge.',I);
Function
function [r, I] = Redlich_Kwong(es, v, gv)
I = 0;
ea = 1;
while ea > es
r = gv(v);
ea = 100*abs((r-v)/r);
v = r;
I = I +1;
end
end

採用された回答

Guru
Guru 2013 年 7 月 7 日
Well, from plotting your input-output behavior of your anonymous function gv(), it converges to about the value of R*T. In other words, for all values of v, gv returns an answer of approximately R*T, so I would guess something is wrong in your equation for gv. As I do not know anything where you came up with gv or what it should be, that's the extent I can be of assistance on this matter. I merely ran a quick monte carlo simulation on a sizeable random distribution of v's from -1000 to +1000 and they all came back around R*T in their results.
HTH

その他の回答 (1 件)

Dakota Burrow
Dakota Burrow 2013 年 7 月 7 日
Thank you! R*T was also supposed to be divided by P. Thanks!

カテゴリ

Help Center および File ExchangeHistorical Contests についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by