Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 14.05.2018
Сообщений: 214
1

Комбинированный метод хорд и касательных

01.11.2019, 14:44. Показов 267. Ответов 0

Author24 — интернет-сервис помощи студентам
Помогите, пожалуйста! Комбинированный метод хорд и касательных
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 <iostream>
#include <cmath>
#include<iomanip>
#include<conio.h>
# define M_PI           3.14159265358979323846  /* pi */
# define M_E            2.7182818284590452354
using namespace std;
int k = 0;
 
float f(float x) //заданная нам функция
{
    float y;
    y = (-sin(x))-sqrt(2*M_PI*x)+10*pow(M_E,(-pow(x,2)));//pow(x, 3) - 3 * pow(x, 2) - 17 * x + 22;
    return y;
}
 
float f1(float x) { //первая производная
    float z;
    z = (-cos(x))-20*x*pow(M_E,(-pow(x,2)))-(sqrt(M_PI)*sqrt(2)/2*sqrt(x));//3 * pow(x, 2) - 6 * x - 17;
    return z;
}
 
float f2(float x) { //вторая производная
    float u;
    u = (40*pow(x,2)*pow(M_E,(-pow(x,2)))+sin(x)-20*pow(M_E,(-pow(x,2)))+(sqrt(2)*sqrt(M_PI)/4*pow(x,(3/2)))); //6 * x - 6;
    return u;
}
 
float function(float a, float b, float e) {// функция вичислення метода хорд и касательных
    float c;
    do {
             if (f(a) * f2(a) < 0) {//Условие начальной точки для метода хорд
            a = a + (b - a) / (f(a) - f(b))*f(a); //формулы подсчета по методу хорд
            b = b - f(b) / f1(b);
            }
        else if (f(a) * f2(a) > 0) {//Условие начальной точки для метода касательных
            a = a - f(a) / f1(a); //формулы подсчета по методу касательных
            b = b + (b - a) / (f(b) - f(a))*f(b);
            }else{
           cout<<"can't solve\n";
           break;
            }
      k++;
    } while (fabs(b - a) > e);//Построение хорд и касательных продолжается до достижения необходимой точности решения е
    return (a + b) / 2.0;
}
 
int main()
{
    setlocale(LC_ALL, "rus");
    double a, b, e = 0.1, F, pr = 1;
    while (pr != 0) {
        cout << "|" << setw(53) << "Введите начало отрезке a" << "                         |";
        cin >> a;
        cout << endl;
        cout << "|" << setw(53) << "Введите конец отрезка b" << "                         |";
        cin >> b;
        cout << endl;
        if (f(a)*f(b) < 0)//Отрезок на концах которых функция имеет разный знак.
        {
            pr = 0;//находим значение функции от а и b
            cout << setw(40) << "f(a) = " << "f(" << a << ") = " << f(a) << endl;
            cout << setw(40) << "f(b) = " << "f(" << b << ") = " << f(b) << endl;
            cout << endl;
        }
        else cout << setw(75) << "Решений нет, введите другое а и b" << endl;
        cout << endl;
    }
    cout << "РЕЗУЛЬТАТ" << endl;//выводим результат на экран 
        cout << function(a, b, e) << endl;
        cout << "количество итераций: " << k << endl;
        cout << "Проверка" << endl;
        F = function(a, b, e);
        printf("%3.9lf", f(F));
        cout << endl;
        return 0;
}
Почему всегда
выводит "Решений нет, введите другое а и b" при различных значениях? Где ошибка?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.11.2019, 14:44
Ответы с готовыми решениями:

Комбинированный метод хорд и касательных.
Помогите найти ошибку!!! Считает только 1 раз, не могу понять почему условие не срабатывает ...

Комбинированный метод хорд и касательных
Друзья, добрый вечер, не могли бы Вы помочь? Есть этот код, с помощью него нужно чтобы при...

Комбинированный метод хорд и касательных
Сдравствуйте господа программисты. Помогите решить задачу. Нужно написать программу на Си, которая...

Комбинированный метод хорд и касательных
Добрый вечер! Знаю, что эта задачка уже, наверное, надоела, но все же может кто поможет!! Нужно...

0
01.11.2019, 14:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.11.2019, 14:44
Помогаю со студенческими работами здесь

Метод хорд и касательных
Господа программисты, очень нужна ваша помощь. Нужно написать программу на C++, в ней решить любое...

Не работает метод хорд и касательных
Должно бить в районе 2,5-2,6 #include &lt;iostream.h&gt; #include &lt;math.h&gt; double f(double x) ;...

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

Решение нелинейного уравнения. Метод хорд и касательных
Написал я программку для решения, но вот незадача: Не находит их на некоторых отрезках....


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru