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

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

Войти
Регистрация
Восстановить пароль
 
warchief
36 / 36 / 3
Регистрация: 09.08.2012
Сообщений: 114
#1

Найти корень уравнения с точностью 10^-4 - C++

08.12.2012, 12:19. Просмотров 935. Ответов 5
Метки нет (Все метки)

Есть
3^x - 2*x^2 - 3 = 0;
Найти корень уравнения с точностью 10^-4

Надо на с++ решить (программа должна просто выдавать ответ, ничего больше)... Проблемка в том что я даже не знаю с какой стороны код писать (потому что не помню как найти корень, а гугл только еще больше запутал)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.12.2012, 12:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти корень уравнения с точностью 10^-4 (C++):

Найти корень уравнения с заданной точностью - C++
Доброго времени суток, вопрос по лабораторной. Сделал 1 и 2 задания, не знаю как выполнить 3 задание. Не прошу присылать голые ответы,...

Найти корень уравнения на интервале [a,b] с заданной пользователем точностью - C++
Пропустил несколько занятий по причине болезней, висит курсовая, осталось сделать одно задание. Найти корень уравнения на интервале с...

Найти корень заданного уравнения методом простой итерации с заданной точностью - C++
Добрый день форумчане! Не могли бы вы помочь написать программу для решения данной задачи с использованием рекурсии. (№8.23)

Вычислить корень уравнения на отрезке [a; b] с точностью eps=0.000001, методом половинного деления - C++
есть код #include <conio.h> #include <math.h> #include <iostream.h> double f(double x) { return x*x*x-3; } int...

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

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

5
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,291
Записей в блоге: 2
Завершенные тесты: 1
08.12.2012, 13:09 #2
Пример решения: берете минимально возможное значение, минус бесконечность, максимально возможное значение. Затем включаете двоичный поиск и подставляете в уравнение.
1
dikanev
21 / 21 / 1
Регистрация: 28.05.2010
Сообщений: 67
08.12.2012, 13:12 #3
Берете формулу для корней квадратного уравнения, результат округляете до 4х знаков после запятой.
1
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,291
Записей в блоге: 2
Завершенные тесты: 1
08.12.2012, 13:13 #4
Может я чего-то не догоняю, но тут уравнение 3 степени.
1
dikanev
21 / 21 / 1
Регистрация: 28.05.2010
Сообщений: 67
08.12.2012, 13:23 #5
Цитата Сообщение от Dani Посмотреть сообщение
Может я чего-то не догоняю, но тут уравнение 3 степени.
Блин. 3^x - оно вообще не степенное. Ну, ладно, тогда двоичный поиск рулит.

И вот еще: метод деления отрезка пополам и метод итерации
1
warchief
36 / 36 / 3
Регистрация: 09.08.2012
Сообщений: 114
09.12.2012, 15:06  [ТС] #6
Все, решил. Для будущих поколений. Нужно высчитать интервал (к сожалению придется самостоятельно). У меня [2;3]

Весь код

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
51
52
#include <iostream>
#include <fstream>
#include <conio.h>
#include <string>
#include <math.h>
#include <windows.h>
using namespace std;
 
double r(double a)
{
    a *= 10000;
    a = floor(a+0.5);
    a /= 10000;
    return a;
}
 
int main()
{
    setlocale(0,"RUS");
 
    double a = 2;
    double b = 3;
 
    int n = 1;
 
    double c, fa, fb, fc;
 
    cout << "n" << "\ta" << "\tb" << "\t(a+b)/2" << "\tf(a)" << "\tf(b)" << "\tf((a+b)/2)" << endl << endl;
 
    do 
    {
        c = (a+b)/2;
 
        fa = pow(3, a)-2*pow(a,2)-3;
        fb = pow(3, b)-2*pow(b,2)-3;
 
        fc = pow(3, c)-2*pow(c,2)-3;
 
        cout <<  n << "\t" << a << "\t" << b << "\t" << c << "\t" << fa << "\t" << fb << "\t" << fc << endl;
 
        if (fa*fc>0)
            a=c;
        if (fb*fc>0)
            b=c;
 
        n++;
    } while (!(abs(b-a) > 0.0001));
 
    cout << "\n\nКорень уравнения с точностью 0.0001 " << r(c) << endl;
 
    system("pause");
}
Провериться можно здесь - http://www.wolframalpha.com/input/?i=solve%283%5Ex-2*x%5E2-3%2Cx%29

Ответы совпали.

Теория в помощь (хоть что-то про интервал который у меня вызвал сложность, да и пример близок)
http://www.uchites.ru/chislennye_metody/posobie
Вторая глава

Если вдруг важно, решено методом половинного деления
0
09.12.2012, 15:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.12.2012, 15:06
Привет! Вот еще темы с ответами:

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

Найти корень уравнения - C++
Доброго времени суток, помогите написать программу по нахождению корней уравнения. Сам просто напросто не знаю как решить данное уравнение,...

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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