Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- %projekt två Van der waals lag
- disp('-----------------------------------------------------')
- disp(' Newton Raphsons metod för att lösa: ')
- disp(' f(v) = 0, där fv =((p+a*(1/v)^2)*(v-b)-R*T)=0')
- disp('-----------------------------------------------------')
- disp(' ')
- format long; % Ställer om utskriftsformatet till många decimaler
- x = input('vill du räkna ut volymen för syre eller koldioxid? ','s')
- if strcmp(x, 'syre')
- a = 1.360
- b = 0.03183
- else
- a=3.592;
- b=0.04267;
- end
- global R
- R=0.082054;
- f=@(v) ((p+a.*(1/v)^2).*(v-b)-R.*T); %definerar funktion f
- fprim= @(v) -2*a.*(1/v^3).*(v-b)+(p+a.*(1/v^2)); %definerar fprim
- clc
- %fplot(f,[0.05 60])
- v_vektor=[];
- values=[];
- e=1e-6; %feltermen
- for p=[1 10 100];
- for T=[300 500 700];
- iter = 0;
- plot([0 100], [0 0], 'm--')
- hold on
- fplot(f,[0.05 60])
- xlabel('v');
- ylabel('f(v)');
- title('fv =((p+a*(1/v)^2)*(v-b)-R*T)');
- disp('Se graf för lämplig startgissning ')
- v = input('vilket startgissning vill du ha? ')
- v_vektor=[];
- c=100; %asymptotiska felkonstanten
- iter = 0;
- while c>e
- iter = iter + 1;
- v = v - f(v)/fprim(v); % Nytt x-värde med Newton-Raphsons metod
- v_vektor(iter) = v; % Lagra x-värdet i en vektor
- c=f(v)/fprim(v)
- disp(['Iteration ',num2str(iter),' med Newton-Raphsons metod gav resultatet ',num2str(v,16)])
- disp(' ')
- end
- values = [values v]
- end
- end
- % Skriver ut samtliga beräknade x-värden, lagrade i x_vektor
- disp('slutgiltigt xvärde');
- disp(v_vektor(:));
- T = tabel(iter,v_vektor,v,values,c) %tabell av iterationsnummer, funktionsvärde, x, asymptotisk felkonstant, fel
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement