Problem with function handle? or something.

2 vues (au cours des 30 derniers jours)
Dakota Burrow
Dakota Burrow le 7 Juil 2013
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

Réponse acceptée

Guru
Guru le 7 Juil 2013
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

Plus de réponses (1)

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

Catégories

En savoir plus sur Historical Contests dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by