Równania

Jeśli masz coś do powiedzenia w sprawie LabVIEW napisz. Tutaj są tematy, których nie można uściślić do innych działów.
Awatar użytkownika
TomI85
Posty: 29
Rejestracja: 09 sie 2010 16:28
Wersja środowiska: LabVIEW 2010
Lokalizacja: Kielce

Równania

Post autor: TomI85 »

Witam

Mam do rozwiązania takie równania różniczkowe. Czy jest możliwość obliczenia tego typu równań nieliniowych za pomocą Labview .

diα/dt= a1’+ a2’*iα + a3’*iD + a4’*iQ + a5’*if
diD/dt= a6’+ a7’*iα + a8’*iD + a9’*iQ + a10’*if
diQ/dt= a11’+ a12’*iα + a13’*iD + a14’*iQ + a15’*if
dif/dt= a16’+ a17’*iα + a18’*iD + a19’*iQ + a20’*if

a1’…..a20’- wektory zależne od czasu


Proszę o pomoc
Ostatnio zmieniony 28 cze 2011 13:50 przez TomI85, łącznie zmieniany 1 raz.
Pozdrawiam Tomasz
vugie
Posty: 383
Rejestracja: 17 lis 2006 00:00
Wersja środowiska: LabVIEW 2009
Lokalizacja: Warszawa

Równania Różniczkowe

Post autor: vugie »

Mathematics->Differential Eqs->Ordinary Differential Equations-->ODE Solver
Awatar użytkownika
TomI85
Posty: 29
Rejestracja: 09 sie 2010 16:28
Wersja środowiska: LabVIEW 2010
Lokalizacja: Kielce

Równania Różniczkowe

Post autor: TomI85 »

Dziekuję za podpowiedź już próbuje ......tylko chciałbym nadmienić że ia,if,iD oraz iQ muszę wyliczyć z tych rownań.
Pozdrawiam Tomasz
Awatar użytkownika
TomI85
Posty: 29
Rejestracja: 09 sie 2010 16:28
Wersja środowiska: LabVIEW 2010
Lokalizacja: Kielce

Re: Równania Różniczkowe

Post autor: TomI85 »

Niestety nie mogę sobie poradzić z przykładami...czy są może jakieś przykłady poza (Find Examles). Ponieważ są bardzo złożone i nie jestem w stanie dojść do wniosku jak to jest zrobione tym bardziej że mają jeszcze własne SubVI. Proszę o pomoc
Pozdrawiam Tomasz
vugie
Posty: 383
Rejestracja: 17 lis 2006 00:00
Wersja środowiska: LabVIEW 2009
Lokalizacja: Warszawa

Równania Różniczkowe

Post autor: vugie »

Inne przykłady jakoś nie rzuciły mi się w oczy. Do oryginalnych nie zaglądałem, więc możliwe, że tylko mącą. Pod warunkiem, że zależność od czasu, o której piszesz nie jest jakaś zakręcona, to rozwiązanie tych równań będzie naprawdę proste. Zrobiłem przykład dla układu dwóch równań, jako czynniki zależne od czasu przyjąłem funkcje liniowe. Wygląda to mniej więcej tak:
ode example.png
Ograniczeniem jest to, że wszelkie nazwy (w tym przypadku liczonych funkcji i zmiennej czasowej) muszą wyglądać tak:
a, a0, ..., a9, b, b0, ..., b9, ...... z, z0, ..., z9
Awatar użytkownika
TomI85
Posty: 29
Rejestracja: 09 sie 2010 16:28
Wersja środowiska: LabVIEW 2010
Lokalizacja: Kielce

Re: Równania Różniczkowe

Post autor: TomI85 »

u mnie a1-a20 to wektory funkcji cos i sin (po 1000 próbek). Natomiast jeśli chodzi o ODE formula String to wystarczy żeby obliczyć tego typu układ równań czy muszę do tego dodać ODE IV?. Do tego mam pytanie Ode RHS wybieram typu constant. Tylko jak doprowadzić do ODE RHS wektory od a1...a20 bo one sa zmienne w czasie.
Pozdrawiam Tomasz
vugie
Posty: 383
Rejestracja: 17 lis 2006 00:00
Wersja środowiska: LabVIEW 2009
Lokalizacja: Warszawa

