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

Найти корни нелинейного уравнения в заданном интервале

24.01.2019, 12:39. Показов 2946. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Реализуйте алгоритмы методов нахождения корней нелинейного уравнения заданного согласно варианту и вычислите все его корни в заданном диапазоне.

Входными данными являются:

1)Диапазон поиска корней, т.е. минимальное и максимальное и значения х (например: от -1000 до 1000);
2)Величина шага разбиения диапазона поиска (например: 0,1);
3)Требуемая точность вычисления корня (например: 0,001).

Выходными данными являются:

1) Интервалы x, в которых функция меняет свой знак;
2)Уточненное (по методу половинного деления) значение корня;
3)Значение функции в точке соответствующей найденному корню.

x^3+x^2-x-0.5=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
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
78
#include<stdio.h>
#include<iostream>
#include<math.h>
#include<cmath>
 
float f1(float x);
float f2(float a, float b, float s);
 
float f1(float x)
{
    float t;
    t = (x*x*x)+(x*x)-x- 0, 5;
    return t;
}
float f2(float a, float b, float toch)
{
    float ya, yb, x, y;
    ya = f1(a);
    yb = f1(b);
    int i = 0;
    do
    {
        i = i + 1;
        x = (a + b) / 2;
        y = f1(x);
        if ((ya*y) > 0)
        {
            a = x;
            ya = f1(a);
        }
        else {
            b = x;
            yb = f1(b);
        };
 
    } while (abs(y) <= toch && (b - a) < toch);
    return x;
 
}
int main()
{
    float ya, x, y, xk;
    int k = 0;
    float Xmin, Xmax, dx, toch;
    setlocale(LC_ALL, "rus");
    printf("Введите начало отрезка поиска корней = ");
    scanf_s("%f", &Xmin);
    do {
        Xmax = 0;
        printf("Введите конец  отрезка поиска корней = ");
        scanf_s("%f", &Xmax);
    } while (Xmax < Xmin);
    printf("Введитешаг = ");
    scanf_s("%f", &dx);
    printf("Введите точность = ");
    scanf_s("%f", &toch);
    x = Xmin;
    printf("s");
    ya = f1(x);
    while (x <= Xmax)
    {
        x = x + dx;
        y = f1(x);
        if (y*ya <= 0)
        {
            k = k + 1;
            xk = f2((x - dx), x, toch);
            printf("\n");
            printf("Номеркорня = %d\n", k);
            printf("начало отрезка существования корня = %f \n", x - dx);
            printf("конец отрезка существования корня = %f \n", x);
            printf("Значение корня = %f\n", xk);
            printf("Значение функции при корне = %f\n", f1(xk));
        };
        ya = y;
    };
    system("pause");
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.01.2019, 12:39
Ответы с готовыми решениями:

Найти корни уравнения на заданном интервале
Численным методом найти корни уравнения 5x5 – 44x3 + 4.5x2 =12. 1.Найти корни уравнения на...

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

Найти все корни уравнения на заданном интервале [a;b] с заданной точностью
Закрепление практических навыков по работе с функциями. В ходе выполнения работы необходимо...

Использование стандартных функций (найти все корни уравнения на заданном интервале [a;b] с заданной точностью)
Необходимо создать программу, которая находит все корни уравнения на заданном интервале с заданной...

12
2456 / 1061 / 481
Регистрация: 17.11.2018
Сообщений: 2,740
24.01.2019, 14:14 2
C
1
    t = (x*x*x)+(x*x)-x- 0, 5;

что это?
12 строка
0
1 / 1 / 0
Регистрация: 24.01.2019
Сообщений: 11
24.01.2019, 16:24  [ТС] 3
x^3+x^2-x-0.5=0

ну я и так пробовал, и через pow
0
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
24.01.2019, 16:30 4
makkey2265,
C++
1
t = (x*x*x)+(x*x)-x-0.5; // а не ,
0
2456 / 1061 / 481
Регистрация: 17.11.2018
Сообщений: 2,740
24.01.2019, 16:35 5
0, 5 -> 0.5
1
1 / 1 / 0
Регистрация: 24.01.2019
Сообщений: 11
24.01.2019, 16:55  [ТС] 6
ну все равно не выводит почему то
0
2456 / 1061 / 481
Регистрация: 17.11.2018
Сообщений: 2,740
24.01.2019, 17:03 7
Попробуй выставить русскую раскладку при вводе.
1
1 / 1 / 0
Регистрация: 24.01.2019
Сообщений: 11
24.01.2019, 17:52  [ТС] 8
тоже так же
0
2456 / 1061 / 481
Регистрация: 17.11.2018
Сообщений: 2,740
24.01.2019, 20:09 9
что так же?
вот:
Найти корни нелинейного уравнения в заданном интервале
1
1 / 1 / 0
Регистрация: 24.01.2019
Сообщений: 11
20.02.2019, 12:56  [ТС] 10
Почему то не работает точность

Добавлено через 5 минут
Не работает точность, всегда выводит 6 цифр после запятой
0
0 / 0 / 0
Регистрация: 29.01.2019
Сообщений: 2
20.02.2019, 13:46 11
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
78
#include<stdio.h>
#include<iostream>
#include<math.h>
#include<cmath>
 
float f1(float x);
float f2(float a, float b, float s);
 
float f1(float x)
{
    float t;
    t = (x*x*x)+(x*x)-x- 0, 5;
    return t;
}
float f2(float a, float b, float toch)
{
    float ya, yb, x, y;
    ya = f1(a);
    yb = f1(b);
    int i = 0;
    do
    {
        i = i + 1;
        x = (a + b) / 2;
        y = f1(x);
        if ((ya*y) > 0)
        {
            a = x;
            ya = f1(a);
        }
        else {
            b = x;
            yb = f1(b);
        };
 
    } while (abs(y) <= toch && (b - a) < toch);
    return x;
 
}
int main()
{
    float ya, x, y, xk;
    int k = 0;
    float Xmin, Xmax, dx, toch;
    setlocale(LC_ALL, "rus");
    printf("Введите начало отрезка поиска корней = ");
    scanf_s("%f", &Xmin);
    do {
        Xmax = 0;
        printf("Введите конец  отрезка поиска корней = ");
        scanf_s("%f", &Xmax);
    } while (Xmax < Xmin);
    printf("Введитешаг = ");
    scanf_s("%f", &dx);
    printf("Введите точность = ");
    scanf_s("%f", &toch);
    x = Xmin;
    printf("s");
    ya = f1(x);
    while (x <= Xmax)
    {
        x = x + dx;
        y = f1(x);
        if (y*ya <= 0)
        {
            k = k + 1;
            xk = f2((x - dx), x, toch);
            printf("\n");
            printf("Номеркорня = %d\n", k);
            printf("начало отрезка существования корня = %f \n", x - dx);
            printf("конец отрезка существования корня = %f \n", x);
            printf("Значение корня = %f\n", xk);
            printf("Значение функции при корне = %f\n", f1(xk));
        };
        ya = y;
    };
    system("pause");
}
0
Модератор
Эксперт С++
13502 / 10754 / 6409
Регистрация: 18.12.2011
Сообщений: 28,700
20.02.2019, 14:13 12
Цитата Сообщение от lololololol1321 Посмотреть сообщение
while (abs(y) <= toch && (b - a) < toch);
C++
1
while (fabs(y) > toch || fabs(b - a) > toch);
1
1 / 1 / 0
Регистрация: 24.01.2019
Сообщений: 11
21.02.2019, 10:21  [ТС] 13
Всегда выводит 6, а нужно столько цифр, сколько введи в точности(например 0,01-3 цифры после запятой и тд)
0
21.02.2019, 10:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.02.2019, 10:21
Помогаю со студенческими работами здесь

Найти корни нелинейного уравнения
Здравствуйте, подскажите пожалуйста, как решить уравнение x=cosx (например на С++)

Найти все корни заданного уравнения в указанном интервале комбинированным методом
Нужно найти все корни уравнения F(x)=0 в заданном интервале комбинированным методом.

Найти корни нелинейного уравнения на заданном промежутке и построить график
Здравствуйте,нужна помощь. Требуется найти корни нелинейного уравнения на заданном промежутке и...

Найти все корни некоторого уравнения на заданном интервале
Написать программу, которая позволяет найти все корни некоторого уравнения на заданном интервале....


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

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

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