You are on page 1of 2

clear all

clc
T = [-36.7 -19.6 -11.5 -2.6 7.6 15.4 26.1 42.2 60.6 80.1];
P = [1 5 10 20 40 60 100 200 400 760];
global P T

%polinomial orde 4
m = 4;
konsi=RegPol(T,P,m)
a = konsi(1)
b = konsi(2)
c = konsi(3)
d = konsi(4)
e = konsi(5)
P = (a.*T.^4)+(b.*T.^3)+(c.*T.^2)+(d.*T.^1)+e
plot(P,T,'g-o')
grid on
hold on
xlabel('Pressure(mmHg)')
ylabel('Temperature(oC)')

%clapeyron
T1=T+273
logP=log10(P);
x=[0.1 0.3];
kons = nlinfit(T1,logP,'clapeyron',x)
A=kons(1)
B=kons(2)
antilog= A+(B./T1)
Pnew=10.^antilog
plot(Pnew,T,'b-o')
grid on
hold on

%antoine
y = [10 2000 273] ;
x = fminsearch('antoine',y)
z = 10.^(x(1)-(x(2)./(T+x(3))));
plot(z,T,'m-o')
grid on
hold on

function R=RegPol(x,y,m)
n=length(x);

p=length(y);

a=zeros(m+1);

b=zeros(m+1,1);
if p~=n,error('jumlah data x dan y harus sama'),
end;

if m<1,error('derajat 1 atau lebih'),


end;

%matriks A

a(1,1)=n;

for i=1:m+1

for j=1:m+1

a(i,j)=sum(x.^(i+j-2));%melakukan perkalian skalar vektor

a(j,i)=a(i,j);

end

b(i)=sum(y.*x.^(i-1)); %Matriks B

end

R=inv(a)*b;
R=R';
R=R((m+1):-1:1);

function [logp] = clapeyron(x,T1)


logp=x(1)+(x(2)./T1);

function fun=antoine(x)
global P T
f = log10(P)-x(1)+x(2)./(T+x(3));
fun=sum(f.*f);

You might also like