Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
#1

Найти корень уравнения - C++

30.11.2012, 05:08. Просмотров 1077. Ответов 14
Метки нет (Все метки)

Доброго времени суток, помогите написать программу по нахождению корней уравнения. Сам просто напросто не знаю как решить данное уравнение, не говоря уже о том чтоб написать программу по его решению. Уравнение на картинке. Заранее спасибо.
0
Изображения
 
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.11.2012, 05:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти корень уравнения (C++):

Найти корень уравнения 2x^3-x-10=0 - C++
заранее благодарен

Найти корень уравнения - C++
Найти корень уравнения 2*x*x*x-x-10=0 sqrt(x)-2=0

Найти корень уравнения - C++
pomogite Величина d является корнем только одного из уравнений ах2 +bх+с = 0 mx+n = 0.

Найти корень уравнения на интервале - C++
Помогите пожалуйста написать программу: Найти корень уравнения\varphi (x)=0 на интервале (А,В) с точностью Е=10^-4.Известно,что \varphi...

Найти корень квадратного уравнения - C++
Люди помогите решить программу з оператором (if) Задание: Знайти корень квадратного уравнения!!!!!

Найти корень уравнения с точностью 10^-4 - C++
Есть 3^x - 2*x^2 - 3 = 0; Найти корень уравнения с точностью 10^-4 Надо на с++ решить (программа должна просто выдавать ответ,...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
faLek
99 / 100 / 7
Регистрация: 06.03.2012
Сообщений: 478
30.11.2012, 13:40 #2
Просто через цикл перебираешь значения и найдутся твои корни.
0
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
01.12.2012, 16:14  [ТС] #3
вот так пробовал перебирать значение чтоб корень найти но нифига не получается, может цикл значений не угадываю подскажите как найти этот злополучный корень
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <cstdlib>
#include <iomanip>
#include <math.h>
using namespace std;
int main()
{
    float X;
    for ( float X = -1.1; X < 10; X+=0.001){
    if (Sqrt(X+2)+(X*X*X)-2==0)
         cout<<X<< endl;}
    system("pause");
    return 0;
}
0
CAST
Сообщений: n/a
01.12.2012, 17:00 #4
Используй Double
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
01.12.2012, 17:11  [ТС] #5
Цитата Сообщение от CAST Посмотреть сообщение
x = sqrt(x+2+(x*x*x)-2);
да у меня изначально это все равно нулю, я не могу иксу присваивать это значение это ведь не правильно

Добавлено через 7 минут
Цитата Сообщение от CAST Посмотреть сообщение
Используй Double
пробовал тоже не помогало
0
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,929
01.12.2012, 17:15 #6
А если сделать с примерным округлением?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <cstdlib>
#include <iomanip>
#include <math.h>
using namespace std;
int main()
{
    double X;
    for (X = -200.0; X < 10.0; X+=0.001){
    if (sqrt(X+2.0)+(X*X*X) > 1.999 && sqrt(X+2.0)+(X*X*X) < 2.001)
         cout<<X<< endl;}
    system("pause");
    return 0;
}
Добавлено через 3 минуты
Х≈2.707727
0
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
01.12.2012, 17:30  [ТС] #7
Цитата Сообщение от MrGluck Посмотреть сообщение
А если сделать с примерным округлением?
не совсем понял смысл округления как и условия забитого в if
, но код кмпилировал не работает

Добавлено через 9 минут
при таком коде получилось значение икса 0.708
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#pragma argsused
#include <iostream>
#include <cstdlib>
#include <iomanip>
#include <math.h>
using namespace std;
int main()
{
    double X;
    for (X = -1.0; X < 10.0; X+=0.001){
    if (Sqrt(X+2.0)+(X*X*X) > 1.999 && Sqrt(X+2.0)+(X*X*X) < 2.001)
         cout<<X<< endl;}
    system("pause");
    return 0;
}
0
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,929
01.12.2012, 17:39 #8
lexflax, а теперь, зная примерно чему равно X, сузь границы и уменьши шаг.
0
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
01.12.2012, 17:49  [ТС] #9
как мне примерное значение может помоч с узить шаг и границы???
0
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,929
01.12.2012, 17:56 #10
Цитата Сообщение от lexflax Посмотреть сообщение
как мне примерное значение может помоч с узить шаг и границы???
ты знаешь примерное значение 2.708. Так незачем тебе от -100 до 20 числа проверять, если они не подходят. иди от 2.7 до 2.71 с шагом в 0.000001

Добавлено через 3 минуты
ошибка:
Х≈0.707727
0
v.a.l.i.d
413 / 378 / 10
Регистрация: 21.09.2012
Сообщений: 913
01.12.2012, 17:56 #11
Тут x должно быть больше минус 2 по условию. чтобы под корнем было число положительное
0
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
01.12.2012, 17:59  [ТС] #12
ну вот так допустим с очень маленьким шагом все равно не находит икс, может условие пишу в иф не грамотно?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#pragma argsused
#include <iostream>
#include <cstdlib>
#include <iomanip>
#include <math.h>
using namespace std;
int main()
{
    double X,r;
    for (X = -0.8; X < 0.8; X+=0.00000001){
    if (Sqrt(X+2)+(X*X*X) > 1.9 && Sqrt(X+2)+(X*X*X) < 2 && Sqrt(X+2)+(X*X*X)-2==0)
         cout<<X<< endl;}
    system("pause");
    return 0;
}
0
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,929
01.12.2012, 17:59 #13
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <cstdlib>
#include <iomanip>
#include <math.h>
using namespace std;
int main()
{
    double X;
    for (X = 0.7; X < 0.71; X+=0.0000001){
    if (sqrt(X+2.0)+(X*X*X) > 1.9999999 && sqrt(X+2.0)+(X*X*X) < 2.0000001)
         cout<<X<< endl;}
    system("pause");
    return 0;
}
но это просто вычислить X в лоб. По-нормальному, нужно брать число X1 и X2, смотреть какое из них ближе к решению, в ту сторону идти. Это как теплее-холоднее.
0
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
01.12.2012, 18:11  [ТС] #14
ну а проверка икса? где главное условие должно быть таким
if (Sqrt(X+2)+(X*X*X)-2==0)
то вывести икс , у меня не выводит не находит такой икс при котором бы выражение было равно нулю.
0
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,929
01.12.2012, 18:16 #15
Цитата Сообщение от lexflax Посмотреть сообщение
ну а проверка икса? где главное условие должно быть таким
if (Sqrt(X+2)+(X*X*X)-2==0)
то вывести икс , у меня не выводит не находит такой икс при котором бы выражение было равно нулю.
Получается очень близкое к 0 число, но 0 не равное. Связано с тем, что вычисления проходят на машине и память ограничена.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.12.2012, 18:16
Привет! Вот еще темы с ответами:

Найти отрицательный корень уравнения - C++
Найти отрицательный корень уравнения e^x = 5x^2 Найти решение уравнения с точностью E= 0.0001 следующими методами: - дихотомии, -...

Найти корень уравнения методом хорд - C++
Добрый день! Помогите, пожалуйста найти корень уравнения, решая методом хорд: {1.4}^{x} – x = 0 с точностью e = 10-5 при заданном...

Найти корень уравнения методом касательных - C++
Помогите пожалуйста! Нужно найти корень уравнения cos(x/2)*sin(x) + 1 = 0 методом касательных. Вот моя попытка найти корень, но почему...

Найти корень уравнения методом хорд - C++
x^3+2x-5 = 0 Решите методом хорд. Очень срочно. И укажите мне отдельно интервалы. Заранее спасибо.


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
01.12.2012, 18:16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru