Aproksymacja czy Interpolacja

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From Polish to

Threaded View
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++ ?



Re: Aproksymacja czy Interpolacja
Valhalla pisze:
Quoted text here. Click to load it
 funkcjB1%.
Quoted text here. Click to load it


JeB6%li chcesz interpolowaE6% to i tak musisz wygB3%adziE6% BF%eby usunB1%
E6% bB3%EAdy20%
pomiarowe. MoBF%esz to robiE6% odcinkami krzywB1% np 2 stopnia i po trosz=
ku20%
przesuwaE6% odcinek  na ktF3%rym robisz aproksymacjEA% . Przy okazji gene=
rowaE6%20
gEA%stszB1% siatkEA% danych. MoBF%esz teBF% uBF%yE6% wielomianu na aproks=
ymacjEA%20
caB3%oB6%ci. Skoro sB1% dwa garby to i jest przynajmniej jeden doB3%ek. C=
zyli20%
musisz uBF%yE6% co najmniej wielomianu 4 stopnia a najlepiej wyBF%szego. =
Tylko20%
BF%e 10 punktF3%w pomiarowych to stanowczo za maB3%o BF%eby to dokB3%adni=
e20%
policzyE6%. JeB6%li potrzebujesz. Nie napisaB3%eB6% czy to ma byE6% wylic=
zane w20%
mikrokontrolerze czy tylko chcesz sobie odczytaE6% sam wartoB6%ci poB6%re=
dnie.20%
JeB6%li dla siebie to wystarczy rysunek na papierze mm i krzywiki albo20%
arkusz i wykres z wygB3%adzaniem linii. W przypadku procka to interpolacj=
a20%
gdy nie masz mocy obliczeniowej a aproksymacja gdy nie masz duBF%o pamiEA%
ci20%
na dokB3%adnB1% tabelEA%.

--20%
Pozdrawiam
MD

Re: Aproksymacja czy Interpolacja

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ć.



Re: Aproksymacja czy Interpolacja
Valhalla pisze:
Quoted text here. Click to load it
rednie.

Interpolacja nie bardzo wyjdzie w miejscach gdzie jest wiEA%ksza krzywizn=
a20%
lub duBF%a odlegB3%oB6%E6 miEA%dzy punktami. MusiaB3%byB6% najpierw zagEA%
B6%ciE6% punkty20%
tak jak wspominaB3%em ale to trochEA% roboty.
NajproB6%ciej daE6% wielomian poczB1%wszy od 4 stopnia i patrzeE6% jak le=
BF%y na20%
punktach wzorcowych. Podnosisz stopieF1% aBF% przestaje byE6% widoczna po=
prawa20%
w ukB3%adaniu siEA% na punktach (moBF%esz liczyE6% odchylenie standardowe=
 w tych20%
punktach) lub zaczynajB1% siEA% dziwne osobliwoB6%ci (dodatkowe ekstrema)=
20%
pomiEA%dzy punktami lub na koF1%cach zakresu. Pewnie zatrzymasz siEA% koB3%
o 720%
stopnia.

--20%
Pozdrawiam
MD

Re: Aproksymacja czy Interpolacja
Mario pisze:

Quoted text here. Click to load it

MiaB3%o byE6% 6. 7 to juBF% doB6%E6 wysoki.


--20%
Pozdrawiam
MD

Re: Aproksymacja czy Interpolacja

Quoted text here. Click to load it

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".

Quoted text here. Click to load it

Kawałki kodu na mnożenie stałych przez zmienną ... jedną zmienną?


--
filug
mailto: "dzi" - g, "e" - a, "j" - i, "k" - c

Re: Aproksymacja czy Interpolacja
filug pisze:
Quoted text here. Click to load it

Dwa garby. MiC4%99dzy nimi musi byC4%87 dolinka czyli trzy ekstrema. No=
 i nie20%
wiadomo co ma byC4%87 poza skrajnymi punktami. Do tego przydaC5%82yby s=
iC4%99 punkty20%
przegiC4%99cia ale to nie na takiej iloC5%9Bci punktC3%B3w :)

BTW Matlab miaC5%82 jakiegoC5%9B toolboxa do robienia takich rzeczy.

Pewnie octave ma  teC5%BC


Quoted text here. Click to load it
BC%szego rzC4%99du) i z20%
Quoted text here. Click to load it
82%bym wartoC5%9BC4%8720%
Quoted text here. Click to load it

MoC5%BCe sam chce pisaC4%87 kod do robienia aproksymacji na wielomianac=
h.
Stanowczo odradzaC5%82bym. Najlepiej poszukaC4%87 gotowego solvera a w =
kod20%
wpisaC4%87 tylko znalezionC4%85 funkcjC4%99.



--20%
Pozdrawiam
MD

Re: Aproksymacja czy Interpolacja
Mario pisze:

Quoted text here. Click to load it

Na początek można zacząć od funkcji polyfit.


--
przeciez moje rozumowanie bylo bez skazy,
no sam bym wskoczyl do tego wulkanu,
We've slightly trimmed the long signature. Click to see the full one.
Re: Aproksymacja czy Interpolacja

Quoted text here. Click to load it

Racja trzy ekstema :) Mój błąd, a raczej przejęzyczenie :)

Quoted text here. Click to load it

Pewnie tak, ale ocatve niestety nie miałem w ręce więc nie będę zmyślać.

Quoted text here. Click to load it

Chyba nie skoro ma czujnik i potrzebuje czymś opisać jego odpowiedź.

--
filug
mailto: "dzi" - g, "e" - a, "j" - i, "k" - c

Re: Aproksymacja czy Interpolacja
filug pisze:
Quoted text here. Click to load it
 zmyB6%laE6%.
Quoted text here. Click to load it
2E%

No ale nie ma funkcji kalibracyjnej. Wrzuca punkty do solvera i ma funkcj=
EA%.


--20%
Pozdrawiam
MD

Re: Aproksymacja czy Interpolacja

filug pisze:

Quoted text here. Click to load it


Oj tam... W Excelu jest coś, co się nazywa linia trendu (wielomianowa).
Radzi sobie calkiem niezle.

Maciek


Re: Aproksymacja czy Interpolacja


Quoted text here. Click to load it

No właśnie. Jeśli ktoś jest w temacie to może wie czym zamienic 11 punktów
pomiarowych na aproksymowaną funkcję ? :-) To by było świetnym rozwiązaniem.
Mając fynkcję reszta to jedna linia kodu :-)



Re: Aproksymacja czy Interpolacja
Valhalla schrieb:
Quoted text here. Click to load it
przebieg
Quoted text here. Click to load it
BTW
Quoted text here. Click to load it
punktĂłw
Quoted text here. Click to load it
rozwiÂązaniem.
Quoted text here. Click to load it

niestety nie zawsze. Na przykład jest sobie taka funkcja do oceny
zakłóceń wprowadzanych do sieci przez urządzenia energetyczne (flicker).
Jest to funkcja opisana w normach, bazująca na subjektywnych odczuciach
pewnej populacji. Niestety implementacja tej funkcji "z marszu" wymaga
przynajmniej 128 bitowej dokładności, a najlepiej jeszcze większej, bo
przy mniej dokładnych obliczeniach idzie się kurwić.
W twoim przypadku próbowałbym przybliżyć funkcję kawałkami
wielomianowymi 3 stopnia stosując sklejanie gładkie (spline). Jak masz
Matlab lub Octave, to możesz spróbować fitting, jak już ktoś tutaj
poradził, ale jak będziesz miał wzór funkcyjny, to radzę sprawdzić
czułość na dyskretne współczynniki, bo może się okazać, że zmiana
wartości któregoś współczynnika o 1LSB zmienia wartość funkcji
kilkakrotnie.

Waldek

Re: Aproksymacja czy Interpolacja

Quoted text here. Click to load it

Właśnie Ci napisałem co zrobić!
Użyć wielomianu interpolacyjnego Newtona.
Dla 11 punktów wyjdzie funkcja 10 stopnia.
To można liczyć nawet ręcznie.

Pozdrowienia. Krzysztof z Tychów.




