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

Нахождение корней уравнения - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Сумма бесконечного ряда - это как ? http://www.cyberforum.ru/cpp-beginners/thread71242.html
скажите мне пжлста когда дана сумма бесконечная с точностью что надо сделать я имею ввиду в чем смысл задания?? надо найти сумму при котором некий номер суммы меньше точности?!
C++ Проектирование и работа с классами Задали лабораторную в институте. Не знаю как сделать, люди помогите пожалуйста. Спроектировать и реализовать класс Complex для работы с комплексными числами. В классе должны быть определены различные конструкторы (по умолчанию, только на основе вещественной части, по вещественной и мнимой части, конструктор копирования). Должны быть перегружены следующие операторы: +, -, *, ==, *=, +=, –=,!=,... http://www.cyberforum.ru/cpp-beginners/thread71228.html
C++ Debug error
После запуска при вводе любого числа выдает debug error с предложение прервать, повторить или пропустить. Если нажимаю пропустить выдает число -858993450. В чем ошибка? #include <iostream> #include <string> #include <conio.h> using namespace std; int main() {
Дан файл с абзацем, выровненым по левому краю, надо отформатировать по правому краю C++
есть задание дан файл с абзацем выровненым по левому краю , надо отформатировать по правому краю!!
C++ использование указателей http://www.cyberforum.ru/cpp-beginners/thread71211.html
Должна быть разработана программа с меню с использованием указателей: 1. Изменить порядок следования элементов в массиве так, чтобы сначала располагались все отрицательные элементы, затем положительные, а потом нули. 2. Найдите наибольший элемент среди четных строк матрицы. 3. Выход с программы Немогу понять как реализовать 1 и 2 пункт (непонятен сам алгоритм нахождения) зы:подскажите...
C++ Файлы Помогите пожалуйста с программкой: Информация о сотрудниках предприятия содержит: -Ф.И.О.; -номер отдела; -должность; -дату начала работы. Вывести список сотрудников по отделам в порядке убывания ста¬жа. подробнее

Показать сообщение отдельно
soundtrack
 Аватар для soundtrack
41 / 41 / 4
Регистрация: 15.12.2011
Сообщений: 131
19.03.2012, 21:58     Нахождение корней уравнения
Цитата Сообщение от isaak Посмотреть сообщение
Помогите пожалуйста уже 2-ую неделю бьюсь???????
isaak, Вообще, за 2 недели при желании можно открыть бы книгу и прочитать основы работы с функциями. Кстати советую с этого начать...

Ну а вот как выглядит решение:
код
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include <iostream>
using namespace std;
#define eps 1e-3
 
int F(int n)
{
    int f, f1(1), f2(1), m(0);
    while(m < n - 1)
    {
        f = f1 + f2;
        f1 = f2;
        f2 = f;
        ++m;
    }
    return f1;
}
 
double Fun(double x)
{
    return (x * x * x * x - 4 * x * x + 8); //здесь может быть ваше уравнение
}
 
void Fib(double a, double b)
{
    double x1, x2, _x, xf1, xf2;
    int k(0);
    int N(0);
    double fn1(1), fn2(1), fn, f = (b - a) / eps;
 
    while(fn1 < f)
    {
        fn = fn1 + fn2;
        fn1 = fn2;
        fn2 = fn;
        ++N;
    }
    x1 = a + (double)F(N - 2) / F(N) * (b - a) - (N&1 ? -1 : 1) * eps / F(N);
    x2 = a + (double)F(N - 1) / F(N) * (b - a) + (N&1 ? -1 : 1) * eps / F(N);
    xf1 = Fun(x1);
    xf2 = Fun(x2);
P:
    ++k;
    if(xf1 >= xf2)
    {
        a = x1;
        x1 = x2;
        xf1 = xf2;
        x2 = a + (double)F(N - k - 1) / F(N - k) * (b - a) + ((N - k)&1 ? -1 : 1) * eps / F(N - k);
        xf2 = Fun(x2); 
    }
    else
    {
        b = x2;
        x2 = x1;
        xf2 = xf1;
        x1 = a + (double)F(N - k - 2) / F(N - k) * (b - a) - ((N - k)&1 ? -1 : 1) * eps / F(N - k);
        xf1 = Fun(x1);
    }
    if(fabs(b - a) <= eps)
    {
        _x = (a + b) / 2;
        cout<<"\nРезультат:\nx = "<<_x<<"\t\tF(x) = "<<Fun(_x)<<
            "\nКоличество итераций: "<<k<<endl;
    }
    else
        goto P;
}
 
void main()
{
    setlocale(0, "");
    double a,b;
    cout << "Программа решает уравнение методом Фибоначчи.\nВведите границы:\na=";
    cin>>a;
    cout<<"b=";
    cin>>b;
    Fib(a,b);
    system("pause");
}
 
Текущее время: 12:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru