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

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

Войти
Регистрация
Восстановить пароль
 
KorolevaE
2 / 2 / 0
Регистрация: 24.11.2012
Сообщений: 34
#1

метод итераций - C++

04.05.2013, 16:17. Просмотров 982. Ответов 10
Метки нет (Все метки)

x+cos(x^0,52+2)=0; на промежутке [0,5;1], с точностью 0,9892
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.05.2013, 16:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос метод итераций (C++):

Посчитать количество проведенных итераций (метод простых итераций, Pascal -> C++) - C++
перевести из паскаля в С++ program method_of_simple_iteration; uses crt; var a:array of real; b,c:array of real; ...

Метод итераций и метод Зейделя - C++
Здравсвуйте программисты! Спасибо всем за помощь в предыдущих темах, осталась последняя лаба, которую нужно решить по предмету "Численные...

метод итераций с++ - C++
пишите срочно нужна помощь

метод итераций - C++
ребят помогите пжлст решить задачки: 1. Дана целочисленная прямоугольная матрица. Определить количество строк, содержащих хотя бы один...

Метод итераций - C++
#include <iostream> #include <math.h> using namespace std; //#define eps 0.001 void iteration(double **a,double *b,double *x,int n)...

Метод итераций - C++
x*x*x+2*x+6*(log(2+10*sqrt(3)))=0 отрезок: Это сама задача, вот код программы: У меня такой вопрос, решабильно ли данное уравнение...

10
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
04.05.2013, 16:30 #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
#include <math.h>
#include <iostream>
 
using namespace std;
double func (const double &x)
{
    return (x+cos(pow(x,0.52)+2.0));
}
double iterfunc(const double &x)
{
    return(-cos(pow(x,0.52)+2.0));
}
 
int main()
{
    const double eps=0.9892;
    double x=0.75, prevX, prevFunc=0;
    do{
        prevX=x;
        prevFunc=func(x);
        x=iterfunc(x);
    }while((abs(x-prevX)>=eps)&&(abs(prevFunc-func(x))>=eps));
    cout<<x<<endl<<func(x)<<endl;
    system("pause");
}
0
-=ЮрА=-
Заблокирован
Автор FAQ
04.05.2013, 16:53 #3
metaluga145, не чуток не так, в данном случае давался ответ и говорилось о точности ответа (посчитай число цифр после запятой) до 4-го знака после запятой, точность 0,98 - это считай 100% на ошибку
Собственно тот же алгоритм
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
#include <cmath>
#include <iostream>
using namespace std;
 
double f(double x);
double g(double x);
 
int main()
{
    double eps = 0.0001;
    double xn  = 0.5;
    double xk  = 1.0;
    for(double x = (xn + xk) / 2; 0 < fabs(f(x)); x = g(x))
        cout<<"\rx = "<<x<<" f(x) = "<<f(x)<<"\t\t";
    cin.get();
    return 0;
}
 
double f(double x)
{
    return x + cos(pow(x, 0.52) + 2.0);
}
 
double g(double x)
{
    return -cos(pow(x,0.52) + 2.0);
}
0
Миниатюры
метод итераций  
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
04.05.2013, 17:07 #4
-=ЮрА=-, вот я раза 3 перечитал внимательно код,а где там вообще используется переменная eps?
0
-=ЮрА=-
Заблокирован
Автор FAQ
04.05.2013, 17:16 #5
Цитата Сообщение от metaluga145 Посмотреть сообщение
-=ЮрА=-, вот я раза 3 перечитал внимательно код,а где там вообще используется переменная eps?
- вижу я в спешке немного лажанул (спасибо что заметил)
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
eps < fabs(f(x))
- сюда конечно же. Функция оказлось простой и итерационный процесс быстро сошёлся, в любом ином случае получился бесконечный цикл, щас подправлю
0
-=ЮрА=-
Заблокирован
Автор FAQ
04.05.2013, 17:17 #6
Конечно же вот так
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
#include <cmath>
#include <iostream>
using namespace std;
 
double f(double x);
double g(double x);
 
int main()
{
    double eps = 0.0001;
    double xn  = 0.5;
    double xk  = 1.0;
    for(double x = (xn + xk) / 2; eps < fabs(f(x)); x = g(x))
        cout<<"\rx = "<<x<<" f(x) = "<<f(x)<<"\t\t";
    cin.get();
    return 0;
}
 
double f(double x)
{
    return x + cos(pow(x, 0.52) + 2.0);
}
 
double g(double x)
{
    return -cos(pow(x,0.52) + 2.0);
}
0
Миниатюры
метод итераций  
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
04.05.2013, 17:24 #7
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
for(double x = (xn + xk) / 2; eps < fabs(f(x)); x = g(x))
* * * * cout<<"\rx = "<<x<<" f(x) = "<<f(x)<<"\t\t";
судя по вот этому, оно должно выводить после каждой итерации... а почему вывело только один раз?
0
-=ЮрА=-
Заблокирован
Автор FAQ
04.05.2013, 18:13 #8
Цитата Сообщение от metaluga145 Посмотреть сообщение
судя по вот этому, оно должно выводить после каждой итерации... а почему вывело только один раз?
- потому что \r каждый раз позиционирует курсор вначало первой строки а два \t\t вконце затирают хвосты текста(если таковые имелись) от предыдущего вывода
1
isaak
103 / 40 / 9
Регистрация: 17.10.2010
Сообщений: 670
05.05.2013, 12:44 #9
-=ЮрА=- не совсем понятно, а почему double eps = 0.0001 ведь в условии задачи с точностью 0,9892????? заранее огромное спасибо.
0
-=ЮрА=-
Заблокирован
Автор FAQ
05.05.2013, 14:18 #10
isaak, в условии приведен ответ с 4мя значимыми знаками после запятой,т.е макс ошибка не должна превышать 4й знак,т.е составлять не более 0.0001.Обычно на практике ошибку берут еще меньше на 1н разряд,но для текущего задания хватит точности и до 4-го знака.
1
KorolevaE
2 / 2 / 0
Регистрация: 24.11.2012
Сообщений: 34
06.05.2013, 21:26  [ТС] #11
Спасибо большое!
0
06.05.2013, 21:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.05.2013, 21:26
Привет! Вот еще темы с ответами:

Метод итераций - C++
Здравствуйте. Дали вот такое задание: Для заданной функции Y = f(x) на интервале : 1) рассчитать n значений функции с...

Метод итераций - C++
Берется какое то приближенное к решению значение х0 (начальное приближение) и подставляется в итерационную формулу. Полученное по...

метод итераций - C++
x1=3-0.05*x2-0.04*x3 x2=4-0.04*x1+0.07*x3 x3=7-0.02*x1+0.03*x3 написала программу,но с++ выдает ошибку,все перепроверила так и...

Метод итераций - C++
Уравнение 0.1x^2 -xlnx=0 Интервал Метод итераций приближенное значение 1.1183 Задача: Составить структурированную...


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

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

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