Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2017, 19:40   #1
alina999
 
Регистрация: 14.04.2017
Сообщений: 4
По умолчанию Ряд Тейлора

Помогите исправить код , уже несколько раз переделывала прогу, все почти получается, не не то, значения не совпадают
Вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) с точностью ε (табл. 8.1). Вывести число итераций, необходимое для достижения заданной точности. Вычисление S(x) и Y(x) оформить в виде функций.

Код:
#include<stdio.h>
#include <iostream>
#include <string>
#include <conio.h>
#include <math.h>
#include <iomanip>
using namespace std;
 
     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()
{
 
 
cout << setw(8) <<"x"<< setw(15) <<"y(x)"<< setw(10) << "k" << endl;
tabl(-0.9,0.9,0.1,0.001,y);
cout << endl;
cout << setw(8) <<"x"<< setw(15) <<"s(x)"<< setw(10) << "k" <<endl ;
tabl(-0.9,0.9,0.1,0.001,s);
return 0;
}
 
void tabl(double a, double b, double h, double eps, uf fun)
{
 
 
 
  int k=0;
  double sum , x;
  for (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)
{
return pow(1+x,1/3);
}
 
double s(double x, double eps, int &k)
{
  double a,c,sum;
 sum=a=c=x;
     k=2;
  while (fabs(c)>eps)
 {
    c = ((3*k-4)/pow(3,k)*(k-1)*k)*pow(x,k);
  a *= -c;
  sum += a;
 k++;
 }
return sum;
}
alina999 вне форума Ответить с цитированием
Старый 02.05.2017, 19:59   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Код:
pow(1+x,1/3);
1/3 = 0, инт на инт есть инт

Код:
  while (fabs(c)>eps)
 {
    c = ((3*k-4)/pow(3,k)*(k-1)*k)*pow(x,k);
У вас c не зависит не от чего, кроме парамтеров функции... условие либо выполнится на втором ветке, либо будет вечный цикл
p51x вне форума Ответить с цитированием
Старый 02.05.2017, 20:24   #3
alina999
 
Регистрация: 14.04.2017
Сообщений: 4
По умолчанию

вот задание
Изображения
Тип файла: jpg фф.JPG (12.7 Кб, 127 просмотров)
alina999 вне форума Ответить с цитированием
Старый 02.05.2017, 20:33   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Ну вы же видите (а если нет, то бегом метод перечитывать и про ряды что-нибудь), что значение ряда в каждой точке (для каждого х) зависит от k через точность. А значить k должно быть внутри функции s, для каждого х инициализироваться 2 заново и в цикле увеличиваться.
p51x вне форума Ответить с цитированием
Старый 03.05.2017, 11:30   #5
alexander13
Форумчанин
 
Аватар для alexander13
 
Регистрация: 07.02.2013
Сообщений: 267
По умолчанию

Зачем создавать одинаковые темы?
Я по-прежнему уверен, что:
1) sum инициализируется неправильно
2) неверно считается факториал
3) вообще ничего не работает так, как надо

Ну, и 1/3 тоже с предыдущей темы тянется.

Upd. Условие цикла тоже неверное
Μολὼν λαβέ
alexander13 вне форума Ответить с цитированием
Старый 05.05.2017, 16:01   #6
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

Поймите, С делает четка, что скажете. Например:

1(целое) / 3(целое) = целое = 0
Нужно писать 1.(точка = дробь) / 3.(точка = дробь) = дробь.
Ну и прочее - все уже рассказали.
alexzk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ряд Тейлора Нариманчик Помощь студентам 2 29.05.2015 19:13
Ряд Тейлора, С++ Marily Помощь студентам 1 12.01.2014 02:44
Ряд Тейлора Diana528 Общие вопросы C/C++ 24 07.09.2013 23:38
Ряд тейлора. boomboom Общие вопросы C/C++ 7 19.04.2013 15:09
вычислить функцию с по-щью разложения в ряд.(Ряд Тейлора) feelstor Помощь студентам 2 26.12.2011 03:44