Ghidul utilizatorului Mathcad

Interpolare și funcții de predicție

Interpolarea utilizează valorile unei funcții specificate într-un număr de puncte pentru a prezice valorile unei funcții între ele. În Mathcad, puteți fie să conectați punctele de date prin linii drepte (interpolare liniară), fie să le conectați cu segmente ale unui polinom cubic (interpolare cubică spline).







Spre deosebire de funcțiile de regresie discutate în secțiunea următoare, funcțiile de interpolare definesc o curbă care trece exact prin punctele date. Din acest motiv, rezultatul este foarte sensibil la erorile de date. Dacă datele sunt zgomotoase, luați în considerare utilizarea regresiei în loc de interpolare.

Predicția liniară este folosirea valorilor datelor existente pentru a prezice valori în afara acestora. În Mathcad există o funcție care vă permite să prezicați valori viitoare de date pe baza datelor deja existente.

Ori de câte ori sunt utilizate reele în oricare dintre funcțiile descrise în această secțiune, asigurați-vă că fiecare element din matrice conține o anumită valoare, deoarece Mathcad atribuie o valoare 0 tuturor elementelor care nu sunt definite explicit.

Cu interpolare liniară, Mathcad conectează punctele de date existente cu linii drepte. Aceasta se face prin funcția linterp. descrise mai jos.

Utilizează vectorii de date vx și vy. pentru a returna o valoare y interpolată liniar. corespunzând celui de al treilea argument x. Argumentele vx și vy trebuie să fie vectori de aceeași lungime. Vectorul vx trebuie să conțină valori reale, aranjate în ordine ascendentă.

Această funcție conectează punctele de date cu linii drepte, creând astfel o linie întreruptă. Valoarea interpolată pentru un anumit x este ordonata y a punctului corespunzător al polilinii.

Pentru valorile lui x localizate înainte de primul punct în vx. Mathcad continuă linia întreruptă cu o linie dreaptă care trece prin primele două puncte de date. Pentru valorile lui x situate în spatele ultimului punct din vx. Mathcad continuă linia întreruptă cu o linie dreaptă care trece prin ultimele două puncte de date.

Pentru cele mai bune rezultate, valoarea lui x ar trebui să se situeze între cele mai mari și cele mai mici valori ale vectorului vx - este puțin probabil ca valorile calculate pentru x în afara acestui interval să fie utile. Funcția linterp este destinată interpolării, nu extrapolării. Figura 5 prezintă câteva exemple de interpolare liniară.

Figura 5: Exemple de interpolare liniară.

Interpolarea spline cubică vă permite să trasați o curbă printr-un set de puncte în așa fel încât primul și al doilea derivat al curbei să fie continuu în fiecare punct. Această curbă se formează prin crearea unei serii de polinoame cubice care trec prin seturi de trei puncte adiacente. Polinoamele cubice sunt apoi legate între ele pentru a forma o singură curbă.

Pentru a desena un spline cubic printr-un set de puncte:
  • Creați vectori vx și vy conținând coordonatele x și y. prin care trebuie să realizați un spline cubic. Elementele vx trebuie aranjate în ordine crescătoare. (Deși folosim numele vx.vy și nu există restricții asupra numelor acestor variabile, puteți utiliza orice nume.)
  • Calculați vectorul vs: = cspline (vx. Vy). Vectorul vs conține cel de-al doilea derivat al curbei de interpolare în punctele luate în considerare.
  • Pentru a găsi o valoare interpolată la un punct arbitrar, spune x0. calcula interp (vs vx. xx), unde vs vx și vy sunt vectorii descriși mai devreme.

Rețineți că puteți face același lucru prin calcularea:

Figura 6: Exemplu de interpolare spline.

În practică, poate fi necesar să se calculeze interp în multe puncte diferite. Deoarece apelarea cspline poate dura mult timp și din moment ce rezultatul pe care îl întoarce nu depinde de punctul în cauză, este logic să o faceți o dată, să salvați rezultatul și să îl reutilizați, așa cum este descris mai sus.

