Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Program całkujący. Algorytmy do układu całkującego. Program w C, C .

04 Feb 2009 12:35 3371 7
  • Level 2  
    Witam, potrzebuje na przedmiot Miernictwo program całkujący.
    Ma to być układ całkujący napisany w C, C++ lub ewentualnie w innym języku.
    Problem polega na tym ze nie wiem jak to zrobić, to znaczy program moge napisac tylko nie wiem jakie wzory (algorytm) trzeba zastosować.
    Byłbym wdzieczny za pomoc w podpowiedzi o algorytm do układu całkującego.
  • Level 21  
    Zapewne całkujesz jakiś przebieg (krzywa). Całkę oznaczoną interpretuję się jako pole powierzchni pod krzywą. Najprościej poprzez metodę trapezów. W równych odstępach badasz wartość przebiegu i z otrzymanych danych liczysz pole trapezu (między odczytem n-tym i n+1 następnie między n+1 i n+2 itd.). Na koniec sumujesz pola wszystkich trapezów. Im mniejszy krok tym dokładniejszy wynik ale dłuższe obliczenia.
  • Level 43  
    Piotras_C wrote:
    Zapewne całkujesz jakiś przebieg (krzywa). Całkę oznaczoną interpretuję się jako pole powierzchni pod krzywą. Najprościej poprzez metodę trapezów. W równych odstępach badasz wartość przebiegu i z otrzymanych danych liczysz pole trapezu (między odczytem n-tym i n+1 następnie między n+1 i n+2 itd.). Na koniec sumujesz pola wszystkich trapezów. Im mniejszy krok tym dokładniejszy wynik ale dłuższe obliczenia.
    Jednak "przyzwoitością" tu jest zastosowanie Metody Simpsona - całkowania numerycznego - ZOBACZ.
    Natomiast z tym mniejszym krokiem (całkowania numerycznego ... i nie mylić tego z innymi), Kolego Piotras_C, to nie do końca prawda ... :!: :idea: :D
  • Level 21  
    Co do ilości przedziałów w metodzie trapezów (jak i prostokątów) to im jest ich więcej to wynik jest dokładniejszy (tak mnie uczono gdy chodziłem do szkoły - a nie słyszałem aby coś się zmieniło).

    Zaproponowałem metodę trapezów jako dość prostą w zakodowaniu i dokładniejszą od metody prostokątów.
    Oczywiste, że metoda Simpsona jest najdokładniejsza. Myślę więc, że autor tematu korzystając z podanego przez Ciebie linku wybierze najlepiej Mu odpowiadającą metodę całkowania.

    Pozdrawiam

    Piotr
  • Level 43  
    Piotras_C wrote:
    Co do ilości przedziałów w metodzie trapezów (jak i prostokątów) to im jest ich więcej to wynik jest dokładniejszy (tak mnie uczono gdy chodziłem do szkoły - a nie słyszałem aby coś się zmieniło).
    Tylko do pewnego miejsca, a potem zaczyna narastać addytywny błąd maszynowy związany z długością (ilość bitów) słowa maszynowego.
    Sprawa znana od zarania obliczeń numerycznych, a wiedział już o tym w/w Thomas Simpson członek Royal Society.

    Piotras_C wrote:
    Zaproponowałem metodę trapezów jako dość prostą w zakodowaniu i dokładniejszą od metody prostokątów.
    Oczywiste, że metoda Simpsona jest najdokładniejsza. Myślę więc, że autor tematu korzystając z podanego przez Ciebie linku wybierze najlepiej Mu odpowiadającą metodę całkowania.
    Ta może mieć tylko znaczenie historyczno-akademicko-poglądowe ... :D

    Piotras_C wrote:
    Pozdrawiam

    Piotr
    Również pozdrawiam
  • Level 2  
    Dziekuję wszystkim za pomoc.

    Paweł Es. te materiały są bardzo pomocne.
    W pierwszym linku jest podany przyklad funkcji całkującej za pomocą prostokątów. Funkcja przyjmuje parametry a, b i n. Romumiem, że a i b to jest zakres calkowania np. od 2 do 8 a n to skok?
  • VIP Meritorious for electroda.pl
    a i b to są granice całkowania a n to jest ilość przedziałów na jaki dzielisz zakres <a,b>.

    Wtedy szerokość prostokąta to:

    $$dx=\frac{b-a}{n}$$ b>a, n>0

    Liczysz kolejne pola prostokątów

    S1=f(a)*dx
    S2=f(a+dx)*dx
    S3=f(a+2*dx)*dx
    ...
    Sn=f(a+(n-1)*dx)*dx

    f(x) - wartość funkcji całkowanej

    Wartość całki to suma pól od S1 do Sn

    Dla wzoru trapezów liczysz pola trapezów a nie prostokątów

    T1=(f(a)+f(a+dx))*dx/2
    T2=(f(a+dx)+f(a+2*dx))*dx/2
    ....
    Tn=(f(a+(n-1)*dx)+f(a+n*dx))*dx/2

    Wartość całki to suma pól trapezów.

    Mnożenie przez dx czy dx/2 możesz robić po sumowaniu,