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

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

Восстановить пароль Регистрация
 
lyubov17
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 7
21.11.2013, 10:09     Ряд Тейлора #1
Помогите, пожалуйста! Формулировка задания и само задание я прикрепила файлами. Задание 16. Сама программа на языке C у меня есть, тоже прикрепила файлом, но я, к сожалению, не разбираюсь в программировании, и вы не могли бы как можно поподробнее объяснить, как работает эта программа, что к чему вообще. Было бы идеально, если бы вообще почти каждая строка программы была бы откомментирована. Кто сможет помочь, огромнейшее человеческое спасибо!!!
Миниатюры
Ряд Тейлора   Ряд Тейлора  
Вложения
Тип файла: txt teilor.txt (1.2 Кб, 19 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2013, 10:09     Ряд Тейлора
Посмотрите здесь:

Ряд Тейлора C++
Ряд Тейлора C++
ряд Тейлора C++
ln - ряд Тейлора C++
C++ Ряд Тейлора
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mickey_smith
7 / 7 / 1
Регистрация: 20.11.2013
Сообщений: 32
21.11.2013, 17:22     Ряд Тейлора #2
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
// подключение библиотек
#include <stdio.h>
#include <math.h>
#include <iostream>
////////////////////////
 
using namespace std; // использовать пространство имен std(нужно для cout и cin)
 
const double eps = 0.0001; // переменная eps является константой типа double с неизменным значением
 
double taylor(double x, int &count) /* это функция возвращающая значение типа double, которая принимает два
                                       аргумента - x, типа double и count(принимает по указателю т.е. по адресу в памяти),типа int */
{
    double elem = (x - 1.0) / (x + 1.0); /* объявит переменную elem и присвоить ей(или инициализировать её)
                                            значение результата выполнения формулы */
    double coeff = (x - 1.0) * (x - 1.0) / ((x + 1.0) * (x + 1.0)); // аналогично см. выше
    double i = 1.0; // аналогично см. выше 
    double sum = 0.0; // аналогично см. выше
    count = 0; // присвоить переменной count значение 0
    while(fabs(elem) > eps) /* цикл до тех пока elem больше eps
                               функция fabs убирает незначимые нули() например:
                                                                      float x = 5,15000;
                                                                      x = fabs(x);
                                                                      после этого x = 5,15 */
    {
        sum += elem / i; // к переменной sum прибавить значение переменной elem деленной на i
        elem *= coeff; // elem = elem * coeff;
        i += 2.0; // i = i + 2.0
        count++; // увеличить count на 1
    }
 
    return 2.0 * sum; // вернуть результат выполнения в main 
}
 
int main() // начало программы (основная функция)
{
    // объявить переменные
    double xbegin;
    double xend;
    double dx;
    //////////////////////
 
    cout << "input xbegin" << endl; // вывод строки на экран
    cin >> xbegin; // запись введенного значения в переменную
    cout << "input xend" << endl; // аналогично см. выше 
    cin >> xend; // аналогично см. выше 
    cout << "input dx" << endl; // аналогично см. выше 
    cin >> dx; // аналогично см. выше 
 
    double xcurr = xbegin; // объявить переменную xcurr и присвоить ей значение переменной xbegin
    int count = 0; // объявить перенную count и присвоить ей 0
    while(xcurr <= xend) // цикл до тех пор, пока xcurr меньше или равен xend
    {
        xcurr += dx; // прибавить к xcurr значение dx
        count++; // увеличить count на 1
    }
 
    double* funcResults = new double[count]; // выделить память для массива funcResults с размерностью count
    int* funcElemCounts = new int[count]; // выделить память для массива funcElemCounts с размерностью count
    xcurr = xbegin; // присвоить xcurr значение переменной xbegin
    cout << "x       ln x        elements count" << endl; // вывести строку на экран
 
    for(int i = 0; i < count; i++) /* цикл до тех пор пока i меньше count 
                                     (каждая итерация(повторение) цикла увеличиват i на 1, изначально i = 0) */
    {
        funcResults[i] = taylor(xcurr, funcElemCounts[i]); /* В фунцию taylor передаются значения.
                                                              Элементу массива funcResults под индексом i
                                                              присвоить возвращаемое функцией taylor значение */
 
        cout << xcurr << "      " << funcResults[i] << "      " << funcElemCounts[i] << endl; /* Вывести на экран
        значения xcurr, funcResults[i], funcElemCounts[i] */
 
        xcurr += dx; // прибавить к переменной xcurr значение переменной dx
    }
 
    return 0; // вернуть значение 0. Типа все ОК
}
Вот как то так)
lyubov17
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 7
21.11.2013, 17:34  [ТС]     Ряд Тейлора #3
Спасибо огромное!!! Всё так подробно, чётко и ясно расписано! Очень помогли!!!))
mickey_smith
7 / 7 / 1
Регистрация: 20.11.2013
Сообщений: 32
21.11.2013, 17:42     Ряд Тейлора #4
Рад что смог помочь) Если что обращайся
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
21.11.2013, 19:32     Ряд Тейлора #5
mickey_smith, капитанские комментарии не нужны! (вроде
C++
1
elem*=coeff;//elem=elem*coeff;
- таким комментом ты не открыл ничего нового любому восьмикласснику, прочитавшему первую главу учебника си: "арифметические операторы"! Это собственно и было книжное определение оператора *= в комменте.
Зато ты забыл пояснить действительно нужную информацию, например, как и почему влияет coeff на elem!
lyubov17
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 7
21.11.2013, 23:01  [ТС]     Ряд Тейлора #6
Kuzia domovenok, а ты бы не мог тогда объяснить, пожалуйста, ту информацию, которую считаешь нужной?
Yandex
Объявления
21.11.2013, 23:01     Ряд Тейлора
Ответ Создать тему
Опции темы

Текущее время: 15:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru