Biblioteka do obliczania całek w C++

daro256
Użytkownik
Użytkownik
Posty: 21
Rejestracja: 2 lis 2006, o 17:20
Płeć: Mężczyzna
Lokalizacja: Kołobrzeg
Pomógł: 1 raz

Biblioteka do obliczania całek w C++

Post autor: daro256 »

Witam wszystkich !

Mam do napisania program, przy którym będę musiał wyliczyć całkę nieoznaczoną. Program będę pisał w Microsoft Visual C++, albo w Borland C++ Builder. Czy są jakieś biblioteki do visuala, albo buildera które pozwalają na wyliczenie całki ?

Jeżeli nie, to jak realizuje się programowo liczenie całki nieoznaczonej ?
soku11
Użytkownik
Użytkownik
Posty: 6607
Rejestracja: 16 sty 2007, o 19:42
Płeć: Mężczyzna
Podziękował: 119 razy
Pomógł: 1823 razy

Biblioteka do obliczania całek w C++

Post autor: soku11 »

Nie ma takiej rzeczy. Za dobrze by było. Ogólnie liczenie całek nieoznaczonych polega na znaniu jakichś schematów rozwiązań ogólnych, które można zastosować. Problemem jest też to, że nie każdą funkcję da się scałkować do funkcji elementarnych :/

Pozdrawiam.
daro256
Użytkownik
Użytkownik
Posty: 21
Rejestracja: 2 lis 2006, o 17:20
Płeć: Mężczyzna
Lokalizacja: Kołobrzeg
Pomógł: 1 raz

Biblioteka do obliczania całek w C++

Post autor: daro256 »

Tak myślałem że nie ma łatwego rozwiązania... A co z całkami niewłaściwymi ? W tym wypadku pojawia się problem obliczenia granicy, może na to jest jakiś sprytny sposób ?
Awatar użytkownika
Althorion
Użytkownik
Użytkownik
Posty: 4541
Rejestracja: 5 kwie 2009, o 18:54
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 9 razy
Pomógł: 662 razy

Biblioteka do obliczania całek w C++

Post autor: Althorion »

Najpopularniejszym sposobem jest chyba całkowanie Monte Carlo. W dużym skrócie - "strzelasz" w wykres w podanym przedziale i porównujesz ilość "trafień" (wyników mniejszych bądź równych wartości funkcji) z ilością wszystkich "strzałów", przez co w przybliżeniu wiesz, jaki procent przedziału "wypełnia" wykres.

Musisz do tej metody oszacować minimum i maksimum w zadanym przedziale.

EDYTOWANO.
Dzięki, zawsze mi się to myli.
Awatar użytkownika
klaustrofob
Użytkownik
Użytkownik
Posty: 1984
Rejestracja: 11 lis 2007, o 07:29
Płeć: Mężczyzna
Lokalizacja: inowrocław
Podziękował: 1 raz
Pomógł: 607 razy

Biblioteka do obliczania całek w C++

Post autor: klaustrofob »

daro256 pisze: będę musiał wyliczyć całkę nieoznaczoną.
w tej postaci problem jest bardzo ogólny. ale może wiesz coś o funkcjach (funkcji?), którą będziesz miał całkować? jeżeli jest to klasa "porządnych" funkcji, to można oprogramować dowolną z metod całkowania przybliżonego.
filip.wroc
Użytkownik
Użytkownik
Posty: 153
Rejestracja: 17 sty 2010, o 15:37
Płeć: Mężczyzna
Lokalizacja: Wroclaw
Pomógł: 13 razy

Biblioteka do obliczania całek w C++

Post autor: filip.wroc »

chyba najlatwiej jest to pociagnac Riemannem:

Kod: Zaznacz cały

for (int i=a; i<b; i+=skok)
   suma+=f(i)*skok;
gdzie calkujesz funkcje f(x) na przedziale [a, b], dyskretyzujac ten przedzial skokiem rownym zmiennej skok (warto ustawic skok jako dzielnik liczby b-a). suma bedzie oznaczac wlasnie ta calke.

ostatecznie \(\displaystyle{ \lim_{skok\to0}suma = \int_{a}^{b}f(i)}\) wiec dla dowolnie malego skoku (ograniczanego rozdzielczoscia reprezentacji liczb zmiennoprzecinkowych) dostaniesz dowolnie dokladna calke.

ew. mozesz to metoda trapezow tez zrobic:

Kod: Zaznacz cały

for (int i=a; i<b; i+=skok)
   suma+=(f(i)+f(i+skok))*skok/2;
==edit==

yyy... przeczytalem temat raz jeszcze i sie zorientowalem ze o oznaczonych nikt tu nie mowil. nie wiem skad mi sie wzielo, ze przyda sie taki post. sory. ale moze i tak sie przyda
Awatar użytkownika
Sokół
Użytkownik
Użytkownik
Posty: 451
Rejestracja: 17 wrz 2006, o 19:22
Płeć: Mężczyzna
Lokalizacja: Zielona Góra
Podziękował: 15 razy
Pomógł: 55 razy

Biblioteka do obliczania całek w C++

Post autor: Sokół »

skoro mowa o metodach przybliżonych, to polecam bibliotekę GiNaC, która ma wbudowane całkowanie numeryczne oraz miljart innych funkcji:


polecam zapoznać się z tutorialem, biblioteka jest zaiste genialna.
Awatar użytkownika
Emiel Regis
Użytkownik
Użytkownik
Posty: 1495
Rejestracja: 26 wrz 2005, o 17:01
Płeć: Mężczyzna
Lokalizacja: Kraków
Podziękował: 71 razy
Pomógł: 225 razy

Biblioteka do obliczania całek w C++

Post autor: Emiel Regis »

Althorion pisze:Najpopularniejszym sposobem jest chyba całkowanie Monte Casino.
Monte Carlo; )
daro256
Użytkownik
Użytkownik
Posty: 21
Rejestracja: 2 lis 2006, o 17:20
Płeć: Mężczyzna
Lokalizacja: Kołobrzeg
Pomógł: 1 raz

Biblioteka do obliczania całek w C++

Post autor: daro256 »

Althorion pisze:Najpopularniejszym sposobem jest chyba całkowanie Monte Carlo...
Jak zastosować tą metodę skoro nie znam funkcji, która wyjdzie po obliczeniu całki nieoznaczonej ?
A jeżeli mowa o całkach niewłaściwych to co z sytuacją kiedy granicą przedziału jest nieskończoność ?
klaustrofob pisze:
daro256 pisze: będę musiał wyliczyć całkę nieoznaczoną.
w tej postaci problem jest bardzo ogólny. ale może wiesz coś o funkcjach (funkcji?), którą będziesz miał całkować? jeżeli jest to klasa "porządnych" funkcji, to można oprogramować dowolną z metod całkowania przybliżonego.
Funkcje na pewno będą porządne. Mógłbyś podać którąś z metod całkowania przybliżonego, która nadaje się do całek nieoznaczonych, lub do niewłaściwych.
Sokół pisze:skoro mowa o metodach przybliżonych, to polecam bibliotekę GiNaC, która ma wbudowane całkowanie numeryczne oraz miljart innych funkcji:


polecam zapoznać się z tutorialem, biblioteka jest zaiste genialna.
Z tego co wyczytałem to biblioteka radzi sobie tylko z całkami oznaczonymi. Jeżeli się mylę to mnie popraw.
Awatar użytkownika
Emiel Regis
Użytkownik
Użytkownik
Posty: 1495
Rejestracja: 26 wrz 2005, o 17:01
Płeć: Mężczyzna
Lokalizacja: Kraków
Podziękował: 71 razy
Pomógł: 225 razy

Biblioteka do obliczania całek w C++

Post autor: Emiel Regis »

daro256, Ty w ogóle umiesz całkować? Bo odnoszę wrażenie, że dostałeś projekt z informatyki ale o jego matematycznej części to nie masz bladego pojęcia. Wiesz co to całka nieoznaczona albo niewłaściwa? I w szczególności co rozumiesz przez "metodę całkowania przybliżonego" w kontekście obliczania całki nieoznaczonej?

Jeśli chcesz zaimplementować coś co będzie liczyło całkę nieoznaczoną z dowolnej funkcji ciągłej (wiemy, że taka istnieje) to nie zdajesz sobie w ogóle sprawy z trudności problemu, ergo nie wiesz o czym mówisz.

A to co wyżej większość osób pisała to nie czytaj, bo tyczy się to wszystko całek oznaczonych. Pierwszy post soku11 załatwił tutaj w zasadzie wszystko.
Możesz napisać maila do autorów Maple'a albo Mathematici z prośbą o algorytm: ]

Jako ciekawostkę podaję:
daro256
Użytkownik
Użytkownik
Posty: 21
Rejestracja: 2 lis 2006, o 17:20
Płeć: Mężczyzna
Lokalizacja: Kołobrzeg
Pomógł: 1 raz

Biblioteka do obliczania całek w C++

Post autor: daro256 »

Emiel Regis pisze:daro256, Ty w ogóle umiesz całkować?...
Umiem i wiem co to jest całka nieoznaczona i niewłaściwa, również zdaję sobie sprawę ze złożoności problemu. Ale zanim zacznie się rozwiązywać złożony problem dobrze jest sprawdzić, czy ktoś już tego nie zrobił.

A teraz mam pytanie do Ciebie. Czy wiesz co oznacza układ w postaci: cytat użytkownika a pod nim wypowiedź ? Bo odnoszę wrażenie, że nie. Gdybyś wiedział to pytania:
Emiel Regis pisze:I w szczególności co rozumiesz przez "metodę całkowania przybliżonego" w kontekście obliczania całki nieoznaczonej?
byś nie kierował do mnie.
Moim zdaniem "całkowanie przybliżone" nie nadaje się do całek nieoznaczonych, ale jako że nigdy nie pisałem programu do tego celu, oraz nie wydaje mi się żebym znał wszystkie metody całkowania przybliżonego, wolę się zapytać. Może klaustrofob mnie zaskoczy.
Emiel Regis pisze: A to co wyżej większość osób pisała to nie czytaj, bo tyczy się to wszystko całek oznaczonych...
[/quote]
Dobrze, będę czytał tylko twoje posty
Awatar użytkownika
Emiel Regis
Użytkownik
Użytkownik
Posty: 1495
Rejestracja: 26 wrz 2005, o 17:01
Płeć: Mężczyzna
Lokalizacja: Kraków
Podziękował: 71 razy
Pomógł: 225 razy

Biblioteka do obliczania całek w C++

Post autor: Emiel Regis »

Wiem co pisał klaustrofob, po prostu mi chodziło, że ktoś kto rozróżnia operacje liczenia całek nieoznaczonych i oznaczonych to powinien posiadać sito przez które przesiewa informacje i może poznać, która część wypowiedzi czego się tyczy. Choć zgadzam się, że jego wypowiedź bynajmniej nie wskazuje aby czynił jakiekolwiek rozróżnienie między nimi.

Oczywiście teoretycznie można sobie wyobrazić, że bierzemy jakąś metrykę, i w tej metryce poszukujemy funkcji pierwotnych, które należą do pewnej kuli i w ten sposób są w jakimś sensie "bliskie" naszemu rozwiązaniu. Choć im więcej o tym myślę to coraz więcej problemów z tym widzę, choćby taki, że na całej dziedzinie może być kłopot aproksymować przyzwoicie funkcję elementarną przez inną funkcję elementarną. Gdyby się ograniczyć do przedziału to by można choćby wielomianami każdą funkcję dobrze przybliżyć. Ale przecież nie o to tu chodzi.

Zresztą jak przeczytałeś mój ostatni link to już wiesz, że to nie jest łatwa rzecz.
Awatar użytkownika
klaustrofob
Użytkownik
Użytkownik
Posty: 1984
Rejestracja: 11 lis 2007, o 07:29
Płeć: Mężczyzna
Lokalizacja: inowrocław
Podziękował: 1 raz
Pomógł: 607 razy

Biblioteka do obliczania całek w C++

Post autor: klaustrofob »

przepraszam wszystkich - nieuważnie przeczytałem pierwszy post daro256, a że do głowy mi nie przyszło, by ktoś chciał (miał jako projekt) napisać bibliotekę/program do całkowania symbolicznego, resztę - tj. całkowanie numeryczne/oznaczone - dopowiedziałem sobie sam. dalej po prostu nie chciało mi się prostować wypowiedzi, jak zrobił to filip.wroc.
ODPOWIEDZ