-
1. Data: 2009-08-24 15:25:13
Temat: Aproksymacja czy Interpolacja
Od: "Valhalla" <l...@l...lol>
Mam czujnik mierzący pewne parametry fizyczne. Wkładam go do cieczy, a on mi
wystawia napięcie do kilkudziesięciu do kilkuset mV w zależności od
zawartości roztworu.
Zależność napięcia U od stężenia x nie jest żadną znaną funkcją.
Jedyne co mam to tabelka U(x) dla 10-ciu wartości x i odpowiadającym im
napięciom U
100% - 70mV
90% - 150mV
...
0% - 655mV
Jak naszkicuje sobie wykres to jest to taki podwójny garb.
Chciałbym odczytywać wartości pośrednie ale nie wiem co mam zrobić i w jaki
sposób.
1. Czy wykonywać interpojację ?
2. Czy może aproksymować tę funkcję wielomianem i mając przybliżone F(x)
dopiero liczyć pośrednie wartości?
Gdzie mogę znaleźć kawałki kodu w C++ ?
-
2. Data: 2009-08-24 15:46:34
Temat: Re: Aproksymacja czy Interpolacja
Od: Mario <m...@p...onet.pl>
Valhalla pisze:
> Mam czujnik mierzący pewne parametry fizyczne. Wkładam go do cieczy, a on mi
> wystawia napięcie do kilkudziesięciu do kilkuset mV w zależności od
> zawartości roztworu.
>
> Zależność napięcia U od stężenia x nie jest żadną znaną funkcją.
> Jedyne co mam to tabelka U(x) dla 10-ciu wartości x i odpowiadającym im
> napięciom U
>
> 100% - 70mV
> 90% - 150mV
> ...
> 0% - 655mV
>
> Jak naszkicuje sobie wykres to jest to taki podwójny garb.
>
> Chciałbym odczytywać wartości pośrednie ale nie wiem co mam zrobić i w jaki
> sposób.
>
> 1. Czy wykonywać interpojację ?
> 2. Czy może aproksymować tę funkcję wielomianem i mając przybliżone F(x)
> dopiero liczyć pośrednie wartości?
>
> Gdzie mogę znaleźć kawałki kodu w C++ ?
Jeśli chcesz interpolować to i tak musisz wygładzić żeby usunąć błędy
pomiarowe. Możesz to robić odcinkami krzywą np 2 stopnia i po troszku
przesuwać odcinek na którym robisz aproksymację . Przy okazji generować
gęstszą siatkę danych. Możesz też użyć wielomianu na aproksymację
całości. Skoro są dwa garby to i jest przynajmniej jeden dołek. Czyli
musisz użyć co najmniej wielomianu 4 stopnia a najlepiej wyższego. Tylko
że 10 punktów pomiarowych to stanowczo za mało żeby to dokładnie
policzyć. Jeśli potrzebujesz. Nie napisałeś czy to ma być wyliczane w
mikrokontrolerze czy tylko chcesz sobie odczytać sam wartości pośrednie.
Jeśli dla siebie to wystarczy rysunek na papierze mm i krzywiki albo
arkusz i wykres z wygładzaniem linii. W przypadku procka to interpolacja
gdy nie masz mocy obliczeniowej a aproksymacja gdy nie masz dużo pamięci
na dokładną tabelę.
--
Pozdrawiam
MD
-
3. Data: 2009-08-24 15:56:41
Temat: Re: Aproksymacja czy Interpolacja
Od: filug <f...@d...kom>
Dnia 24-08-2009 o 17:25:13 Valhalla <l...@l...lol> napisał(a):
> [...]
> Jak naszkicuje sobie wykres to jest to taki podwójny garb.
>
> Chcia?bym odczytywaae warto?ci po?rednie ale nie wiem co mam zrobiae i w
> jaki
> sposób.
>
> 1. Czy wykonywaae interpojacje ?
> 2. Czy mo?e aproksymowaae te funkcje wielomianem i maj?c przybli?one F(x)
> dopiero liczyae po?rednie warto?ci?
Ja bym sobie próbował znaleźć jakiś wielomian który opisłaby taki przebieg
jaki masz na wykresie (ale skoro na 10 wartościach masz dwa ekstema - to
chyba trochę trzeba by się napracować, zeby znaleźć coś sensownego). BTW
Matlab miał jakiegoś toolboxa do robienia takich rzeczy.
Ewentualnie - jeżeli otrzymana dokładność by Ci wystarczyła - aproksymował
bym funkcję opisującą odpowiedź przetwornika w odcinkach. Tzn. od jednego
punktu gdzie znasz wartość do drugiego punktu "sąsiedniego" wyznaczałbym
prostą (albo funkcję wyższego rzędu) i z równania prostej (albo funkcji
wyższego rzędu) wyznaczałbym wartość argumentu. Po przekroczeniu przez
odpowiedz przetwornika dziedziny funkcji aproksymującej użyłbym kolejnej
funkcji która opisuje kolejny "fragment".
> Gdzie moge znale 1/4 ae kawa?ki kodu w C++ ?
Kawałki kodu na mnożenie stałych przez zmienną ... jedną zmienną?
--
filug
mailto: "dzi" - g, "e" - a, "j" - i, "k" - c
-
4. Data: 2009-08-24 15:58:02
Temat: Re: Aproksymacja czy Interpolacja
Od: "Valhalla" <l...@l...lol>
"Mario" <m...@p...onet.pl> wrote in message
news:h6uclk$9g0$1@news.onet.pl...
Nie napisałeś czy to ma być wyliczane w
mikrokontrolerze czy tylko chcesz sobie odczytać sam wartości pośrednie.
Obliczenia w PC-cie.
Dane lecą z urządzenia po RS-ie. Producent nie dał nic innego jak tabelkę
11-tu wartości i maksymalny błąd pomiarowy +/- dla 10-40 stopni celsiusza.
Sondy są powtarzalne bardzo ale nijak nie opisane krzywą.
Mocy obliczeniowej dosyć.
-
5. Data: 2009-08-24 16:40:12
Temat: Re: Aproksymacja czy Interpolacja
Od: Mario <m...@p...onet.pl>
filug pisze:
> Dnia 24-08-2009 o 17:25:13 Valhalla <l...@l...lol> napisał(a):
>
>> [...]
>> Jak naszkicuje sobie wykres to jest to taki podwójny garb.
>>
>> Chcia?bym odczytywaae warto?ci po?rednie ale nie wiem co mam zrobiae i w
>> jaki
>> sposób.
>>
>> 1. Czy wykonywaae interpojacje ?
>> 2. Czy mo?e aproksymowaae te funkcje wielomianem i maj?c przybli?one F(x)
>> dopiero liczyae po?rednie warto?ci?
>
> Ja bym sobie próbował znaleźć jakiś wielomian który opisłaby taki
> przebieg jaki masz na wykresie (ale skoro na 10 wartościach masz dwa
> ekstema - to chyba trochę trzeba by się napracować, zeby znaleźć coś
> sensownego).
Dwa garby. Między nimi musi być dolinka czyli trzy ekstrema. No i nie
wiadomo co ma być poza skrajnymi punktami. Do tego przydałyby się punkty
przegięcia ale to nie na takiej ilości punktów :)
BTW Matlab miał jakiegoś toolboxa do robienia takich rzeczy.
Pewnie octave ma też
> Ewentualnie - jeżeli otrzymana dokładność by Ci wystarczyła -
> aproksymował bym funkcję opisującą odpowiedź przetwornika w odcinkach.
> Tzn. od jednego punktu gdzie znasz wartość do drugiego punktu
> "sąsiedniego" wyznaczałbym prostą (albo funkcję wyższego rzędu) i z
> równania prostej (albo funkcji wyższego rzędu) wyznaczałbym wartość
> argumentu. Po przekroczeniu przez odpowiedz przetwornika dziedziny
> funkcji aproksymującej użyłbym kolejnej funkcji która opisuje kolejny
> "fragment".
>
>> Gdzie moge znale 1/4 ae kawa?ki kodu w C++ ?
>
> Kawałki kodu na mnożenie stałych przez zmienną ... jedną zmienną?
Może sam chce pisać kod do robienia aproksymacji na wielomianach.
Stanowczo odradzałbym. Najlepiej poszukać gotowego solvera a w kod
wpisać tylko znalezioną funkcję.
--
Pozdrawiam
MD
-
6. Data: 2009-08-24 16:40:19
Temat: Re: Aproksymacja czy Interpolacja
Od: Mario <m...@p...onet.pl>
Valhalla pisze:
> "Mario" <m...@p...onet.pl> wrote in message
> news:h6uclk$9g0$1@news.onet.pl...
> Nie napisałeś czy to ma być wyliczane w
> mikrokontrolerze czy tylko chcesz sobie odczytać sam wartości pośrednie.
>
> Obliczenia w PC-cie.
> Dane lecą z urządzenia po RS-ie. Producent nie dał nic innego jak tabelkę
> 11-tu wartości i maksymalny błąd pomiarowy +/- dla 10-40 stopni celsiusza.
> Sondy są powtarzalne bardzo ale nijak nie opisane krzywą.
>
> Mocy obliczeniowej dosyć.
Interpolacja nie bardzo wyjdzie w miejscach gdzie jest większa krzywizna
lub duża odległość między punktami. Musiałbyś najpierw zagęścić punkty
tak jak wspominałem ale to trochę roboty.
Najprościej dać wielomian począwszy od 4 stopnia i patrzeć jak leży na
punktach wzorcowych. Podnosisz stopień aż przestaje być widoczna poprawa
w układaniu się na punktach (możesz liczyć odchylenie standardowe w tych
punktach) lub zaczynają się dziwne osobliwości (dodatkowe ekstrema)
pomiędzy punktami lub na końcach zakresu. Pewnie zatrzymasz się koło 7
stopnia.
--
Pozdrawiam
MD
-
7. Data: 2009-08-24 16:51:34
Temat: Re: Aproksymacja czy Interpolacja
Od: Mario <m...@p...onet.pl>
Mario pisze:
> Pewnie zatrzymasz się koło 7
> stopnia.
Miało być 6. 7 to już dość wysoki.
--
Pozdrawiam
MD
-
8. Data: 2009-08-24 16:52:40
Temat: Re: Aproksymacja czy Interpolacja
Od: Zbych <a...@o...pl>
Mario pisze:
> BTW Matlab miał jakiegoś toolboxa do robienia takich rzeczy.
Na początek można zacząć od funkcji polyfit.
--
przeciez moje rozumowanie bylo bez skazy,
no sam bym wskoczyl do tego wulkanu,
ale kto by tak pieknie gwizdal...
-
9. Data: 2009-08-24 16:56:29
Temat: Re: Aproksymacja czy Interpolacja
Od: filug <f...@d...kom>
Dnia 24-08-2009 o 18:40:12 Mario <m...@p...onet.pl> napisał(a):
> filug pisze:
>> [...]
>> (ale skoro na 10 wartościach masz dwa ekstema - to chyba trochę trzeba
>> by się napracować, zeby znaleźć coś sensownego).
>
> Dwa garby. Między nimi musi być dolinka czyli trzy ekstrema. No i nie
> wiadomo co ma być poza skrajnymi punktami.
Racja trzy ekstema :) Mój błąd, a raczej przejęzyczenie :)
>> BTW Matlab miał jakiegoś toolboxa do robienia takich rzeczy.
>
> Pewnie octave ma też
Pewnie tak, ale ocatve niestety nie miałem w ręce więc nie będę zmyślać.
>> Kawałki kodu na mnożenie stałych przez zmienną ... jedną zmienną?
>
> Może sam chce pisać kod do robienia aproksymacji na wielomianach.
> Stanowczo odradzałbym. Najlepiej poszukać gotowego solvera a w kod
> wpisać tylko znalezioną funkcję.
Chyba nie skoro ma czujnik i potrzebuje czymś opisać jego odpowiedź.
--
filug
mailto: "dzi" - g, "e" - a, "j" - i, "k" - c
-
10. Data: 2009-08-24 17:17:37
Temat: Re: Aproksymacja czy Interpolacja
Od: "J.F." <j...@p...onet.pl>
Użytkownik "Valhalla" <l...@l...lol> napisał w wiadomości
news:h6ubb8$1oc$1@opal.futuro.pl...
> Zależność napięcia U od stężenia x nie jest żadną znaną funkcją.
> Jedyne co mam to tabelka U(x) dla 10-ciu wartości x i
> odpowiadającym im napięciom U
Czysto matematycznie: interpolacja jest funkcja dokladna we
wszystkich punktach zmierzonych.
Co dla N punktow wymaga wielomianu stopnia N-1, czy ogolnie funkcji
o N wspolczynnikach.
Jesli to bedzie interpolacja wielomianem, to cecha uboczna sa
zazwyczaj duze oscylacje na skrajnych obszarach.
Aproksymacja nie musi sie dokladnie zgadzac w punktach pomiarowych
i efektem jest wielomian stopnia znacznie nizszego.
W zyciowych przypadkach zawsze stosujemy aproksymacje - dzieki temu
bledy pomiarowe sie usredniaja a nie poteguja.
No chyba ze sie decydujemy na interpolacje w przedzialach
[funkcje sklejane].
Do aproksymacji trzeba zalozyc postac funkcji - na podstawie
teorii, literatury, intuicji wzrokowej, a moze wynikow dopasowania.
Jak juz wspominasz roztwor - to moze byc jakas funkcja wykladnicza
czy logarytmiczna - kiepsko aproksymowana wielomianami.
> Gdzie mogę znaleźć kawałki kodu w C++ ?
Ha, ha, a pare grubych ksiazek z teoria nie łaska najpierw
przeczytac ? :-P
J.