annatroll
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору [more] Помогите, пожалуйста! Нужно вывести на экран таблицу значений функции у(х) и ее разложения в ряд s(х) с точностью до eps. Вывести число итераций, необходимое для достижения заданной точности. Вычисление s(х) и у(х) оформить в виде функций. Код я написала, но, должно быть, не правильно вывела формулу суммы, поэтому значения у(х) и s(x) не совпадают. Объясните, пожалуйста, в чем моя ошибка) a b s(x) eps y(x) до бесконечности -2.5 1.3 сумма sin(2k-1)*x/(2k-1) 10^(-4) Пи*signx/4 k=1 #include <iostream.h> #include <math.h> #include <iomanip.h> typedef double (*uf)(double, double, int &); void tabl(double, double, double, double, uf); double y(double, double, int &); double s(double, double, int &); int main() { double a, b, h, eps; cout <<"Vvedite a="; cin>>a; cout <<"Vvedite b="; cin>>b; cout <<"Vvedite h="; cin>>h; cout <<"Vvedite eps="; cin>>eps; cout << setw(8) <<"x"<<setw(15)<<"y(x)"<<setw(10)<<"k" << endl; tabl(a, b, h, eps, y); cout << endl; cout << setw(8) <<"x"<<setw(15)<<"s(x)"<<setw(10)<<"k" << endl; tabl(a, b, h, eps, s); return 0; } void tabl(double a, double b, double h, double eps, uf fun) { int k = 0; double sum; for(double x = a; x < b + h/2; x+=h) { sum=fun(x, eps, k); cout <<setw(8)<<x<<setw(15)<<sum<<setw(10)<<k <<endl; } } double y(double x, double eps, int &k) { const double Pi=3.14159; if (x>0) return Pi/4; else if (x<0) return -Pi/4; else return 0; } double s(double x, double eps, int &k) { double a, c, sum =0; a=c=x; k=1; while(fabs(c)>eps) { c=sin(2*k-1)/(2*k-1); a*=c; sum+=a; k++; } return sum; } | Всего записей: 1 | Зарегистр. 13-12-2014 | Отправлено: 19:34 13-12-2014 | Исправлено: annatroll, 19:58 13-12-2014 |
|