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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
30.11.2012, 05:08     Найти корень уравнения #1
Доброго времени суток, помогите написать программу по нахождению корней уравнения. Сам просто напросто не знаю как решить данное уравнение, не говоря уже о том чтоб написать программу по его решению. Уравнение на картинке. Заранее спасибо.
Изображения
 
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
faLek
99 / 100 / 7
Регистрация: 06.03.2012
Сообщений: 478
30.11.2012, 13:40     Найти корень уравнения #2
Просто через цикл перебираешь значения и найдутся твои корни.
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;
}
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
пробовал тоже не помогало
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4923 / 2666 / 243
Регистрация: 29.11.2010
Сообщений: 7,421
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
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;
}
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4923 / 2666 / 243
Регистрация: 29.11.2010
Сообщений: 7,421
01.12.2012, 17:39     Найти корень уравнения #8
lexflax, а теперь, зная примерно чему равно X, сузь границы и уменьши шаг.
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
01.12.2012, 17:49  [ТС]     Найти корень уравнения #9
как мне примерное значение может помоч с узить шаг и границы???
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4923 / 2666 / 243
Регистрация: 29.11.2010
Сообщений: 7,421
01.12.2012, 17:56     Найти корень уравнения #10
Цитата Сообщение от lexflax Посмотреть сообщение
как мне примерное значение может помоч с узить шаг и границы???
ты знаешь примерное значение 2.708. Так незачем тебе от -100 до 20 числа проверять, если они не подходят. иди от 2.7 до 2.71 с шагом в 0.000001

Добавлено через 3 минуты
ошибка:
Х≈0.707727
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
01.12.2012, 17:56     Найти корень уравнения #11
Тут x должно быть больше минус 2 по условию. чтобы под корнем было число положительное
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;
}
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4923 / 2666 / 243
Регистрация: 29.11.2010
Сообщений: 7,421
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, смотреть какое из них ближе к решению, в ту сторону идти. Это как теплее-холоднее.
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
01.12.2012, 18:11  [ТС]     Найти корень уравнения #14
ну а проверка икса? где главное условие должно быть таким
if (Sqrt(X+2)+(X*X*X)-2==0)
то вывести икс , у меня не выводит не находит такой икс при котором бы выражение было равно нулю.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.12.2012, 18:16     Найти корень уравнения
Еще ссылки по теме:

C++ Найти корень уравнения
C++ Найти корень уравнения y=f(x)=0 методом касательных
C++ Найти корень уравнения с заданной точностью

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

Или воспользуйтесь поиском по форуму:
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4923 / 2666 / 243
Регистрация: 29.11.2010
Сообщений: 7,421
01.12.2012, 18:16     Найти корень уравнения #15
Цитата Сообщение от lexflax Посмотреть сообщение
ну а проверка икса? где главное условие должно быть таким
if (Sqrt(X+2)+(X*X*X)-2==0)
то вывести икс , у меня не выводит не находит такой икс при котором бы выражение было равно нулю.
Получается очень близкое к 0 число, но 0 не равное. Связано с тем, что вычисления проходят на машине и память ограничена.
Yandex
Объявления
01.12.2012, 18:16     Найти корень уравнения
Ответ Создать тему
Опции темы

Текущее время: 08:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru