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

Решение нелинейного уравнения методом секущих

16.05.2017, 01:40. Показов 3833. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Окажите помощь,пожалуйста!!
Помогите написать на Visual Studio 14.0,
Нужно решить нелинейное уравнение 2sin(x)-x+0.4=0 методом секущих
С областью определения [-5;0]
С погрешностью 0.01.
Ещё нужно вывести результат на какой итерации найден корень
Для индивидуальной работы, почти всё сделано, осталась эта часть
Изображения
 
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Блог
16.05.2017, 01:40
Ответы с готовыми решениями:

Решение нелинейного уравнения методом итераций
Я не знаю куда кидать, кто поможет сделать эту работу Программа должна вычислять корень...

Решение нелинейного уравнения методом итераций в с++
Помогите пожалуйста решить нелинейное уравнение x^2-2x-1 = 0 промежуток от 0 до 3. Находил...

Решение нелинейного уравнения методом итерации
Написал программу решение нелинейного уравнения методом итерации: //Метод итерации #include...

Решение нелинейного уравнения методом перебора
Решить уравнение sin(1/x)=0 методом перебора на промежутке x = .

13
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
16.05.2017, 09:52 2
На данном отрезке будет 2 корня. Который из них или оба?
0
0 / 0 / 0
Регистрация: 11.03.2017
Сообщений: 52
16.05.2017, 11:02  [ТС] 3
мановар, оба
0
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
16.05.2017, 11:33 4
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
#include "stdafx.h"
#include <iostream>
#include <cmath>
 
int N = 0;
 
double f(double x)
{
    return 2 * sin(x) - x + 0.4;
}
 
double Metod_hord(double a, double b, double eps)
{
    while (fabs(b - a) > eps)
    {
        a = b - (b - a) * f(b) / (f(b) - f(a));
        b = a + (a - b) * f(a) / (f(a) - f(b));
        N++;
    }
    return b;
}
 
int main()
{
    double eps = 0.01;
    double x_begin = -5.;
    double x_end = 0.;
    double x_sr = x_begin;
    double F;
 
    do {
        x_sr += 1.;
        F = f(x_sr);
    } while (F > 0);
 
    double X1 = Metod_hord (x_begin, x_sr,eps);
 
    std::cout << " X1 = " << X1 << "   " << " N = " << N << std::endl;
    
    N = 0;
    double X2 = Metod_hord(x_sr, x_end, eps);
 
    std::cout << " X2 = " << X2 << "   " << " N = " << N << std::endl;
    
    system("pause");
}
1
0 / 0 / 0
Регистрация: 11.03.2017
Сообщений: 52
16.05.2017, 11:50  [ТС] 5
мановар, а метод секущих и метод хорд разве не разное?
0
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
16.05.2017, 12:06 6
Цитата Сообщение от ВероникаК Посмотреть сообщение
а метод секущих и метод хорд разве не разное?
Разное, каюсь, не досмотрел. Будет время переделаю.
0
0 / 0 / 0
Регистрация: 11.03.2017
Сообщений: 52
16.05.2017, 22:31  [ТС] 7
мановар, окей, с нетерпенеем жду)
0
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
17.05.2017, 13:52 8
ВероникаК, я правильно понял, что в методе секущих используется метод хорд, но при этом значения https://www.cyberforum.ru/cgi-bin/latex.cgi?{x}_{0} и https://www.cyberforum.ru/cgi-bin/latex.cgi?{x}_{1} берутся с одной стороны от корня.
0
0 / 0 / 0
Регистрация: 11.03.2017
Сообщений: 52
17.05.2017, 14:57  [ТС] 9
мановар, Метод секущих выходит из метода касательных
Тут вроде бы подробно описано http://www.machinelearning.ru/... 1.82.D1.83
0
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
17.05.2017, 15:25 10
ВероникаК, вся проблема и возникла из за того, что в разной литературе по разному все это обзывается. Остановимся на варианте по ссылке. Сейчас подправлю программу и вышлю.

Добавлено через 17 минут
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
#include "stdafx.h"
#include <iostream>
#include <cmath>
 
double f(double x)
{
    return 2. * sin(x) - x + 0.4;
}
 
double Metod_s(double x1, double x0, double eps)
{
    double  x_next;
    int     N = 0;
    while (fabs(x1 - x0) > eps)
    {
        x_next = x0 - f(x0) * (x1 - x0) / (f(x1) - f(x0));
        x0 = x1;
        x1 = x_next;
        N++;
    }
    std::cout << " N = " << N << "   ";
    return x1;
}
 
int main()
{
    double eps = 0.01;
    double x_begin = -5.;
    double x_end = 0.;
 
    double X1 = Metod_s(-3., x_begin, eps);
 
    std::cout << " X1 = " << X1 <<std::endl;
 
    double X2 = Metod_s(x_end, 1., eps);
 
    std::cout << " X2 = " << X2 << std::endl;
 
    system("pause");
}
С x2 проблем нет, а вот с x1 пришлось схитрить. По графику разберетесь почему так, может подставите другие значения.
1
0 / 0 / 0
Регистрация: 11.03.2017
Сообщений: 52
17.05.2017, 16:05  [ТС] 11
мановар, а на какой итерации найден корень?
0
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
17.05.2017, 16:08 12
N = ....
0
0 / 0 / 0
Регистрация: 11.03.2017
Сообщений: 52
17.05.2017, 16:22  [ТС] 13
мановар, а корни это х1 и х2, да?
0
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
17.05.2017, 17:25 14
Да.
0
17.05.2017, 17:25
cpp_developer
Эксперт
20123 / 5690 / 417
Регистрация: 09.04.2010
Сообщений: 12,546
Блог
17.05.2017, 17:25
Помогаю со студенческими работами здесь

Решение нелинейного алгебраического уравнения методом итераций
Необходимо решить нелинейное алгебраическое уравнение f(x)=x^3-4x+3=0 на отрезке с точностью eps...

Решение нелинейного уравнения методом простой итерации
Помогите, пожалуйста! Нужно разработать программу для решения нелинейного уравнения методом простой...

Решение нелинейного уравнения методом простых итераций
f(x)=arcsin(2x+1)-x^2=0 , ошибок при компиляции нету , но при запуске выдаёт Asin: Domain Error и...

Решение нелинейного уравнения методом простых итераций
как будет выглядеть код программы на С++ &quot;решение нелинейного уравнения методом простых итерации?&quot;


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

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