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

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

Восстановить пароль Регистрация
 
warchief
 Аватар для warchief
36 / 36 / 3
Регистрация: 09.08.2012
Сообщений: 114
08.12.2012, 12:19     Найти корень уравнения с точностью 10^-4 #1
Есть
3^x - 2*x^2 - 3 = 0;
Найти корень уравнения с точностью 10^-4

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

И вот еще: метод деления отрезка пополам и метод итерации
warchief
 Аватар для warchief
36 / 36 / 3
Регистрация: 09.08.2012
Сообщений: 114
09.12.2012, 15:06  [ТС]     Найти корень уравнения с точностью 10^-4 #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...x%5E2-3%2Cx%29

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

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

Если вдруг важно, решено методом половинного деления
Yandex
Объявления
09.12.2012, 15:06     Найти корень уравнения с точностью 10^-4
Ответ Создать тему
Опции темы

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