Równania Różniczkowe

Post autor: vugie »

No to są dwa wyjścia:
1. Używasz "Formula is String" (jak w moim przykładzie), ale musisz wcześniej wyznaczyć amplitudy i fazy sinusoid (robi się to dosyć prosto za pomocą Nonlinear Curve Fit.vi). Zapisujesz to to we wzorze w formie a*sin(t-b), a pod a i b podstawiasz odpowiednie wyliczone wartości dla każdego wektora, ale już nie w stałej, tylko odpowiednio formatując stringi. Zalety: otrzymane równania zawierają funkcje ciągłe, więc algorytmy całkowania mniej marudzą, dobrze liczą pochodne i mniej się rozjeżdżają. Wady: troszkę gimnastyki, żeby wyznaczyć współczynniki, no i musisz być pewny, że są to sinusoidy, bo inaczej wynik będzie nieprzewidywalny. I może być ciut wolniej niż w drugiej opcji (ale to zależy od skomplikowania formuły, metody całkowania i wielu innych rzeczy).
2. Używasz "Formula is VI". Budujesz VI, które na każde żądanie algorytmu będzie obliczać F(X,t) (czyli prawe strony). Wektory a dostarczasz mu w formie variant (jako "data") i obliczając wartości prawych stron dla danego t wyinterpolowujesz z nich odpowiednie wartości. Zalety: bardziej elegancko, być może szybciej, w wektorach może siedzieć dowolny przebieg i zadziała poprawnie (przynajmniej z matematycznego punktu widzenia). Wady: twoje przebiegi są z natury nieciągłe, co może powodować kłopoty (zwłaszcza w metodach zmiennokrokowych). Ale przy odpowiedniej interpolacji powinno być ok. Jeżeli wektory a pochodzą z pomiarów, to powinieneś je wcześniej odszumić, żeby wyglądały w miarę gładko.

Ja bym obstawiał drugą metodę.
Jak się zdecydujesz, to mogę skrobnąć jakiś przykład (bo dla obu metod to mi się nie chce)
Awatar użytkownika
TomI85
Posty: 29
Rejestracja: 09 sie 2010 16:28
Wersja środowiska: LabVIEW 2010
Lokalizacja: Kielce

Re: Równania Różniczkowe

Post autor: TomI85 »

spróbuje na razie sam sobie poradzić może się uda :) jak co będe pisać. I pokaże jak w tej chwili to wygląda. Ale jeśli będe prosić o przyklad to wydaje mi się 2 prostrzy
Pozdrawiam Tomasz
Awatar użytkownika
TomI85
Posty: 29
Rejestracja: 09 sie 2010 16:28
Wersja środowiska: LabVIEW 2010
Lokalizacja: Kielce

Re: Równania Różniczkowe

Post autor: TomI85 »

niestety nie moge uruchomić zbudowanej aplikacji. Nie wiem siedzialem godznami nad tym i nic.W miejsce a1...a20 wpisalem wartości. Proszę powiedzieć jak się podpina graph do clustra.Ewentualnie proszę powiedzieć co źle robię. I chcialbym wyświetlić wszystkie przebiegi na 1ym wykresie ia,iD,iQ oraz iF.
Załączniki
ODE_NEW_3.vi
LV 2010
(35.62 KiB) Pobrany 350 razy
ODE_NEW_3.vi
aplikacja w LV09
(33.22 KiB) Pobrany 393 razy
błąd
błąd
Pozdrawiam Tomasz
PiDi
Posty: 641
Rejestracja: 31 gru 2010 01:36
Wersja środowiska: LabVIEW 2017
Lokalizacja: Katowice

Re: Równania Różniczkowe

Post autor: PiDi »