Re: Aproksymacja czy Interpolacja
Krzysztof TabaczyĂąski schrieb:
Quoted text here. Click to load it
punktĂłw
Quoted text here. Click to load it

a robiłeś to często na komputerze? Ręcznie się da, ale komputerowo nie
za bardzo. Wielomiany stopni wyższych niż 5-6 są dość upierdliwe. Musisz
liczyć w double precision, a jeszcze wyżej w double double albo jeszcze
gorzej. Funkcje spline są lepsze i dokładniejsze.

Waldek

Re: Aproksymacja czy Interpolacja

Quoted text here. Click to load it

Kilkadziesiąt razy zamieniałem wielopozycyjną tabelkę
na funkcję za pomocą pakietu Borlanda (chyba "Solver"?).
Jeszcze w latach 80-tych, na AT.
Oczywiście raz najpierw zrobiłem to ręcznie... :-)

Pozdrowienia. Krzysztof z Tychów.



Re: Aproksymacja czy Interpolacja
Krzysztof TabaczyĂąski schrieb:
Quoted text here. Click to load it
za
Quoted text here. Click to load it

jak dane w tabelce są przyzwoite, to się da. Ale polecam uważać na
współczynniki i najlepiej sprawdzić graficznie jak toto wygląda.
Wielomianowa interpolacja przy funkcjach wyższych rzędów lubi dodawać
lokalne ekstrema. W szczególności kolega pisał, że ma dwa garby (czyli
jeszcze przynajmniej jeden dołek). Aproksymacja wielomianem 10 stopnia
dorobi jeszcze parę garbów i dołków tam, gdzie one niekoniecznie są. W
tym przypadku można aproksymować wielomianem 4 stopnia.

Z praktycznego punktu widzenia tego typu wartości można aproksymować
liniowo, jak się chce dokładniej to funkcją spline. Wychodzi dużo
dokładniej, niż aproksymacja wielomianami wyższego rzędu. Zauważ, że
punkty są również obarczone błędem pomiaru.

Waldek

Re: Aproksymacja czy Interpolacja
Quoted text here. Click to load it

I dobrze wychodzilo ?  Bo Waldek ma racje, interpolacja
wielomianami jest wredna bardzo.

ot taki maly przyklad
http://www.math.ucla.edu/~ronmiech/Interpolation/HTMDOCS/Introduction/Interpolation_Applet.htm

Dla
1 1
2 2
3 3
4 4
5 5
6 6.1
7 7
8 8
9 9
10 10
11 11

wyszlo nawet niezle, choc wielomian jest ciekawy
p1(x) = -46,2 + 132,818  x^1 -152,704  x^2 + 96,376  x^3 -37,173
x^4 + 9,244  x^5 -1,512  x^6 + ,162  x^7 -,011  x^8 + ,417E-3
 x^9 -,694E-5  x^10

J.



Re: Aproksymacja czy Interpolacja

Quoted text here. Click to load it
http://www.math.ucla.edu/~ronmiech/Interpolation/HTMDOCS/Introduction/Interpolation_Applet.htm
Quoted text here. Click to load it

Zrób wykres. Będziesz wiedział...
A jaką metodę stosuje ten applet?

Pozdrowienia. Krzysztof z Tychów.



Re: Aproksymacja czy Interpolacja
J.F. pisze:
Quoted text here. Click to load it

Pytanie jak zachowuje siEA% miEA%dzy tymi punktami. ZwrF3%E6 uwagEA%, BF%
e tak jak20%
moBF%esz przez jeden punkt poprowadziE6% nieskoF1%czenie duBF%o prostyc ,=
 przez20%
  2 punkty nieskoF1%czenie wiele parabol tak przez 11 punktF3%w moBF%esz =

poprowadziE6% nieskoF1%czenie wiele wielomianF3%w 11 stopnia. KaBF%dy z n=
icgh20%
moBF%e miec caB3%kiem inny ksztaB3%t miedzy punktami. Ty ze swoim 10 stop=
niem20%
jesteB6% juBF% absurdalnie blisko tej sytuacji.


--20%
Pozdrawiam
MD

Site Timeline