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

Метод простых итераций - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
ovner
7 / 7 / 0
Регистрация: 06.10.2012
Сообщений: 140
14.05.2013, 21:50     Метод простых итераций #1
Здраствуйте! Нужно методом простой итерации решать такую систему нелинейных уравнений с точностью e=10-4 и найти погрешность.
Нашел на форуме 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
#include <iostream>
#include <conio.h>
#include <cmath>
 
using namespace std;
 
double f(double x)
{
    return pow(x,2.0) - 20*sin(x);
}
 
int main()
{
    double a,b,eps,x,dx;
    do
    {
        std::cout<<"Enter diapazone[a;b] of iterations\r\n";
        std::cout<<"a = ";std::cin>>a;
        std::cout<<"b = ";std::cin>>b;
        std::cout<<"Enter accuracy e ";std::cin>>eps;
        //Шаг определяем по точности вычислений
        //Погрешность f(x[i]) - f(x[i - 1]) < x[i] - x[i - 1] = h
        dx = (b - a)*(eps/10);//Мин шаг точность/10
        x = a;
        //Вычисления останавливаем когда добиваемся
        //требуемой точности вычислений eps < fabs(f(x))
        //или же достигаем конца промежутка
        while(eps < fabs(f(x)) && x <= b)
            x += dx;
        if(b < x)
            std::cout<<"[a;b] isn't contain roots\r\n";
        else
        {
            std::cout<<"root      : "<<x<<"\r\n";
            std::cout<<"acuracy e : "<<fabs(f(x))<<"\r\n";
        }
        std::cout<<"Press Y for new input\r\n";
    }
    while(toupper(getch()) == 'Y');
    return 0;
}

Кликните здесь для просмотра всего текста
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
#include <cmath>
#include <iomanip>
#include <iostream>
using namespace std;
 
double f(double x)
{
    return pow(2.0,x) - 2*pow(x, 2.0) - 1;
}
 
double g(double x)
{
    return x + 0.5*f(x);
}
 
int main()
{
    double x;
    double eps;
    cout<<"Enter initial root value   : ";cin>>x;
    cout<<"Enter error of calculation : ";cin>>eps;
    for(double iter = 1; eps < fabs(f(x)); iter = iter + 1)
    {
        system("cls");
        //*Итераций может быть очень много, поэтому рекомендую забыть
        //о целых а использовать дабл как счётчик, хотя в принципе если 
        //решение не нашли за 10-100 итераций то решения для данного коэффициента
        //при f(x) в g(x) нет и надо его менять
        cout<<"Iteration : "<<setprecision(0)<<iter<<endl;
        cout<<"x    = "<<x   <<endl;
        cout<<"g(x) = "<<g(x)<<endl;
        cout<<"f(x) = "<<f(x)<<endl;
        x = g(x);
    }
    system("pause");
    return 0;
}

Само задание прикрепил
Изображения
 
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.05.2013, 21:50     Метод простых итераций
Посмотрите здесь:

C++ Метод простых итераций для СЛАУ
метод простых итераций C++
C++ Метод простых итераций. С/С++
C++ Метод простых итераций для СЛАУ
C++ Метод простых итераций
C++ Посчитать количество проведенных итераций (метод простых итераций, Pascal -> C++)
Метод простых итераций C++
C++ Метод простых итераций для СЛАУ

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ovner
7 / 7 / 0
Регистрация: 06.10.2012
Сообщений: 140
15.05.2013, 00:43  [ТС]     Метод простых итераций #2
апну

Добавлено через 1 час 45 минут
еще раз апну
Yandex
Объявления
15.05.2013, 00:43     Метод простых итераций
Ответ Создать тему
Опции темы

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