Lepszy sposób niż gdyby w ogóle… dla interpolacji liniowej
pytanie jest łatwe. Powiedzmy, że masz funkcję
double interpolate (double x);
i masz tabelę, która ma mapę znanych x-> y
na przykład
5 15
7 18
10 22
Uwaga: prawdziwe tabele są większe ofc, to tylko przykład.
więc dla 8 powróciłbyś 18 + ((8-7) / (10-7)) * (22-18) = 19.3333333
Jeden fajny sposób, jaki znalazłem, tohttp://www.bnikolic.co.uk/blog/cpp-map-interp.html (Krótko mówiąc, używa std :: map, key = x, value = y dla par danych x-> y).
Jeśli ktoś zapyta, co jest w tytule, jeśli jest inaczej, to w zasadzie:
if ((x>=5) && (x<=7))
{
//interpolate
}
else
if((x>=7) && x<=10)
{
//interpolate
}
Czy jest więc bardziej sprytny sposób na zrobienie tego lub odwzorowanie sposobu, w jaki jest najnowocześniejszy? :)
Btw Wolę w C ++, ale oczywiście każde rozwiązanie językowe, które ma mapowanie 1: 1 na C ++, jest miłe.