Innlevering 3 og 4
This commit is contained in:
		
							parent
							
								
									6da3bc27ad
								
							
						
					
					
						commit
						62633fa9fb
					
				
							
								
								
									
										23
									
								
								inf120stat.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								inf120stat.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,23 @@ | ||||
| from math import sqrt, isclose | ||||
| 
 | ||||
| def mean(l): | ||||
|     return sum(l)/len(l) | ||||
| 
 | ||||
| def std(l): | ||||
|     m = mean(l) | ||||
|     diffs = [(x-m)**2 for x in l] | ||||
|     return sqrt(sum(diffs)/len(diffs)) | ||||
| 
 | ||||
| def test_mean(): | ||||
|     l = [1.0, 2.0, 3.0, 4.0] | ||||
|     expected = 2.5 | ||||
|     return isclose(mean(l),  expected, abs_tol=0.001) | ||||
| 
 | ||||
| def test_std(): | ||||
|     l = [1.0, 2.0, 3.0, 4.0] | ||||
|     expected = 1.11803 | ||||
|     return isclose(std(l), expected, abs_tol=0.001) | ||||
| 
 | ||||
| if __name__ == '__main__': | ||||
|     print('mean:', test_mean()) | ||||
|     print('std:', test_std()) | ||||
							
								
								
									
										34
									
								
								smitte.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								smitte.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,34 @@ | ||||
| # -*- coding: utf-8 -*- | ||||
| """Created on 23.10""" | ||||
| __author__ = "Trygve B. Nomeland" | ||||
| __email__ = "trygve.borte.nomeland@nmbu.no" | ||||
| 
 | ||||
| """" | ||||
| SIR modell av en pandemi: | ||||
| S (Susceptible) – folk som ikke er eller har vært syke og som kan smittes | ||||
| I (Infectious) – folk som er syke og som kan smitte andre | ||||
| R (Recoverd) – folk har vært syke og har blitt friske igjen. Modellen antar at disse ikke kan bli syke igjen. | ||||
| _y betyr verdi fra forrige steg | ||||
| """ | ||||
| def updateSIR(s_y, i_y, r_y, b, k): | ||||
|     return {'s': s_y - b*s_y*i_y, 'i': i_y + b*s_y*i_y-k*i_y, 'r': r_y + k*i_y} | ||||
| 
 | ||||
| # Generator som kjører simulasjonen frem til "stop" verdien | ||||
| def genSIR(s_0, i_0, r_0, stop, b=1/3, k=1/10,): | ||||
|     SIR = {'s': s_0, 'i': i_0, 'r': r_0} | ||||
|     yield SIR | ||||
|     n = 0 | ||||
|     while n < stop: | ||||
|         n += 1 | ||||
|         SIR = updateSIR(SIR.get('s'), SIR.get('i'), SIR.get('r'), b, k) | ||||
|         yield SIR | ||||
| 
 | ||||
| def main(): | ||||
|     f = open('pan.csv', 'w') | ||||
|     f.write('Day,s@day,i@day,r@day\n') | ||||
|     for n, S in enumerate(genSIR(1, 10/(5*10**6), 0, stop=120)): | ||||
|         f.write(f'{n},{S.get('s'):.3e},{S.get('i'):.3e},{S.get('r'):.3e}\n') | ||||
|     f.close() | ||||
| 
 | ||||
| if __name__ == '__main__': | ||||
|     main() | ||||
							
								
								
									
										51
									
								
								stat_kalk.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								stat_kalk.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,51 @@ | ||||
| import inf120stat as stat | ||||
| 
 | ||||
| def choose_action(): | ||||
|     #returns number from 1 to 5 | ||||
|     print(""" | ||||
| ESP meny: | ||||
|     1. Les inn verdier | ||||
|     2. Tøm verdi listen | ||||
|     3. Vis gjennomsnitt og standardavvik | ||||
|     4. List ut verdiene | ||||
|     5. Avslutt | ||||
| Ditt valg:""") | ||||
|     i = int(input()) | ||||
|     if i not in range(1,6): raise ValueError() | ||||
|     return i | ||||
| 
 | ||||
| def read_values(values): | ||||
|     while True: | ||||
|         try: | ||||
|             values.append(float(input('Ny verdi (Enter = slutt):'))) | ||||
|         except ValueError: | ||||
|             print('Verdier kan kunn være gyldige flyttall!') | ||||
|             break | ||||
|     return values | ||||
| 
 | ||||
| def print_statistics(values): | ||||
|     return(f'Antall verdier: {len(values)}, gjennomsnitt: {stat.mean(values):.2f}, standardavvik: {stat.std(values):.2f}') | ||||
| 
 | ||||
| def main(): | ||||
|     print('Starter Enkelt statistikk program (ESP)') | ||||
|     values = [] | ||||
|     while True: | ||||
|         match choose_action(): | ||||
|             case 1: | ||||
|                 # Write numbers | ||||
|                 read_values(values) | ||||
|             case 2: | ||||
|                 values = [] | ||||
|             case 3: | ||||
|                 #mean, std | ||||
|                 try: | ||||
|                     print(print_statistics(values)) | ||||
|                 except ZeroDivisionError: | ||||
|                     print('Tom liste!') | ||||
|             case 4: | ||||
|                 print(values) | ||||
|             case 5: | ||||
|                 exit('Hadebra :)') | ||||
| 
 | ||||
| if __name__ == '__main__': | ||||
|     main() | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user