Metoda połowienia w C++. Miejsce zerowe funkcji f(x)=2x^3-x-5.

Metoda połowienia w C++. Wyznaczanie miejsca zerowego funkcji.

Problem:

Napisz program, który metodą połowienia wyznaczy miejsce zerowe funkcji f(x)=2x3-x-5 w przedziale <0, 100> z zadaną dokładnością E
(przykładowo E=0.000001)

Koduj sam, ale film może Ci pomóc zrozumieć ....

W poniższym filmie:

  • logika metody połowienia,
  • założenia dla funkcji,
  • pseudokod,
  • kodowanie w C++,
  • przykłady obliczeń.

Do obejrzenia i przećwiczenia:

Kod w C++

#include <iostream>
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;

double f(double x) {
	return 2*pow(x,3)-x-5;
}

double miejsceZerowe(double E){
	double a=0,//początek przedziału
        b=100,//koniec przedziału
        c;//środek przedziału
	while(fabs(b-a)>E){
		c=(a+b)/2;
		if(f(c)>0) b=c; 
		else a=c;
	}
	return c;
}

int main() {
	double eps, x;
	cout << "podaj dokladnosc obliczen: "; cin >> eps;
	x=miejsceZerowe(eps);
	cout << "miejsce zerowe: " << fixed << setprecision(10) << x << endl;
	cout << "f(" << x << ")=" << fixed << setprecision(10) << f(x);
	return 0;
}

W powyższym kodzie korzystamy z tego, że f(x) jest rosnąca w otoczeniu miejsca zerowego.

Wykres funkcji f(x)=2x3-x-5 i przykładowy wynik otrzymany w programie:

wykres funkcji metoda połowienia miejsce zerowe metoda połowienia

Użycie kodu:

  • Powyższy kod można wykorzystać w środowisku Dev C++ lub innym. Wystarczy utworzyć nowy projekt i wkleić ten kod zamiast istniejącego.
  • Można też użyć kodu na jednej ze stron WWW z kompilatorami on-line, na przykład na stronie: www.cpp.sh
  • UWAGA: Jeśli powyższy kompilator wyświetli ostrzeżenie: "c may be used uninitialized in this function", to wystarczy na pczątku funkcji przypisać wartość zmiennej c spoza przedziału <0, 100>, np: c=-1.