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

Подсчёт корней на промежутке изоляции

25.09.2020, 14:17. Показов 2323. Ответов 6

Студворк — интернет-сервис помощи студентам
Добрый день дороге форумчане нужна помощь).
Составил код для подсчёта корней нелинейного уравнения методом секущих(метод хорд) на промежутке изоляции. У меня получается 2 корня вместо 3.
a = 4
b = 8
n = 5

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
#include<iostream>
#include<cmath>
#include<iomanip>
 
using namespace std;
 
double f(double x)
{
    return sqrt(x) - pow(cos(x), 2) - 2;
}
 
int main()
{
    double a, b, n, h, x, y, result;
    int k;
    setlocale(LC_ALL, "rus");
    a = 4; b = 8; n = 5;
    h = (b - a)/n;
    cout <<"a = " << a << endl;
    cout <<"b = " << b << endl;
    cout <<"n = " << n << endl;
    cout <<"h = " << h << endl;
    k = 0;
    cout <<setw(15)<<"x"<<setw(15)<<"f(x)"<<endl;
    for(x = a; x <= b; x = x + h)
    {
        cout <<setw(15)<<x<<setw(15)<<f(x);
        if(x < b && f(x)*f(x + h) < 0)
        {
            cout <<" Промежуток изоляции "<<x<<"; "<<x + h<<endl;
            k = k + 1;
        }
        else
        {
            cout <<endl;
        }
    
    }
    cout <<"Количество корней k = "<<k<<endl;
 
    do  
    {
        y = result;
        result = a - (f(a) * (b - a))/(f(b) - f(a));
        a = result;
        cout << "Roots:\n" << result << endl;
    }
    while (fabs(y - result) >= h);
    return 0;
}
В чём здесь ошибка?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.09.2020, 14:17
Ответы с готовыми решениями:

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

Интервалы изоляции корней
Графическим методом найти интервалы изоляции корней уравнения f(x)=0 и составить программу вычисления одного из корней с точностью 0.001...

Интервалы изоляции корней
Для уравнения F(x)= 0 определить интервал изоляции графически и сравнить его с заданным интервалом . Уточнить корень уравнения методом...

6
0 / 0 / 0
Регистрация: 18.09.2020
Сообщений: 6
25.09.2020, 14:19  [ТС]
Вот скриншот:
Миниатюры
Подсчёт корней на промежутке изоляции  
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
25.09.2020, 15:31
Лучший ответ Сообщение было отмечено soda2020 как решение

Решение

Цитата Сообщение от soda2020 Посмотреть сообщение
В чём здесь ошибка?
Метод секущих позволяет найти только один корень. Надо его искать на каждом промежутке изоляции. Что-то типа
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
for(x = a; x <= b; x = x + h)
{
    cout <<setw(15)<<x<<setw(15)<<f(x);
    if(x < b && f(x)*f(x + h) < 0)
    {
        cout <<" Промежуток изоляции "<<x<<"; "<<x + h<<endl;
        k = k + 1;
 
        double a1 = x;
        double b1 = x + h;
        double result = f(a1);
        do  
        {
            y = result;
            result = a1 - (f(a1) * (b1 - a1))/(f(b1) - f(a1));
            a1 = result;
        }
        while (fabs(y - result) >= h);
        cout << "Root #" << k << ": " << result << endl;
    }
    else
    {
        cout <<endl;
    }
   
}
1
0 / 0 / 0
Регистрация: 18.09.2020
Сообщений: 6
25.09.2020, 15:36  [ТС]
oleg-m1973, Спасибо, только как то это всё в куче

Добавлено через 31 секунду
Можно упорядочить
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
25.09.2020, 15:36
Цитата Сообщение от soda2020 Посмотреть сообщение
oleg-m1973, Спасибо, только как то это всё в куче
Ну, думаю, смысл ты понял. Сделай, чтоб не было всё в куче. В чём проблема?
1
0 / 0 / 0
Регистрация: 18.09.2020
Сообщений: 6
25.09.2020, 15:40  [ТС]
oleg-m1973, Ладно, Спасибо. Я и так обнаглел
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
25.09.2020, 15:53
Цитата Сообщение от soda2020 Посмотреть сообщение
oleg-m1973, Ладно, Спасибо. Я и так обнаглел
На самом деле, здесь всё нормально, ничего не в куче. Находишь промежуток и сразу ищешь на нём корень.
Если тебе надо просто вывести их на экран, то и переделывать ничего не надо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.09.2020, 15:53
Помогаю со студенческими работами здесь

Определить интервал изоляции корней графически и сравнить его с заданным интервалом
Задача 1. Для уравнения F(X)=х2-cos x=0 определить интервал изоляции графически и сравнить его с заданным интервалом . Уточнить корень...

Укажите число корней уравнения на промежутке
Укажите число корней уравнения tg^2x+ctg^2x=2 на промежутке

Вероятность действительных корней квадратного уравнения на промежутке [-1,1]
Всем доброго времени суток! Столкнулась с небольшой проблемой при решении задачи. Задание звучит так: Используя случайную выборку...

Нахождение целых корней уравнения на заданном промежутке
Помогите пожалуйста! Вводятся целые числа a, b, c, d, e, f, каждое из которых не превосходит по модулю 1000, и рассматривается...

Уточнение корней уравнения методом дихотомии на найденном промежутке
Разработайте программу выполняющую уточнение корней методом дихотомии на найденном промежутке с точностью до 0.0001. Выведите на экран...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru