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] #include "stdafx.h" #include "stdio.h" #include "math.h" #include <fstream>
double funkcja( double a, double k ) { return(( pow( - 1, k ) ) * pow( a, 2 * k + 3 ) /(( 2 * k + 1 ) *( 2 * k + 3 ) ) ); } int main()
{ double y, suma = 0, e = 0.0001, k; double a = 0, b = 1, h = 0.1; FILE * plik; plik = fopen( "zadanie1.txt", "w" ); for( a; a <( b + h ); a += h ) { k = 0; suma = 0; do { y = funkcja( a, k ); k++; suma = suma + y; } while( fabs( y ) > e ); printf( "x: %f y: %f\n", a, suma ); fprintf( plik, "%f \t %f\n", a, suma ); } fclose( plik ); return 0; }
|
|
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... y = funkcja( a, k ); k++; suma = suma + y;
Powinno pomóc zmiana następująca: k++; y = funkcja( a, k ); suma = suma + y;
|
|
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. |
|
« 1 » |