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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.11.2009, 08:41   #1
nika_tanya
 
Регистрация: 17.11.2009
Сообщений: 3
Восклицание что не так?!не могу найти ошибку!

Задача такая:

Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора, на интервале от хнач до хкон с шагом dx с точностью е.

e^(x^2)=сумма(x^2/n!),сумма от 0 до бесконечности.

Ошибка в том что я когда считаю по членно до в сумме появляется лишняя единица,не пойму откуда,уже по разному проверяла,никак(
Код:
#include "stdafx.h"
#include <iostream>
#include <cmath>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <conio.h>
using namespace std;

int main()
   {


   int i;
   int xn=0, xk=1;
   double x;
   long double e;
   double dx;
   long double summa=0,t=0;
   long double s2=0;
   int faktor=1;

   printf("Введите dx=");
   scanf("%lf",&dx);
   printf("Введите  e=");
   scanf("%lf",&eps);
   summa=1;
   i=1;
   for(x=dx;x<=xk;x+=dx)
     {

           while(fabs(summa-t)>=eps)
              {
                s2=0;
                t=summa;
                s2=pow(x,2*i)/faktor;
           // 1 // printf("\n %f %i ",s2,i);
                    faktor=faktor*i;
                    summa=summa + s2;
         // 2 //printf("\n %f %i ",summa,i);
                  i++;
                }

      getche();
      return 0;

      }
Где стоит 1 там нормально распечатывает по членно подсчитанный ряд,а когда уже идет операция суммирования появляется лишняя единица.
dx ввожу равной 1 и e=0.01
так проще вручную посчитать,xk=1 , поэтому первый цикл пробегает один раз.

Summa начинается с 1 так как первое значение функции при i=0 ,будет 1,поэтому и i начинается тоже с 1,просто в цикле while
надо было ограничить чилом E.

Последний раз редактировалось nika_tanya; 26.11.2009 в 08:46.
nika_tanya вне форума Ответить с цитированием
Старый 26.11.2009, 09:17   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
scanf("%lf",&eps);
Я не понял. как эта прога вообще запускается, если eps нет в списке переменных?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.11.2009, 09:27   #3
nika_tanya
 
Регистрация: 17.11.2009
Сообщений: 3
По умолчанию

извиняюсь там e,не успела поправить,она запускается нормально.
не там ошибка,в вычислениях где-то.

я чуть чуть изменила цикл,просто у меня там есть еще (-1)^n
Код:
for(x=dx;x<=xk;x+=dx)
    {
		        summa=1;
                for(i=1; (s1)>=eps || (s1)<=-eps ;i++)
				 {  
					s2=0;
					if(i%2>0)
					    {
							s2 = -pow(x,2*i)/faktor;
					                s1=s2;
                                                        summa-= s2;
					       
					    }
					else
					    {
					               s2 =pow(x,2*i)/faktor;
					               s1=s2;
					               summa+= s2;
							
		                   
				     	}
					printf("\n %f  %i  %i",s2,i,faktor);
					faktor=faktor*i;  
				 }
И все равно видно что при i=2 faktor=1,как так не пойму,отсюда естественно лишняя единица,но почему факториал при 2-ой интерации равен 1,не понятно

Последний раз редактировалось Stilet; 26.11.2009 в 10:07.
nika_tanya вне форума Ответить с цитированием
Старый 26.11.2009, 10:08   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

К сожалению не могу проверить так как у меня падает на первом же pow...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.11.2009, 11:34   #5
nika_tanya
 
Регистрация: 17.11.2009
Сообщений: 3
По умолчанию

я нашла ошибку,все получилось.
nika_tanya вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С++. не могу найти ошибку world12_tk Помощь студентам 3 25.07.2009 10:47
Не могу найти ошибку(С++) Yura_n Помощь студентам 8 20.01.2009 12:36
Не могу найти ошибку. Picaso18 Паскаль, Turbo Pascal, PascalABC.NET 3 19.01.2009 17:05
Не могу найти ошибку! Эдуард Общие вопросы C/C++ 7 27.02.2008 16:34