Iteracyjne metody znajdowania miejsc zerowych funkcji
$$f(x) = 0 $$
Problemy:
Miejsca zerowe funkcji $f(x) = x^2 - 1$
Sprawdź przedziały izolacji: $[0, 1.5]$, $[2, 3]$.
Jaki jest problem z drugim przedziałem?
Czy proces jest zawsze zbieżny?
#include<stdio.h>
#include<math.h>
float f(float x)
{
return (x*x)-1;
}
int main()
{
float a, b, x0, eps;
int i;
printf("Podaj przedzial izolacji:");
scanf("%f%f", &a, &b);
eps = 1e-6;
i=0;
while(fabs(a-b)>eps)
{
i++;
x0 = (a+b)/2;
printf("%f %f %f\n", a, b, b-a);
if (fabs(f(x0)) < eps) break;
if(f(a)*f(x0) < 0) b=x0;
else a=x0;
}
printf("x0 = %f\niterations %d\n", x0, i);
printf("f(%g)=%g\n", x0, f(x0));
return 0;
}
Dla dwóch wartości początkowych $x_0$ i $x_1$ kolejne przybliżenie za pomocą linii prostej (siecznej)
$$x_{n+1}=x_{n}-f\left(x_{n}\right)\left(\frac{x_{n}-x_{n-1}}{f\left(x_{n}\right)-f\left(x_{n-1}\right)}\right)$$
Zaimplementuj program znajdujący rozwiązanie równania postaci
$$x = \sin{x} + \frac{1}{4}$$
za pomocą metod bisekcji oraz siecznych
Program wczytuje wartości początkowe $a$ i $b$ po czym wypisuje dla każdej z metod:
Ćw. 1
Napisz program znajdujący pierwiastki rzeczywiste jednego z poniższych równań z dokładnością $\epsilon=1\cdot10^{-6}$
Ćw. 2 Rozwiąż zadanie z zajęć używając metody Regula falsi, która jest modyfikacją metody siecznych polegająca na tym, że jeden punktów $a$ lub $b$ jest stały.
Jakie warunki musi spełniać funkcja na odcinku $[a, b]$ aby ta metoda znalazła pierwiastek.