C++ pierwiastkowanie 3 stopnia z daną dokładnością

0

Witam.
Potrzebuję pomocy przy poprawie w teorii prostego programu, który ma za zadanie: pracować program definiujący funkcję obliczania pierwiastka 3 stopnia z danej liczby z zadaną dokładnością ε.
Jak na razie udało mi się napisać takie coś:

#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;
int main()
{

for(;;)

{

float liczba;
float stopien;

float wynik;

 cout << "Wprowadz liczbe: ";
cin >> liczba;
cout << "Wprowadz stopien pierwiastka: ";
cin >> stopien;

wynik= pow(liczba, 1/stopien);

cout.precision(M_E);
cout<<"Wynik to:"<<wynik<<endl;

}}

Jednak ten program ma 2 błędy:

  1. nie muszę wpisywać stopnia pierwiastka, ma być zawsze ten sam, czyli 3
  2. muszę zdefiniować funkcję pow.

Jako, że to moje pierwsze i chyba ostatnie spotkanie z programowaniem proszę o pomoc.

0
  1. tak to jest jak bierze się czyjś program nie rozumiejąc go
  2. zainteresuj się którąś z metod kolejnych przybliżeń... Tu spoko będzie metoda połowienia przedziału...
0

Dorzucę try grosze, a dokładniej 4 litery - cbrt (http://www.cplusplus.com/reference/cmath/).

0

@Serechiel, chyba źle rozumiesz zadanie. Nie chodzi o wypisanie wyniku z żądaną dokładnością, chodzi o liczenie z żądaną dokładnością. Należy zatem samemu napisać funkcję liczącą (co sugerował już @kaczus). Funkcje biblioteczne pow(liczba, 1.0/3) i cbrt(liczba) są nieodpowiednie.

0

Dzięki, za pomoc, ale nadal nie wiem czy dam radę go zrobić, w końcu jestem na budownictwie, a informatyki "porządnej" już kilka lat nie miałem ;)

0

Metoda bisekcji(na przyklad) to to czego Szukasz: https://pl.m.wikipedia.org/wiki/Metoda_równego_podziału
Wystarczy przepisac algorytm.

0

To będzie tak:
Chcemy policzyć pierwiastek trzeciego stopnia z 8 więc
f(x) = x^3 – 8 – szukamy miejsca zerowego tej funkcji więc korzystając z metody Newtona mamy
f’(x) = 3*(x^2) – pochodna naszej funkcji f(x).

niech x0=100
xn = x0 – f(x)/f’(x)

66,6669333333
44,4452222174
29,6314980977
19,7573691821
13,1784108671
8,800961991
5,9017357282
4,0110517707
2,8397840025
2,223861863
2,021778591
2,0002337565
2,0000000273
2

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