Figura 6 prezintă cum se construiește un spline pentru exemplul prezentat în Figura 5. O descriere a pașilor luați în Figura 6:

Expresia cu funcția cspline calculează o serie de derivate secunde vs pentru splinea folosită pentru a interpola datele de la vx și vy.

Odată ce matricea vs este găsită, interp interpretează valorile interpolate.

Rețineți că matricea vs trebuie evaluată o singură dată, chiar și pentru mai multe interpolări. Deoarece calculul vs durează mult timp, este mai bine să stocați rezultatele intermediare ca vector decât să le recalculați după cum este necesar.

În plus față de cspline, Mathcad vine cu alte două funcții spline cubice. Trei funcții spline:







Toți returnează vectorul coeficienților celui de-al doilea derivat, pe care îl vom apela vs Acest vector, vs. utilizate în mod obișnuit în funcția interp. descrise mai jos. Argumentele vx și vy trebuie să fie vectori reali cu aceeași lungime. Valorile în vx trebuie să fie reale și aranjate în ordine ascendentă.

Toți returnează vectorul coeficienților celui de-al doilea derivat, pe care îl vom apela vs Acest vector, vs. utilizate în mod obișnuit în funcția interp. descrise mai jos. Argumentele vx și vy trebuie să fie vectori reali cu aceeași lungime. Valorile în vx trebuie să fie reale și aranjate în ordine ascendentă.

Aceste trei funcții diferă numai în condițiile limită: funcțiile spline, condițiile finale pentru
  • funcția lspline generează o curbă spline care se apropie de o linie dreaptă la punctele de frontieră.
  • funcția pspline generează o curbă spline care se apropie de parabolă la punctele de graniță.
  • funcția cspline generează o curbă spline, care poate fi un polinom cubic la punctele de frontieră.

Returnează valoarea interpolată a y. corespunzătoare argumentului x. Vectorul vs este calculat de la vectorii de date vx și vi ai uneia dintre funcțiile lspline. pspline sau cspline.

Valoarea interpolată pentru un anumit x este ordinul y al punctului spline corespunzător. Pentru valorile lui x localizate înainte de primul punct în vx. Mathcad continuă splinea primei parabole cubice constitutive. Pentru valorile lui x situate în spatele ultimului punct din vx. Mathcad continuă splinea ultimei parabole cubice constitutive.

Pentru cele mai bune rezultate, valoarea lui x ar trebui să se situeze între cele mai mari și cele mai mici valori ale vectorului vx - este puțin probabil ca valorile calculate pentru x în afara acestui interval să fie utile. Splinele sunt destinate pentru interpolare, nu pentru extrapolare.

Interpolarea vectorului punct

Puteți utiliza operatorul de vectorizare pentru a calcula imediat un întreg set de valori interpolate corespunzătoare vectorului punctelor date. Acest lucru este posibil cu interp. și cu linterp.

Figura 7: Calculul valorilor interpolate într-un set de puncte.

Spline interpolarea funcțiilor mai multor variabile

Mathcad interpolează funcțiile a două variabile cu spline cubice în același mod ca în cazul unidimensional discutat mai devreme. Mathcad desenează o suprafață constând din polinoame cubice de x și y prin rețeaua de noduri. în așa fel încât primul și al doilea derivat parțial sunt continuu la fiecare nod al rețelei.

Primul pas în interpolarea bidimensională spline este exact același ca în cazul unidimensional: pentru a determina nodurile prin care trebuie să treacă suprafața. Cu toate acestea, acest lucru va necesita mai mult efort, pentru că acum trebuie să definiți o rețea de noduri:
  • Creați o matrice n x 2 Mxy. ale căror elemente Mxyi, 0 și Mxyi, 1 determină coordonatele x și y de-a lungul diagonalei grilajului dreptunghiular. Această matrice are același rol ca vx în cazul unidimensional descris anterior. Deoarece aceste noduri descriu diagonala, elementele din fiecare coloană Mxy trebuie aranjate în ordine ascendentă (Mxyi, k
  • Creați o matrice nx n Mz. (ij) - elementul este coordonata z corespunzătoare punctului x = Mxyi, 0 și y = Mxyj, 1. Acesta joacă același rol ca și tine în cazul unidimensional descris anterior.
  • Calculați vectorul vs: = cspline (Mxy. Mz). Vectorul vs conține cei doi derivați ai suprafeței aproximative la nodurile definite de Mxy și Mz.
  • Pentru a găsi o valoare interpolată la un punct arbitrar, spune (x0, y0), calculați

unde vs. Mxy și Mz sunt matricele descrise mai devreme. Rezultatul este valoarea funcției de interpolare corespunzătoare punctului (x0, y0).

Notă, același lucru se poate face și prin calcularea

În practică, poate fi necesar să se calculeze interp în multe puncte diferite. Deoarece apelarea cspline poate dura mult timp și din moment ce rezultatul pe care îl întoarce nu depinde de punctul în cauză, este logic să o faceți o dată, să salvați rezultatul și să îl reutilizați, așa cum este descris mai sus.

În plus față de cspline, Mathcad vine cu două alte funcții de interpolare spline. Funcțiile de interpolare Spline Mathcad:

Toți returnează vectorul coeficienților celui de-al doilea derivat, pe care îl vom apela vs Acest vector, vs. utilizate în mod obișnuit în funcția interp. descrise mai jos. Mxy este o matrice n x 2 a cărei elemente Mxyi, 0 și Mxyi, 1 definesc puncte pe diagonala n x n a rețelei. (ij) - elementul matricei Mz determină valoarea funcției de interpolare în (Mxyi, 0, Mxyj, 1).

Aceste trei funcții diferă numai în condițiile limită:
  • Funcția lsplin e generează un spline care se apropie de planul de la marginea rețelei.
  • funcția pspline generează un spline care reprezintă un polinom de gradul doi de x și y la marginile ochiului.
  • funcția cspline generează un spline care reprezintă un polinom de gradul al treilea de la x și y la marginile rețelei.

Returnează valoarea interpolată a lui z. corespunzând punctelor x = v0 și y = v1. Vectorul vs este calculat de lspline, pspline sau cspline pe baza datelor de la Mxy și Mz.

Pentru rezultate optime, nu utilizați funcția interp pentru x și y. eliminat din nodurile rețelei. Splinele sunt destinate pentru interpolare, nu pentru extrapolare, deci este puțin probabil ca valorile calculate pentru astfel de x și y. va fi util.

Funcțiile de interpolare descrise în această secțiune până acum ne permit să estimăm valorile la unele puncte intermediare din valorile date ale unei funcții într-un număr de puncte. Uneori este necesar să se evalueze valorile funcției la punctele din afara locației grilei pe care sunt specificate valorile funcției. În Mathcad există o funcție care să prezică. care vă permite să faceți acest lucru. Această funcție utilizează un algoritm de predicție liniară care este util atunci când funcția extrapolată este netedă și oscilantă, deși nu este neapărat periodică. Predicția liniară poate fi considerată un fel de extrapolare, dar nu poate fi confundată cu extrapolarea liniară sau polinomică.

Figura 8: Utilizarea funcției de predicție pentru extrapolarea datelor.

Returnează n valori estimate pe baza m de valori consecutive ale vectorului de date v. Elementele în v trebuie să fie valori luate la intervale regulate.

Funcția predictivă utilizează ultimul m din valorile originale pentru a calcula coeficienții de predicție. După ce se face acest lucru, se utilizează ultimele puncte de m pentru a prezice coordonatele punctului (m + 1), creând de fapt o fereastră glisantă cu o lățime de puncte m.







Articole similare

Trimiteți-le prietenilor: