Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс. e-mail:jobsmp@pochta.ru |
double const u2=2.5; // actual voltage 2
long const n2=120; // ADC result 2
double const u3=4.9; // actual voltage 3
long const n3=253; // ADC result 3
double a[3];
void MakeCoeffs()
{
double x1=(double)n1;
double x2=(double)n2;
double x3=(double)n3;
double denom=(-x3+x2)*(-x2*x1+x2*x3+x1*x1-x3*x1);
a[0]=(x2*x2*u1*x3-x2*x2*x1*u3-x3*x3*u1*x2+u3*x1*x1*x2+x3*x3*x1*u2-u2*x1*x1*x3)/denom;
a[1]=-(-x2*x2*u3+x2*x2*u1-x3*x3*u1-u2*x1*x1+u3*x1*x1+u2*x3*x3)/denom;
a[2]=(x1*u3-x1*u2+x3*u2-u3*x2-u1*x3+u1*x2)/(-x1*x1*x3+x1*x1*x2-x1*x2*x2+x1*x3*x3-x3*x3*x2+x3*x2*x2);
}
double GetResult(long sample)
{
double x=(double)sample;
return a[2]*x*x+a[1]*x+a[0];
}
int _tmain(int argc, _TCHAR* argv[])
{
MakeCoeffs();
printf("%f\n%f\n%f\n",GetResult(n1),GetResult(n2),GetResult(n3));
return 0;
}