Problem z napisaniem programu matematycznego (metoda Newtona)

0

Witam mam problem z napisaniem kodu na zajęcia. Wrzucę zrzut ekranu bo nawet za bardzo nie wiem co trzeba zrobić (domyślam się, że wyswietlić x0)
screenshot-20201025173904.png
Na razie mój kod wygląda następująco:

double f(double x1)
{
    return (3 * x1 + sin(x1) - exp(x1));
}
double fp(double x1)
{
    return (3 + cos(x1) - exp(x1));
}
void Zadanie2()
{
    
    double x0 = 0;
    double x1 = x0;
    double eps = 1.0e-7;
    do
    {
        x0 = x0 - f(x0) / fp(x0);
    } while (abs(x1 - x0) > eps);
    cout << setprecision(10);
    cout << "x0 = " << x0;
}

I w sumie nie wiem do końca co tu trzeba poprawić, ponieważ nawet na kartce nie potrafię tego policzyć. Stąd moja prośba o pomoc.
PS. Taki miał być warunek w pętli bo nam podawał.

Nie zauważyłam, że zrzut ekranu zrobić zrzut z dwóch ekranów od razu :D

0

Obejrzyj sobie ten film:

to zrozumiesz o co chodzi w metodzie Newtona, i stanie się naturalne co tam trzeba wpisać (jak już przeliczysz co trzeba na papierze)

0

Spróbuj wykonać chociaż ten algorytm: zrobić, żeby iteracja działała, czyli podstawiać, w pętli, starą wartość do nowej:

#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
double f(double x1)
{
    return (3 * x1 + sin(x1) - exp(x1));
}
double fp(double x1)
{
    return (3 + cos(x1) - exp(x1));
}
void Zadanie2()
{

    double x0 = 0;
    double x1 = x0;
    double eps = 1.0e-7;
    do
    {
        x1 = x0 - f(x0) / fp(x0);
        x0 = x1;
    } while (abs(x1 - x0) > eps);
    cout << setprecision(10);
    cout << "x1 = " << x1<<"\n";
}
int main() {
  Zadanie2();
}

Nie sprawdzałem, więc potestuj dokładnie.

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