Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Lenigradec
1 / 1 / 0
Регистрация: 02.03.2011
Сообщений: 3
#1

Ряд Тейлора и цикл for - C++

02.03.2011, 19:50. Просмотров 985. Ответов 3
Метки нет (Все метки)

Приветствую. У меня дана задача вычислить значение функции F(x) заданной рядом Тейлора, точность вычислений 10^-6, Х вводится с клавиатуры. Пишу в пиратской "Виндоус Визуал Студия 2010 ПРО - С++"
Вобщем вот что у меня получилось...

module1.cpp ошибка в этом модуле.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include "modules.h"
#include <math.h>
#include <iostream>
#include <stdio.h>
#include <time.h>
#include <conio.h>
#define EPS 1.e-6
 
namespace Modules
{
    void module2 ()
    {           
        fflush (stdin);
        setlocale ( LC_ALL, "Russian" );
        system ("cls");
        time_t d;
        time (&d);
        printf ("%s\n", ctime (&d));
        printf ("________________________________________________________________________________\n");
        float x, y, sum;
        int cx, i, n;
        printf ("Введите x : ");
        cx = scanf ("%f", &x);
        if (cx != 1)
        {
            printf ("Ошибка! Вводите только цифры!\n");
        }
        for (n = 0; fabs (y) > EPS && n < 500; n ++)
        {
            y = (pow ((-1.), n) * pow (x, (2 * n))) / ((n - 1) * n);
            sum += y;
        }
        printf ("\nF (x) = %f\n", sum);
        printf ("\ny = %f\n", y);
        printf ("\nВычисления завершены. Пересчитать? Да - 1 / Нет - 2\n");
        i = getche ();
        switch (i)
        {
            case '1': Modules::module2 (); break;
            case '2': return;
            default: system ("cls"); printf ("Ошибка!\n\n");
        }
    }
}
modules.h тут нету ошибок.
C++
1
2
3
4
5
6
7
8
9
#ifndef modulesH
#define modulesH
 
namespace Modules
{
    void module1 ();
    void module2 ();
}
#endif
kpz13.cpp тут нету ошибок.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include "modules.h"
#include <iostream>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
using namespace Modules;
 
int main (int, char *adress [])
{   
    while (1)
    {
        setlocale ( LC_ALL, "Russian" );
        system ("cls");
        time_t d;
        time (&d);
        printf ("%s\n", ctime (&d)); printf ("%s\n", adress [0]);
        printf ("________________________________________________________________________________\n"
        "Выберите номер задания:\n\n"
        "Задание № 1 (Вычислить Z)\n"
        "Задание № 2 (Вычислить F(x) заданной рядом Тейлора)\n"
        "Задание № 3 (Вычислить 20 значений функции F(x))\n"
        "Задание № 4 (Значения F(x) представить в экспоненциальном  виде)\n"
        "Задание № 5 (Вычисления с массивом)\n"
        "Задание № 6 (Сформировать массив M * N)\n"
        "Завершить работу - 0\n\nВведите номер задания: ");
        int i;
        i = getche ();
        switch (i)
        {
            case '1': Modules::module1 (); break;
            case '2': Modules::module2 (); break;
            case '0': exit (0);
            default: system ("cls"); printf ("Ошибка! Введите номер!\n\n");
        }
    }
    return 0;
}
Вот ошибки которые он мне выдаёт... При построении.
Run-Time Check Failure #3 - The variable 'y' is being used without being initialized.
Run-Time Check Failure #3 - The variable 'sum' is being used without being initialized.
Неправильные ответы "-1.#INFOO" и "-1.#IDFOO"

А это при компиляции module2.cpp...
1>------ Построение начато: проект: Kyrsovik, Конфигурация: Debug Win32 ------
1>Построение начато 02.03.2011 16:27:14.
1>ClCompile:
1> module2.cpp
1>c:\documents and settings\admin\мои документы\visual studio 2010\projects\kyrsovik\kyrsovik\module2.cpp(18): warning C4996: 'ctime': This function or variable may be unsafe. Consider using ctime_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> d:\program files\microsoft visual studio 10.0\vc\include\time.inl(86): см. объявление "ctime"
1>c:\documents and settings\admin\мои документы\visual studio 2010\projects\kyrsovik\kyrsovik\module2.cpp(23): warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> d:\program files\microsoft visual studio 10.0\vc\include\stdio.h(304): см. объявление "scanf"
1>c:\documents and settings\admin\мои документы\visual studio 2010\projects\kyrsovik\kyrsovik\module2.cpp(30): warning C4244: =: преобразование "double" в "float", возможна потеря данных
1>c:\documents and settings\admin\мои документы\visual studio 2010\projects\kyrsovik\kyrsovik\module2.cpp(36): warning C4996: 'getche': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _getche. See online help for details.
1> d:\program files\microsoft visual studio 10.0\vc\include\conio.h(129): см. объявление "getche"
1>c:\documents and settings\admin\мои документы\visual studio 2010\projects\kyrsovik\kyrsovik\module2.cpp(28): warning C4700: использована неинициализированная локальная переменная "y"
1>c:\documents and settings\admin\мои документы\visual studio 2010\projects\kyrsovik\kyrsovik\module2.cpp(31): warning C4700: использована неинициализированная локальная переменная "sum"
1>
1>Построение успешно завершено.
1>
1>Затраченное время: 00:00:01.03
========== Построение: успешно: 1, с ошибками: 0, без изменений: 0, пропущено: 0 ==========
Половина ерунда, но проблемы с инициализацией...
Помогите добиться правильного вычисления плс. И что это за ошибки как их предотвратить в будущем.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.03.2011, 19:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ряд Тейлора и цикл for (C++):

Разложение экспоненты в ряд тейлора. Цикл в цикле - C++
Здравствуйте. Сама задача: составить программу для вычисления множества значений функции exp x на интервале −40,1 с шагом 0.5 не...

Вычисление приближенного значения tan(x) через ряд Тейлора/ряд Маклорена - C++
Привет, CF. Задача: Вычисление приближенного значения tan(x) через ряд Тейлора/ряд Маклорена Проблема: не совпадают результаты...

вычислить функцию с помощью разложения в ряд.(Ряд Тейлора) - C++
Нужно написать программу по Ряду Тейлора.

Вычисление функции через разложение в ряд (Ряд Тейлора) - C++
Привет всем. Задание такого плана: Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора,...

Разложение ряд в ряд Тейлора.Переделать программу - C++
Написать программу вычисления и вывода на экран в виде таблицы значений функции, заданной с помощью ряда Тейлора, на интервале от Хзнач до...

Ряд Тейлора - C++
Здравствуйте,помогите пожалйста разобраться.Мне нужно вычислить с помощью ряда Тейлора. в точке x=0.3 а e&lt;=0.001.(принимаем...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Lenigradec
1 / 1 / 0
Регистрация: 02.03.2011
Сообщений: 3
02.03.2011, 21:24  [ТС] #2
http://cs10167.vkontakte.ru/u1344353...y_1a056ed9.jpg
Вот само задание...
0
Миниатюры
Ряд Тейлора и цикл for  
Lenigradec
1 / 1 / 0
Регистрация: 02.03.2011
Сообщений: 3
03.03.2011, 01:06  [ТС] #3
Извиняюсь, там не точное задание) Вот точное.

Ряд Тейлора и цикл for
1
Leningradeс
10 / 10 / 1
Регистрация: 03.03.2011
Сообщений: 334
04.03.2011, 01:01 #4
Нету идей? Тут проблема в цикле for, но я не знаю что тут неправильно... И я плохо понимаю вот такое подключение #define EPS как оно работает. Можно заменить на const float eps = 0.000001;

C++
1
2
3
4
5
6
7
8
9
10
11
float x, y, sum;
int n;
printf ("Введите x : ");
scanf ("%f", &x);
for (n = 0; fabs (y) > EPS && n < 500; n ++)
{
        y = (pow ((-1.), n) * pow (x, (2 * n))) / ((n - 1) * n);
        sum += y;
}
printf ("\nF (x) = %f\n", sum);
printf ("\ny = %f\n", y);
Как мне вот этот цикл написать правильно?

Добавлено через 7 часов 52 минуты
Может что то не понятно? Совсем помочь не кто не может?

Добавлено через 50 минут
Ну я вроде разобрался с инициализацией... И факториал прикрутил... Инициализируем:
C++
1
float y = 0; //тип переменная присвоение нуль;
Но теперь результат вычислений тоже стал 0.000000...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include "modules.h"
#include <math.h>
#include <iostream>
#include <stdio.h>
#include <time.h>
#include <conio.h>
//#define EPS 1.e-6
 
namespace Modules
{
    int fact (int n)
    {
        int result = 1;
        for (int i = n; i >= 1; i --)
        {
            result *= i;
        }
        return result;
    }
    void module2 ()
    {           
        fflush (stdin);
        setlocale ( LC_ALL, "Russian" );
        system ("cls");
        time_t d;
        time (&d);
        printf ("%s\n", ctime (&d));
        printf ("________________________________________________________________________________\n");
        float x, y = 0, sum = 0, eps = 0.00001;
        int cx, i, n;
        printf ("Введите x : ");
        cx = scanf ("%f", &x);
        if (cx != 1)
        {
            printf ("Ошибка! Вводите только цифры!\n");
        }
        for (n = 0; fabs (y) > eps && n < 500; n ++)
        {
            y = (pow ((-1.), n) * pow (x, (2 * n))) / fact (n);
            sum += y;
        }
        printf ("\nF (x) = %f\n", sum);
        printf ("\ny = %f\n", y);
        printf ("\nВычисления завершены. Пересчитать? Да - 1 / Нет - 2\n");
        i = getche ();
        switch (i)
        {
            case '1': Modules::module2 (); break;
            case '2': return;
            default: system ("cls"); printf ("Ошибка!\n\n");
        }
    }
}
Засада какая то...
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.03.2011, 01:01
Привет! Вот еще темы с ответами:

Ряд тейлора - C++
Здравствуйте. Значения просчитанные по рекуррентной формуле и значения функции не сходятся. Задание приложено ниже. Пример входных...

ln - ряд Тейлора - C++
double ln(double x, double eps) { double T,S; int K; T=x; K=1; S=T; do{ K=K+1; T=-T*x/K; S=S+T;

Ряд Тейлора - C++
ряд Тейлора

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
04.03.2011, 01:01
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru