sprawdzenie ciągłości funkcji

0

Witam, to mój pierwszy post na forum.
Mam problem z okodowaniem warunku, który sprawdzałby dla każdej funkcji czy jest ciągła w danym zbiorze.
Jak na razie wymyśliłem tak:

void ciagla (double a, double b)
{
    for (int i=a; i<b; i++)
    {
        if(f(i)==false)
        {
			
        cout<<"funkcja nie jest ciagla"<<endl;
		
        }
}

niestety problemu nie znalazłem w necie.

0

Co to znaczy "sprawdziłby dla każdej funkcji czy jest ciągła"? Dostajesz przedział [a,b) i magiczną funkcję f. Masz powiedzieć, czy f na [a,b) jest ciągła, tak?

0

tak dokładnie

0

Przez liczenie wartości funkcji nie ma żadnych szans na rozstrzygnięcie czy jest ona ciągła.

0

Okej, przemyślałem to trochę. Nie bardzo da się to zrobić, chyba że mówimy o topologii skończonej. Formalnie mówiąc, mając dowolny skończony ciąg x_1, x_2, ..., x_n i dowolny ciąg y_1, y_2, ..., y_n, ** zawsze ** znajdziemy ciągłą funkcję f: R -> R taką, że f(x_i) = y_i. Właściwie nawet znajdziemy taki wielomian. Stąd też nieskończonej prezycji uzyskać nie możemy (bo jak?), a z dowolnie małą skończoną precyzją odpowiedź zawsze brzmi "tak, funkcja jest ciągła", co wynika głownie z niekompletnej reprezentacji funkcji, tj. nasza funkcja f nie jest zdefiniowana dla ** każdego ** argumentu.

Strzelam że jedyne co możesz zrobić, to tak jak powiedział @Tulio - obliczenia symboliczne, tj. próbować napisać program który "na kartce, jak człowiek" policzy ciągłość. Brzmi dość karkołomnie.

0

czyli jak, liczyć dla każdej wartości z przedziału?

0

Powiedz: co to znaczy każda wartość z przedziału? Masz przedział (1,2) - ile masz liczb pomiędzy? Ja naliczyłem nieskończenie wiele.
Odpowiedź była, że jeżeli chcesz to możesz sprawdzić ciągłość funkcji tak jak byś to sprawdzić na kartce. Czy liczyłbyś wartości dla wszystkich nieskończenie wielu liczb z przedziału?

PS: Czy na pewno tak brzmi Twoje zadanie? Czy znasz typy funkcji o jakich może być mowa (np. funkcje wymierne)? Zrobienie programu, który zadziała w każdym przypadku raczej Cię przerośnie.

0

no rozumiem, o to też mi chodzi, żeby było jak na kartce... z tym że na kartce sprawdza się granice funkcji w punkcie i z tego określa czy jest ciągła... o taki kod mi chodzi

0

tak. Ma być w każdym przypadku, metoda bisekcji znajdz miejsca zerowe funkcji sprawdzając czy funkcja jest ciągła

1

Jeszcze raz: nie sprawdzisz czy funkcja jest ciągła w każdym punkcie danego przedziału i nikt Ci w tym nie pomoże. Możesz pytać użytkownika o rodzaj funkcji i jak wybierze "wielomian" to już wiesz, że jest ciągła, itp. Ale powtórzę: nie ma takiego kodu w ogólnym przypadku. Matematycy nie znają na to ogólnej metody, a Ty chcesz kod. Z granic sprawdza się czy funkcja jest ciągła w punkcie, nie w przedziale.

0

no tak ale jeżeli jest ciągła w każdym punkcie przedziału to jest ciągła... taka jest definicja, z tego co doczytałem. Dobra rozumiem. Dzięki Panowie za pomoc.

0

A masz odpowiednio dużo czasu i odpowiedni komputer, żeby sprawdzić dla ** każdej ** liczy z przedziału (0,1) czy ta granica sie zgadza? Chyba nie. I powtarzam - jeśli założymy skończoną precyzję, to masz tutaj kod:

int main () {
  std::cout  << "ciagla";
}
0

ok:) zrozumiałem post wcześniej, ale dzięki za dosadny obraz. peace:).

1

Nie znam żadnej funkcji elementarnej (wielomian, trygonometryczna, wykładnicza, logarytm, funkcja wymierna), która byłaby nieciągła w punkcie należącym do jej dziedziny. Zatem dla funkcji zbudowanych z funkcji elementarnych starczy sprawdzić czy podany przedział [a,b] zawiera się w dziedzinie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1