Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Przybliżona wartość pierwiastka

Ostatnio zmodyfikowano 2013-10-20 21:24
Autor Wiadomość
koma913
Temat założony przez niniejszego użytkownika
Przybliżona wartość pierwiastka
» 2013-10-20 00:01:33
Witam, mam mały problem, z racji że jestem bardzo początkującym nie wiem co jest jego przyczyną. Do szkoły musze napisać program  obliczający przybliżoną wartość pierwiastka. Do tej pory napisałem to:

C/C++
#include <iostream>
#include <conio.h>

using namespace std;



int Suma( int nLiczba )
{
    float Eps; //dokładność obliczeń
    int liter; //liczba iteracji
    int Maxiter; //maksymalna liczna iteracji
    float n; //stopien pierwiastka
    float xp; //x'
    float x; //poczatkowe przyblizenie
    unsigned int a; //liczba podpierwiastkowa
    cout << "Liczba podpierwiastkowa: " << a << endl;
    cin >> a;
    cout << "Stopień pierwiastka: " << n << endl;
    cin >> n;
    x = a / 2;
   
   
   
   
   
    liter = 0;
   
    for( int iter = 0; x - xp > Eps; x = xp )
    {
        xp = 1 / n *( n - 1 ) * x + a / x ^( n - 1 );
       
        if( iter =!Maxiter )
        {
            liter++;
           
        }
        else cout << "Przybliżona wartośc pierwiastka to: " << xp << " obliczona przez wykonanie " << liter << "iteracji" << endl;
       
    }
   
    getch();
}

Wyskakuje mi taki błąd:
1>c:\users\marcin\documents\visual studio 2010\projects\pierwiastek\pierwiastek\pierwiastek.cpp(31): error C2296: '^' : illegal, left operand has type 'float'

Mógłby ktoś coś doradzić?
P-94078
dambo
» 2013-10-20 00:04:32
Zmienna "n" jest floatem i nie możesz podnosić do takiej potęgi, spróbuj zmienić na int, ale kilka rzeczy mi tu nie pasuje w tym algorytmie, rozumiem, że to algorytm Newtona, tak ?
P-94079
koma913
Temat założony przez niniejszego użytkownika
» 2013-10-20 00:24:31
Nic nie pomaga.
Mam zamiar własnie algorytm Newtona napisać, ale nie wiem czy w dobrym kierunku ide.
P-94083
Mrovqa
» 2013-10-20 00:35:27
Operator '^' to nie jest potęgowanie, tylko xorowanie. Ponadto - jakbyś chciał napisać najprostszą funkcję do liczenia potęgi to byś miał n iteracji (dla n-tej potęgi).
P-94085
koma913
Temat założony przez niniejszego użytkownika
» 2013-10-20 00:51:21
To w sumie nie ma być najprostsza funkcja. Ma być jeszcze z góry zakładana dokładność obliczania np. do 0.00001.
A informacje o liczbie pierwiastkowanej, stopniu pierwiastka i dokładności mają byc pobrane z pliku, a potem wynik i liczba iteracji ma być zapisana do drugiego pliku, tylko narazie chciałem zrobić program bez działania na plikach.
P-94087
Mrovqa
» 2013-10-20 01:13:06
To w sumie nie ma być najprostsza funkcja. Ma być jeszcze z góry zakładana dokładność obliczania np. do 0.00001.
Poczytaj o algorytmie szybkiego potęgowania. Co do dokładności to zależy od wielkości danych wejściowych - poczytaj o kodowaniu liczb zmiennoprzecinkowych.
P-94090
dambo
» 2013-10-20 01:35:50
miałem podobne zadanie na studiach więc mogę Ci pomóc.
Myślę, że ta podpowiedź Ci się przyda - algorytmie Newtona musisz obliczać wartość funkcji oraz jej pochodną i tu dużo osób ma problem, bo nie wie jak zaimplementować pochodną, a to żaden problem - robimy sobie do tego prostą funkcje i tam ją implementujemy tzn mamy obliczyć pochodna z x^5 to robimy funkcje
C/C++
float pochodna( float x )
{
    return( 5 * x * x * x * x );
}

poczytaj jeszcze o sprawdzaniu dokładności w tym algorytmie, bo są tam chyba 3 kryteria.
P-94092
koma913
Temat założony przez niniejszego użytkownika
» 2013-10-20 01:55:47
ok, dzięki.
P-94093
« 1 » 2
  Strona 1 z 2 Następna strona