Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/29: Рейтинг темы: голосов - 29, средняя оценка - 4.69
2 / 2 / 3
Регистрация: 14.03.2018
Сообщений: 29
1

Методом итераций вычислить корень уравнения вида f(x)=0

13.04.2018, 02:25. Показов 5851. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Методом итераций вычислить корень уравнения вида f(x)=0 расположенный на интервале [a;b], с абсолютной погрешностью Е. Определить число итераций, необходимое для нахождения корня.
Отрезок: [0;3]
Точность: E=10^-3
Функция: https://www.cyberforum.ru/cgi-bin/latex.cgi?f(x)=3sin sqrt x+0.35x-3.8
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
#include "math.h"
#include <iostream>
#include <cmath>
 
using namespace std;
 
double GetX(double x0)
{
    return (3*sin(sqrt(x0))-3.8)/0.35; // Откуда я это взял? Выразил Х 
}
 
 
int main()
{
    double a = 0; 
    double b = 3;
    double e = pow(10.0, -3.0); //точность
 
    int n = 0;
 
    double x0 = (a + b) / 2; //делю отрезок пополам
    double x1;
    double q;
 
    do
    {   
        x1 = GetX(x0);
 
        n++;
 
        q = abs(x1 - x0); 
 
        printf("\nq = %lf", q); 
 
        x0 = x1;
 
    } while (q > e);
 
    cout<<endl<<endl<<"X1= "<< x1 << endl<< "n=" << n <<endl<<endl;
    system("pause");
    return 0;
}
Итог: #INF- т.е. бесконечность. Подскажите где я ошибся? Может быть алгоритм? Может быть формула? Просидел несколько часов, нашел только то что при 2ой итерации цикла функция sqrt принимает отрицательное значение. Сильно сомневаюсь в формуле, а именно в том правильно ли я написал функцию GetX(double x0), с математической точки зрения.

Ссылка на задание (Вариант №2), там есть алгоритм решения(блок-схема и словесное описание), может быть я что то упустил. Очень нуждаюсь в вашей помощи!
Ссылка удалена
lab03_1.pdf

Прошу не кидать ссылки на похожие темы т.к. мне нужно реализовать именно этот алгоритм.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.04.2018, 02:25
Ответы с готовыми решениями:

Вычислить методом итераций корень уравнения
Вот сижу, ломаю голову, понимаю что самой это сделать не получится, а скоро сдавать, поэтому прошу...

Найти корень уравнения методом последовательных итераций.Второй корень вычисляет неверно
Задание:Написать программу для вычисления методом последовательных итераций уравнения x=Aexp(-x)....

Найти корень уравнения методом итераций
Нужно написать программу, которая будет находить корень уравнения x^3+2x^2+x-1=0 методом итераций....

Найти корень уравнения методом последовательных итераций
Задание:Написать программу для вычисления методом последовательных итераций уравнения x=Acos(x)....

2
1453 / 828 / 216
Регистрация: 10.02.2018
Сообщений: 3,443
13.04.2018, 10:53 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
#include <iostream>
#include <cmath>
#include <clocale>
 
using namespace std;
 
double f ( double x )
{
    return ( 3 * sin(pow(x,0.5)) + 0.35 * x - 3.8);
}
 
double fi ( double x )
{
    return ( x - f (x) );
}
 
int Iteration ( double *x, double eps )
{
 int k = 0; double x0;
  
 do
   {
    x0=*x;
    *x= fi(x0);
    k++;
   }
 while ( fabs ( x0-*x ) >= eps );
 
return k;
}
 
int main ( )
{
    double A, B, X;
    double ep = 0.001; //Точность вычислений.
    int K;
 
    setlocale(LC_ALL, "");
 
    cout << "Введите левую границу a=";
    cin >>A; //Интервал изоляции корня.
 
    cout << "Введите правую границу b=";
    cin >>B;
 
    cout << endl;
    cout <<"Решение уравнения 3sin(x ^ 0.5) + 0.35x - 3.8 = 0 " << endl;
    cout << endl;
 
    X=A;
    K=Iteration (&X, ep );
 
    cout <<"Найденное решение x = " << X << endl;
    cout <<"Количество итераций k=" << K <<endl;
 
    return 0;
}
Результат:
Кликните здесь для просмотра всего текста
Методом итераций вычислить корень уравнения вида f(x)=0
1
1453 / 828 / 216
Регистрация: 10.02.2018
Сообщений: 3,443
13.04.2018, 11:25 3
Вариант № 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
#include <iostream>
#include <cmath>
#include <clocale>
 
using namespace std;
 
double f ( double x )
{
    return (3.8 - 3 * sin(pow(x,0.5)))/ (0.35);
}
 
int Iteration ( double *x, double eps )
{
 int k = 0; double x0;
  do
   {
    x0=*x;
    *x= f(x0);
    k++;
   }
 while ( fabs ( x0-*x ) >= eps );
 
return k;
}
 
int main ( )
{
    double A, B, X;
    double ep = 0.001; //Точность вычислений.
    int K;
 
    setlocale(LC_ALL, "");
 
    cout << "Введите левую границу a=";
    cin >>A; //Интервал изоляции корня.
 
    cout << "Введите правую границу b=";
    cin >>B;
 
    cout << endl;
    cout <<"Решение уравнения 3sin(x ^ 0.5) + 0.35x - 3.8 = 0 " << endl;
    cout << endl;
 
    X=(A + B) / 2;
    K=Iteration (&X, ep );
 
    cout <<"Найденное решение x = " << X << endl;
    cout <<"Количество итераций k=" << K <<endl;
 
    return 0;
}
Результат:
Кликните здесь для просмотра всего текста
Методом итераций вычислить корень уравнения вида f(x)=0
1
13.04.2018, 11:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.04.2018, 11:25
Помогаю со студенческими работами здесь

Численное решение уравнения вида x=f(x) методом последовательных приближений(итераций)
Доброго времени суток.Хотелось бы найти какую-нибудь программу,если не сложно,то напишите...

Вычислить методом Ньютона корень уравнения
Уважаемый программисты,помогите пожалуйста вот такую курсовую задали,я не то что на с++,а просто...

Вычислить корень уравнения методом Ньютона
Добрый день! Помогите пожалуйста вычислить корень уравнения f(x) = 0 для функции x*cos(x)=0...

Вычислить методом Ньютона корень уравнения
Помогите, пожалуйста, написать программу, вычисляющую методом Ньютона: sinx - x + 0,5 = 0, интервал...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru