Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.02.2019, 16:07   #1
Император земли
Новичок
Джуниор
 
Регистрация: 15.02.2019
Сообщений: 2
По умолчанию Решение линейного уравнения методом Ньютона (С++)

Всем привет! Имею задание: "Решить уравнение x3 – 2x2 – 4x + 7 = 0 на отрезке [–3, 3] с точностью eps методами хорд и Ньютона". При выполнении задания столкнулся со следующей проблемой: при вычислении корней удается вывести только один корень, а их на заданном отрезке [-3, 3] - три (проверял через photomath, скриншот во вложениях). Будьте добры, помогите студенту!

Код:
#include "stdafx.h"
#include "Windows.h"
#include <conio.h>
#include <iostream>
#include <math.h>

using namespace std;

double f (double x)
{
	return x*x*x-2*x*x-4*x+7;
}

// производная
double df (double x)
{
	return 3*x*x-4*x-4;
}

int _tmain(int argc, _TCHAR* argv[])
{
	SetConsoleCP(1251);
	SetConsoleOutputCP(1251);
	double method;
	cout << "[ Решение уравнения x^3 - 2x^3 - 4x + 7 = 0 ]" << endl;
	cout << "[ 1 ] Решить уравнение методом Ньютона" << endl;
	cout << "[ 2 ] Решить уравнение методом хорд" << endl;
	cout << "Выберите метод решения уравнения: ";
	cin >> method;
	if (method == 1) {
		double eps, n;
		double x = -3, x0 = 3; // интервал
		cout << "[Метод Ньютона]" << endl;
		cout << "Введите точность: ";
		cin >> eps;
		n = 0;
		do {
			x0 = x;
			x = x0 - f(x)/df(x);
			n = n + 1;
		} while (fabs(x0 - x) > eps && n < 100);
		cout << "Ответ: " << x << endl;
		cout << "Число итераций: " << n << endl;
	} else if (method == 2) {
		cout << "В разработке" << endl;
	}
	getch();
	return 0;
}
Изображения
Тип файла: jpg AO77zgi.jpg (27.7 Кб, 127 просмотров)

Последний раз редактировалось Император земли; 15.02.2019 в 16:12.
Император земли вне форума Ответить с цитированием
Старый 15.02.2019, 16:20   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

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

Последний раз редактировалось p51x; 15.02.2019 в 16:30.
p51x на форуме Ответить с цитированием
Старый 15.02.2019, 16:29   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

http://statistica.ru/branches-maths/...iya-uravneniy/

Так что нужно примерно знать где корни и выбирать соответствующие [a,b]. Из твоей картинки для трех корней это, например, [-3;1], [1;1.75] и [2.1;2.8]
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 15.02.2019, 16:46   #4
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,534
По умолчанию

Это называется "перебор по сетке". Разбиваешь отрезок на N равных интервалов и проверяешь - если на концах интервала знаки функции разные - значит, самое то. И уже методами значения корней ищешь на найденных интервалах.

Последний раз редактировалось digitalis; 16.02.2019 в 11:05.
digitalis вне форума Ответить с цитированием
Старый 18.02.2019, 15:04   #5
Император земли
Новичок
Джуниор
 
Регистрация: 15.02.2019
Сообщений: 2
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Ну так вы про метод почитайте. Он хотит нормальное приближение и отсутствие других корней на промежутке. Разбивайте ваш промежуток каким-нибудь методом и вычисляйте на подпромежутках.
Диванный эксперт, ты мне код написать можешь? Я выше уже показал что я пытался. Был бы ты рядом
Император земли вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение уравнения методом Ньютона IgorVN Microsoft Office Excel 1 14.04.2016 13:38
Решение уравнения методом Ньютона Pascal 2Dletti Помощь студентам 1 22.01.2013 22:44
решение уравнения методом хорд и методом Ньютона Маргоша)) Общие вопросы Delphi 1 21.04.2010 20:40
Решение уравнения F(x)=0 методом Ньютона BGR71 Помощь студентам 2 13.04.2010 15:26
Решение нелинейного уравнения методом Ньютона Tina Общие вопросы C/C++ 2 04.06.2008 21:48