miejsce zerowe
Ostatnio zmodyfikowano 2016-05-17 10:59
wiewior23 Temat założony przez niniejszego użytkownika |
miejsce zerowe » 2016-05-17 10:36:05 witam mam taki problem, gdy otwieram program i podaje przedział a= -1 i b = 0 to program podaje wynik lecz się wyłącza nie dając przeczytać wyniku co muszę poprawić aby program nie wyłączał się po wyskoczeniu wyniku?
//Program wyznacza miejsce zerowe funkcji fun(x) metodą połowienia" //Założenia: Funkcja musi być ciągła, określona w przedziale <a,b>, oraz musi przyjmować wartości różnych znaków na końcach przedziału tzn //jeżeli fun(a)<0 to fun(b)>0 albo jeżeli fun(a)>0 to fun(b)<0.
#include <iostream> #include <iomanip> #include <cmath>
using namespace std;
double fun(double x) { return sqrt(x)-sin(x)-1; // Tu należy podać funkcję, której miejsca zerowego szukamy }
int main() {
double a,b,x0,fa,fb,f0,dok; dok = 0.0000000000001; // Dokładność z jaką ma być wyznaczone miejsce zerowe
cout << "Podaj przedzial poszukiwania miejsca zerowego:\n"; cout << "a = "; cin >> a; cout << "b = "; cin >> b;
fa=fun(a); fb=fun(b); if(fa*fb==0) { if(fa==0) cout << "Miejsce zerowe: \n" << "x0 = " << setprecision(15) << a << endl; else cout << "Miejsce zerowe: \n" << "x0 = " << setprecision(15) << a << endl; return 0; } if(fa*fb>0) cout << "Funkcja nie spelnia zalozen \n"; else // Metoda połowienia { while(abs(a-b)>=dok) { x0=(a+b)/2; f0=fun(x0); if(abs(f0)==0) break; if(fa*f0<0) b=x0; else { a=x0; fa=f0; } } cout << "Miejsce zerowe: \n" << "x0 = " << setprecision(15) << a << endl; // Precyzja z jaką ma być wyświetlone na ekranie miejsce zerowe
} // system("pause"); return 0; } |
|
carlosmay |
» 2016-05-17 10:43:50 Odkomentuj system( "pause" ); . |
|
wiewior23 Temat założony przez niniejszego użytkownika |
» 2016-05-17 10:59:24 dziękuję pomogło, zamykam temat |
|
« 1 » |