Witam
Uzupełnij tabelę X0, masz cztery zmienne, a nie dwie.
Zmień nazwy zmiennych w równaniach - są one nieprawidłowe. W helpie do ODE Solvera jest odnośnik do informacji o prawidłowym nazywaniu zmiennych (prawidłowe to np. "a", "i0", "z15", "q1", a nieprawidłowe to na przykład "ia","iD","iQ" oraz "iF"). Przy okazji możesz odpalić sobie jakiś przykład dotyczący tego bloczka i zobaczyć, jak to jest tam zrobione.
Pierwsze równanie masz źle przepisane, w jednym miejscu mnożenie zamiast dodawania ;)
Tabelę klastrów do XY grapha podpina się po prostu podpinając ją, żadnych bloczków pośredniczących nie trzeba.
ObrazekObrazekObrazekObrazek
Awatar użytkownika
TomI85
Posty: 29
Rejestracja: 09 sie 2010 16:28
Wersja środowiska: LabVIEW 2010
Lokalizacja: Kielce

Re: Równania Różniczkowe

Post autor: TomI85 »

Przepraszam że tyle pytań zadaję ale chce sie nauczyć rozwiązywać tego typu rownania. A help w LV w niczym nie pomaga bynajmniej jesli chodzi o przykłady w związku z ODE są dla mnie niezrozumiałe. A wartości X0 wpisuję dowolne czy są one od czegoś uzależnione bo w chwili obecnej przepisałem od kolegi z przykładu wyżej
Pozdrawiam Tomasz
PiDi
Posty: 641
Rejestracja: 31 gru 2010 01:36
Wersja środowiska: LabVIEW 2017
Lokalizacja: Katowice

Re: Równania Różniczkowe

Post autor: PiDi »

Proponuję zacząć od podstaw i zajrzeć do jakiegoś skryptu/wykładu/książki na temat metod numerycznych. Wektor X0 to wektor warunków początkowych, których musi być tyle, ile jest zmiennych. Czyli u kolegi vugiego są dwa, u Ciebie muszą być cztery. Jakie to mają być wartości - zależy od konkretnego zadania, rzadziej "od kolegi powyżej" ;)
ObrazekObrazekObrazekObrazek
Awatar użytkownika
TomI85
Posty: 29
Rejestracja: 09 sie 2010 16:28
Wersja środowiska: LabVIEW 2010
Lokalizacja: Kielce

Re: Równania Różniczkowe

Post autor: TomI85 »

Vugie Czy moge poprosić przykład jeśli chodzi o rozwiązanie nr.2 ?? Wktory a1...a20 właśnie muszę doprowadzić do danej formuły.Są one funkcjami sin,cos,sin?^2,cos^2.
Załączniki
obraz
obraz
Pozdrawiam Tomasz
vugie
Posty: 383
Rejestracja: 17 lis 2006 00:00
Wersja środowiska: LabVIEW 2009
Lokalizacja: Warszawa

Re: Równania Różniczkowe

Post autor: vugie »

Płoszę bałdzo. Oto przykład realizujący dokładnie te same równania co wcześniej, tyle że funkcje liniowe realizowane są jako znane a priori przebiegi czasowe (na potrzeby przykładu są generowane w pętli przed rozwiązaniem równania):
odeex2.png
i VI robiące za układ równań:
ODErhsex.png
Jak widać rozwiązanie jest identyczne. Schemat interpolacji jest tu dość nieefektywny, za to przejrzysty. No i interpolacja jest liniowa, a nie powinna w zasadzie.
Załączniki
ODE example2.zip
(31.26 KiB) Pobrany 381 razy
Awatar użytkownika
TomI85
Posty: 29
Rejestracja: 09 sie 2010 16:28
Wersja środowiska: LabVIEW 2010
Lokalizacja: Kielce

Re: Równania Różniczkowe

Post autor: TomI85 »

Próbowalem mnóstwo razy przerabiać ten program i nic. Nie wiem jak doprowadzić wektory uzyskane w obliczeniach do ODE F(x,t). W example sa przykłady ale stałych. Proszę o pomoc
Załączniki
problem
problem
Obliczenia1.vi
LV2009
(46.11 KiB) Pobrany 352 razy
Obliczenia1.vi
LV 2010
(72.81 KiB) Pobrany 355 razy
Pozdrawiam Tomasz
ODPOWIEDZ