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

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

Войти
Регистрация
Восстановить пароль
 
reidaigo
6 / 6 / 0
Регистрация: 16.12.2012
Сообщений: 31
#1

Простая задача с использованием циклов - C++

03.11.2013, 20:14. Просмотров 456. Ответов 10
Метки нет (Все метки)

Здраствуйте. Не могу понять в чем суть задачи и как эту суть записать на с++. Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора, на интервале от XНАЧ до xкон с шагом dx с точностью ε. Каждая строка таблицы должна содержать значение аргумента, значение функции и количество про-суммированных членов ряда. ln((x+1)/(x-1))= 2*Ʃ1/((2n+1)*x^(2*n+1)). (от n=0 до бесконечности)
Сделал небольшую заготовку, выполняется, но, конечно, неверно. Может быть пригодиться тому, кто мне поможет. Спасибо за внимание!
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
// laba3_new_new.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <iomanip>
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"");
    double x_na4, x_kon, shag, eps;
    cout << "Введите X нач"; cin >> x_na4;
    cout << "Введите X кон"; cin >> x_kon;
    cout << "Введите шаг"; cin >> shag;
    cout << "Введите точность"; cin >> eps;
    cout << "------------------------------------"<<endl;
    cout <<"| x | Sum | N |"<< endl;
    cout <<"------------------------------------"<<endl;
    
    double x=x_na4, sum=x_na4;
    for (int n=1;log((x+1)/(x+2))>eps, x<=x_kon;n++,x+=x_na4){
        sum+=1/(2*n+1)*pow(x,2*n+1);
        cout<< "| "<< setw(10) << x << " | " << setw(10) << setprecision(3) << sum << " | " << setw(6) << n << " |" <<endl;
        }
 
    system("pause");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.11.2013, 20:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Простая задача с использованием циклов (C++):

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

Написание многомодульных программ с использованием циклов - C++
Люди,кто-нибудь знает как решить эту задачу? если да,то напишите пожалуйста. Составить функцию, которая, получив целое число,...

Программирование разветвлений и циклов с использованием операторов - C++
Нужно создать программный код: y={█(b√(├|a+├ x┤|┤ ),x&lt;1. @In |bx+├ a^3 ┤|┤,1≤x≤5 @(b-x)tg(a+x), x&gt;5)┤ z=〖ay〗^2+b cosy Определить: Sz -...

Составить и отладить программу с использованием вложенных циклов - C++
Вычислить функцию f(x,a)=ln(3x)+\sqrt{\frac{a^3}{2x}} при x=0.3,0.4,...,0.9 и a=2,3,...,6 с точностью 4 знаков после десятичной точки ...

№2 Написать программу, вычисляющую выражение с использованием циклов - C++
Написать программу, вычисляющую выражение с использованием циклов. Программа, которая: a. запрашивает какую из приведенных в...

Приближенное значение функции с использованием разных циклов - C++
Вычислить приближенное значение функции, вычислив сумму конечного числа элементов ряда двумя способами, используя разные типы циклов: ...

10
Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
03.11.2013, 20:23 #2
reidaigo,

Не по теме:

посмотрел на формулу и по моему с простой задачей вы погорячились)

0
zss
Модератор
Эксперт С++
6530 / 6092 / 2007
Регистрация: 18.12.2011
Сообщений: 15,843
Завершенные тесты: 1
03.11.2013, 20:36 #3
Заменить с 22-й строчки
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
...
int n;
for (x=x_na4;x<=x_kon;x+=shag)
{
       double sum,an;
       an=x;
       sum=an;
       n=0;
       while(fabs(an)>eps)
       {
                an*=x*x*(2*n+1)/(2*n+3);
                sum+=an;
                n++;
       }
        cout<< "| "<< setw(10) << x << " | " << setw(10) << setprecision(3) << sum << " | " << setw(6) << n << " |" <<endl;
}
1
reidaigo
6 / 6 / 0
Регистрация: 16.12.2012
Сообщений: 31
03.11.2013, 20:48  [ТС] #4
zss, спасибо!! Но не совсем понимаю, суть этой строки
C++
1
an*=x*x*(2*n+1)/(2*n+3);
Не могли бы разъяснить, откуда берется это выражение, ведь формула числового ряда иная.
И где вычисляется ln((x+1)/(x-1))?
0
zss
Модератор
Эксперт С++
6530 / 6092 / 2007
Регистрация: 18.12.2011
Сообщений: 15,843
Завершенные тесты: 1
03.11.2013, 21:04 #5
Это рекуррентное соотношение вычисление n+1-го члена через n-ый.
a0=x,a1=a0*x*x*1/3,a2=a1*x*x*3/5 и т.д.

Сумма как раз и должна дать нужный логарифм.
Для сравнения можете вывести библиотечное значение
вычислив
C++
1
double y2=log((x+1.)/(x-1.));
Добавлено через 6 минут
Кстати, забыл двойку перед знаком суммы,
Т.е. sum надо после завершения цикла умножить на 2.
1
reidaigo
6 / 6 / 0
Регистрация: 16.12.2012
Сообщений: 31
03.11.2013, 21:56  [ТС] #6
zss, спасибо за объяснение! Но.. я извиняюсь, но вывод работает неправильно. Вводил значения: x_na4 = 2, x_kon=4, shag=0.2, eps=2.7. Выбивает множество значений x=2, sum=2, n=0.
0
zss
Модератор
Эксперт С++
6530 / 6092 / 2007
Регистрация: 18.12.2011
Сообщений: 15,843
Завершенные тесты: 1
03.11.2013, 22:48 #7
Это разложение подходит для -1<x<1 и на самом деле считает ln((1+x)/(1-x)):
C++
1
       double y2=log((1.+x)/(1.-x));
1
reidaigo
6 / 6 / 0
Регистрация: 16.12.2012
Сообщений: 31
03.11.2013, 23:24  [ТС] #8
zss, когда ввожу диапазон -1<x<1, шаг 0.2, eps(точность) 2.7, выбивает во всех переменных нули, много нулей.. не понимаю, объясните пожалуйста
0
zss
Модератор
Эксперт С++
6530 / 6092 / 2007
Регистрация: 18.12.2011
Сообщений: 15,843
Завершенные тесты: 1
04.11.2013, 11:12 #9
Как может быть точность 2.7?
Точность - это очень маленькое число, с которым сравнивается
очередное значение члена ряда.
Вводите, например, 1.0e-7
1
reidaigo
6 / 6 / 0
Регистрация: 16.12.2012
Сообщений: 31
04.11.2013, 12:05  [ТС] #10
zss, при вводе Вашей точности всё тоже самое - нули во всех переменных, много нулей..

Хотя успел оставить цикл в самом начале и увидеть, что первая строка -1 -2 1. А дальше всё в нули в бесконечный цикл.
0
zss
Модератор
Эксперт С++
6530 / 6092 / 2007
Регистрация: 18.12.2011
Сообщений: 15,843
Завершенные тесты: 1
04.11.2013, 21:17 #11
См. пример.
Все тик в тик!
0
04.11.2013, 21:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.11.2013, 21:17
Привет! Вот еще темы с ответами:

№3 Написать программу, вычисляющую выражение с использованием циклов - C++
Написать программу, вычисляющую выражение с использованием циклов. Программа, которая: a. запрашивает какую из приведенных в...

№1 Написать программу, вычисляющую выражение с использованием циклов - C++
Написать программу, вычисляющую выражение с использованием циклов. Программа, которая: a. запрашивает какую из приведенных в...

Простая сортировка выбором с использованием указателей - C++
Всем доброго времени суток! Прошу участников форума подсказать как доработать программу, чтобы ее работа была корректной. Нужно...

Простая прога с использованием union и классов - C++
В чем не правильный мод код. Хочу вывести имя, а выводит любой символ или мусор... #include &lt;iostream&gt; using namespace std; class...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

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