Witam.
Mam następujący problem:
a) jest obiekt o nieznanej funkcji wynik = o(x).
b) jest układ zadający x = z( wejscie );
c) jest układ pomiarowy pomiar = p( wynik );
co do funkcji o,z,p wiadomo tylko że są monotoniczne i to w dodatku w jedną stronę (rosnące). z i p można "zdjąć" doświadczalnie, ale chyba jesli nie znamy "o" to nie ma do wielkiego sensu.
Całość problemu wygląda więc tak:
pomiar = p ( o ( z ( wejscie ) ) )
pomiar i wejscie są zadawane z A/C i C/A (pwm) - 10-12bit. Reakcja układu jest "natychmiastowa", tzn nie ma sensu przejmować się opóźnieniami. Wszystkie funkacje nie zależą od czasu ani od historii. Nie zależą (albo zależą w bardzo małym stopniu) od "kierunku pomiaru". Pomiar jest średnio drogi - wolałbym możliwie zminimalizować ilość pomiarów. Przypadek więc prosty (mam nadzieję).
Chce aby wartość "pomiar" była równa zadanej z zewnątrz. Muszę więc zgadnąć jaką wartość "wejście".
Pytanie brzmi jak to zrobić w spoób w miarę szybki. Zaznaczam, że funkcja o zmienia się co chwile (różne obiekty mierzone) i nie mam co do jej kształtu zbyt wielu danych, w szczególności ciężko ją aproksymować. Wygląda więc na to że szukam algorytmu "w ciemno". Jedyne co wiadomo to to, że jest rosnąca i niezmienna na pomiary.
Przyszło mi do głowy żeby zrobić wyszukiwanie binarne (bisekcję). Algorytm byłby taki że zadaje wartość w połowie zakresu na wejście i dostaje pomiar. Sprawdzam w której z połówek jestem zględem zadanej i biorę połowę przedziału. Powinienem odszukać dość szybko prawidłową wartość na wejście układu która generuje mi szukany pomiar.
Pytanie: czy ktoś zna lepszą metodę szukania ?
Jestem w stanie próbować aproksymować wartość o, ale aproksymacja będzie tak naprawdę zbiorem 3-4 funkcji co do których nigdy nie wiadomo jaką wziąść (tyle "typów" obiektów mam). Pytanie zatem czy opłaca się bawić w aproksymacje jeśli mogę w paru ruchach znaleźć własciwą wartość zwykłym podziałem na pół. Zastanawiam się dodatkowo czy nie warto by uśrednić tych fukcji aproksymujących uzyskując coś w rodzaju ślepego zakresu "min/max" w którym dopiero szukać bisekcją.