• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wyznaczenie dwóch miejsc zerowych metodą bisekcji.

Cloud VPS
0 głosów
422 wizyt
pytanie zadane 8 czerwca 2020 w C i C++ przez Maciek To Ja Początkujący (260 p.)

Cześć, 

mianowicie mam taki problem, w poleceniu napisane jest, aby wyznaczyć wszystkie miejsca zerowe funkcji c *(x * x) + 2 * x - d, gdzie 'c' to losowa liczba z zakresu, a 'd' to liczba wprowadzana z klawiatury od 5 do 14.99. Stąd moje pytanie jak wyznaczyć więcej niż 1 miejsce zerowe metodą bisekcji(równego podziału)? Póki co kod napisany przeze mnie znajduję jedynie 1 miejsce zerowe, szukałem odpowiedzi na to pytanie w sieci, niestety jej nie znalazłem. Proszę o nakierowanie mnie w jaki sposób mogę osiągnąć metodą bisekcji 2 miejsca zerowe w danej funkcji. Pozdrawiam

 

Kod:

#include <iostream>
#include <math.h>
#include <stdlib.h>
#include <time.h>
#include <random>


using namespace std;

double x1, x2, c, d, eps = 0.0001, b = 10, a=0;
int attempts=20;

double f(double x){

	return c *(x * x) + 2 * x - d;
}


int main() {

	mt19937 rnd(time(NULL));
	uniform_real_distribution <double> losowa(2.00, 8.99); // przedzial losowanej cyfry
	c = losowa(rnd);
	cout << "Wylosowane c : " << c << endl;
	cout << "Wprowadz d [liczba rzeczywista z zakresu 5.00 -> 14.99]: ";
	cin >> d;

	while (d > 14.99 || d < 5.00) {

		cout << "Pozostalo " << attempts << " prob, wprowadz cyfre jeszcze raz: ";
		cin >> d;
		attempts--;
		if (attempts == 0) {
			exit(1);
		}
	}

	while (abs(b - a) >= eps) {
		x1 = (a + b) / 2;
		if (f(x1) == 0.0) break;
		else if (f(x1) * f(a) <= 0) b = x1;
		else a = x1;
	}



	cout << "x1: " << x1 << endl;
	//cout << "x2: " << x2 << endl;
	return 0;
}

 

1 odpowiedź

0 głosów
odpowiedź 9 czerwca 2020 przez Wiciorny Ekspert (281,450 p.)
Jakbym swoje studia widział, jutro dam znać. Na razie taktycznie zostawiam, zeby pamiętąc.
Robiłęm tego typu zadanie, nawet w cpp więc postaram się pomóc

Podobne pytania

0 głosów
0 odpowiedzi 1,326 wizyt
pytanie zadane 18 marca 2020 w C i C++ przez Air2000 Początkujący (280 p.)
0 głosów
1 odpowiedź 1,346 wizyt
pytanie zadane 12 grudnia 2017 w Visual Basic przez dawmaz Nowicjusz (150 p.)
0 głosów
1 odpowiedź 1,793 wizyt
pytanie zadane 16 października 2016 w C i C++ przez Jakub Olszak Użytkownik (540 p.)

93,460 zapytań

142,454 odpowiedzi

322,724 komentarzy

62,838 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...