You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							49 lines
						
					
					
						
							1.2 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							49 lines
						
					
					
						
							1.2 KiB
						
					
					
				| /*Quadratic Curve Fitting Solution | |
|  | |
|   Find a plausable quadratic fit to a sample of points | |
|  | |
|   Nigel_Galloway@operamail.com | |
|   February 1st., 2009 | |
| */ | |
| set Sample; | |
| param Sx {z in Sample}; | |
| param Sy {z in Sample}; | |
| 
 | |
| var a; | |
| var b; | |
| var c; | |
| 
 | |
| equalz1 :sum{z in Sample} a*Sx[z]*Sx[z]*Sx[z]*Sx[z] + sum{z in Sample} b*Sx[z]*Sx[z]*Sx[z] + sum{z in Sample} c*Sx[z]*Sx[z] = sum{z in Sample} Sy[z]*Sx[z]*Sx[z]; | |
| equalz2 :sum{z in Sample} a*Sx[z]*Sx[z]*Sx[z] + sum{z in Sample} b*Sx[z]*Sx[z] + sum{z in Sample} c*Sx[z] = sum{z in Sample} Sy[z]*Sx[z]; | |
| equalz3 :sum{z in Sample} a*Sx[z]*Sx[z] + sum{z in Sample} b*Sx[z] + sum{z in Sample} c = sum{z in Sample} Sy[z]; | |
| 
 | |
| solve; | |
| 
 | |
| printf "\nbest quadratic fit is:\n\ty = %f %s %fx %s %fx^2\n\n", c, if b < 0 then "-" else "+", abs(b), if a < 0 then "-" else "+", abs(a); | |
| 
 | |
| data; | |
| 
 | |
| param: | |
| Sample:   Sx    Sy := | |
|   1         0    1 | |
|   2       0.5  0.9 | |
|   3         1  0.7 | |
|   4       1.5  1.5 | |
|   5       1.9    2 | |
|   6       2.5  2.4 | |
|   7         3  3.2 | |
|   8       3.5    2 | |
|   9         4  2.7 | |
|  10       4.5  3.5 | |
|  11         5    1 | |
|  12       5.5    4 | |
|  13         6  3.6 | |
|  14       6.6  2.7 | |
|  15         7  5.7 | |
|  16       7.6  4.6 | |
|  17       8.5    6 | |
|  18         9  6.8 | |
|  19        10  7.3 | |
| ; | |
| 
 | |
| end;
 |