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

złe zliczanie szeregu w kodzie

Ostatnio zmodyfikowano 2014-01-11 23:55
Autor Wiadomość
djmietek
Temat założony przez niniejszego użytkownika
złe zliczanie szeregu w kodzie
» 2014-01-11 19:33:55
Mam obliczyć sume dla a=(0,1  0,2  0,3  ....  1,0) i k=1,2,3... aż do momentu gdy y osiągnie błąd. Problem polega na tym, że program liczy i wychodzą wartości niezgodne z tym co liczę na papierze. Oprócz dodatnich powinny tez ujemne wyniki wychodzić. Coś źle liczy ale nie wiem gdzie. Ma ktoś pomysł?

Szereg-   ((pow(-1,k))*pow(a,2*k+3)/((2*k+1)*(2*k+3)))   
błąd -    0.0001
krok -    0.1
odcinek-  [0, 1]


C/C++
#include "stdafx.h"
#include "stdio.h"
#include "math.h"
#include <fstream>

double funkcja( double a, double k ) //funkcja
{
    return(( pow( - 1, k ) ) * pow( a, 2 * k + 3 ) /(( 2 * k + 1 ) *( 2 * k + 3 ) ) );
   
}
int main()

{
    double //deklaracja zmiennych
    y,
    suma = 0,
    e = 0.0001,
    k;
    double
    a = 0,
    b = 1,
    h = 0.1;
   
    FILE * plik; //tworzenie pliku
    plik = fopen( "zadanie1.txt", "w" );
   
    for( a; a <( b + h ); a += h ) //warunki zgodnie z treścią zadania
    {
        k = 0;
        suma = 0;
        do // obliczanie sumy
        {
            y = funkcja( a, k );
            k++;
            suma = suma + y;
           
           
        }
        while( fabs( y ) > e );
       
        printf( "x: %f y: %f\n", a, suma ); //pokazanie rozwiązań
       
        fprintf( plik, "%f \t %f\n", a, suma ); //zapisanie rozwiazań do pliku
    }
   
    fclose( plik );
   
    return 0;
}
P-101881
docentpp
» 2014-01-11 23:05:59
Żle zainicjowałes zmienną k.
Ona powinna przyjmować wartości k=1,2,3,4,5.....
Wg tego kodu ma wartości k=0,1,2,3,4...
C/C++
y = funkcja( a, k );
k++;
suma = suma + y;

Powinno pomóc zmiana następująca:


C/C++
k++;
y = funkcja( a, k );
suma = suma + y;
P-101893
djmietek
Temat założony przez niniejszego użytkownika
» 2014-01-11 23:55:16
Dzięki za uwagi ale  to nic nie pomogło bo błąd popełniłem w tym poście. Miało być k=0,1,2,3.... Według profesora źle  obliczam sume. Nie wiem dlaczego ale jeżeli zmienię wartość e na np: 1
e = 1
,to łatwo zobaczyć , że wynik będzie mniejszy niż jeden, ale program go jednak liczy.
P-101897
« 1 »
  Strona 1 z 1