0 / 0 / 0
Регистрация: 11.10.2019
Сообщений: 7
1

Написать программу для нахождения значения функции y(x) и s(x)

11.10.2019, 03:42. Показов 1113. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Суть задания такова:
Для каждого x, изменяющегося от a до b с шагом h, найти значения функции Y(x), суммы S(x) и |Y(x)–S(x)| и вывести в виде таблицы. Значения a, b, h и n вводятся с клавиатуры. Так как значение S(x) является рядом разложения функции Y(x), при правильном решении значения S и Y для заданного аргумента x (для тестовых значений исходных данных) должны совпадать в целой части и в первых двух-четырех позициях после десятичной точки.
Работу программы проверить для a = 0,1; b = 1,0; h = 0,1; значение параметра n выбрать в зависимости от задания.
Σ=cos(kx)/k!; Y(x)=e^cos(x)*sin(cos(x)).
Проблема заключается в том, что у меня не получаются одинаковыми значения y(x) и s(x). Подозреваю что дело в неправильно полученной рекуррентной формуле. Прилагаю код:
double In(const char* t)
{
double x;
cout << t;
while (!(cin >> x) || cin.get() != '\n') {
cin.clear();
cout << "Error" << endl;
while (cin.get() != '\n');
}
return x;
}
int main()
{
setlocale(LC_ALL, "Russian");
double a, b, h, n, s, k, x, y, f, c;
cout << "1 - ввести любые данные. Любая клавиша - данные по умолчанию" << endl;
if (_getch() == '1')
{
a = In("Введите a = ");
do {
b = In("Введите b = ");
} while (b <= a);
do {
h = In("Введите h = ");
} while (h <= 0);
do {
n = In("Введите n = ");
} while (n <= 0);
}
else {
a = 0.1;
b = 1;
h = 0.1;
n = 2;
cout << "Значение по умолчанию:" << endl << "a = " << a << endl << "b = " << b << endl << "h = " << h << endl << "n = " << n << endl << endl;
}
cout << "Значение Y(x)" << setw(20) << "Значение S(x)" << setw(20) << "|Y(x)-S(x)|" << endl;
for (x = a; x <= b; x += h) {
y = exp(cos(x)) * cos(sin(x));
for (s = 1, k = 0; k <= n; k++) {
for (f = 1, c = 1; c <= k; c++) {
f *= c;
s += cos(k * x) / f;
}
}
cout << y << setw(20) << s << setw(26) << fabs(y - s) << endl;
}
return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.10.2019, 03:42
Ответы с готовыми решениями:

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

Написать программу нахождения наибольшего и наименьшего значения функции
Написать программу нахождения наибольшего и наименьшего значения функции y=3x*x+x-4 на интервале c...

Написать программу с использованием функции нахождения минимального значения элемента в одномерном массиве
Написать программу с использованием функции нахождения минимального значения элемента в одномерном...

Написать программу для нахождения значения переменной S по формуле
5. Написать программу для нахождения значения переменной S по формуле: S=1*1*1+2*2*2+...+n*n*n

1
7430 / 5022 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
11.10.2019, 14:01 2
explorerbeep, несколько отличается то что в условии:
Цитата Сообщение от explorerbeep Посмотреть сообщение
Y(x)=e^cos(x)*sin(cos(x)).
и то что в коде:
Цитата Сообщение от explorerbeep Посмотреть сообщение
y = exp(cos(x)) * cos(sin(x));
похоже ещё -1 потерялась: Y=exp(cos(x))*cos(sin(x))-1;
двойной цикл для вычисления суммы не нужен, одного вполне достаточно
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
#define _USE_MATH_DEFINES
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
 
int main()
{    
    int n=100;    
    double a=0.1, b=1.0, h=0.1, p, S, Y;       
    
    cout <<" x      Y(x)       S(x)    |Y(x)-S(x)|\n";
    for (double x=a; x<=b+h/2.; x+=h)
    {
        p=1.0;
        S=0.0;
        for (int k=1; k<=n; k++) 
        {
           p*=k;           
           S+=cos(k*x)/p;
        }  
        Y=exp(cos(x))*cos(sin(x))-1;
    cout <<setprecision(1)<<fixed<<x<<"   "<<setprecision(6)<<Y<<"   "<<S<<"   "<<fabs(Y-S)<<"\n";
    }   
    
system("pause");
return 0;
}
1
11.10.2019, 14:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.10.2019, 14:01
Помогаю со студенческими работами здесь

Написать программу для нахождения значения переменной S по формуле
3. Написать программу для нахождения значения переменной S по формуле: S=ln1+ln2+...+ln n

Написать программу для нахождения значения переменной S по формуле
Написать программу для нахождения значения переменной S по формуле: S=1+2+...+n

Составить программу для нахождения значения функции
Составить программу для нахождения значения функции: y=\frac{\operatorname{avg}...

Составить программу для нахождения наименьшего значения функции
не могу доделать вот эту прогу. Вот дано: Составить программу для нахождения наименьшего значения...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru