Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/34: Рейтинг темы: голосов - 34, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 12.01.2019
Сообщений: 124

Метод простых итераций с заданной точностью на С++

24.02.2019, 08:47. Показов 7102. Ответов 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
#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;
}
Вложения, ожидающие проверки
Тип файла: png 13.PNG
Тип файла: png 12.PNG
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.02.2019, 08:47
Ответы с готовыми решениями:

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

Метод простых итераций
Помогите с написанием программы на С++, нужно решить СЛАУ методом простых итераций. с точностью 0,0001. Мой код #include...

Метод простых итераций
Дана функция 1.4 Cos - Log=0 Ее надо преобразовать к виду ф(x)=x, я не совсем понимаю как это сделать нужно написать программу в C++...

8
24.02.2019, 09:38
 Комментарий модератора 
П.5.18.Правил
Запрещено размещать задания и решения в виде картинок и других файлов с их текстом.
Переписывайте!
0
0 / 0 / 0
Регистрация: 12.01.2019
Сообщений: 124
24.02.2019, 09:42  [ТС]
Задание:
1)Написать вычислительную программу на языке программирования C++ для решения системы двух нелинейных уравнений методом простых итераций с заданной точностью.
2)С использованием написанной программы найти численно минимум заданной функции двух переменных ��(��,��) в указанной области путем численного решения системы двух нелинейных уравнений, получающихся на основе необходимых условий экстремума.

Уравнение:
1−(x2−1)(y2−1)(x*expy+y*expx),диапазон [0,1]×[0,1] ,погрешность 10-5
0
694 / 491 / 251
Регистрация: 10.06.2016
Сообщений: 2,361
24.02.2019, 11:01
Studentosi, хорошая практическая задачка из области оптимизации. Необходимые условия экстремума:

https://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{\partial f}{\partial x}=0
https://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{\partial f}{\partial y}=0
где f(x,y) - ваша функция. Продифференцировав и приравняв 0, получите систему из двух нелинейных уравнений относительно х и у. Далее нужно будет эту систему представить в виде:

https://www.cyberforum.ru/cgi-bin/latex.cgi?x={f}_{1}(x,y)
https://www.cyberforum.ru/cgi-bin/latex.cgi?y={f}_{2}(x,y)
Это собственно и будут расчетные формулы для итерационного процесса, начиная с какого-то начального приближения https://www.cyberforum.ru/cgi-bin/latex.cgi?\left({x}_{0},{y}_{0} \right). Код, конечно, придется подкорректировать под эту задачу.

Добавлено через 11 минут
Должно получиться приблизительно так x=y=0.525427559791034
1
0 / 0 / 0
Регистрация: 12.01.2019
Сообщений: 124
25.02.2019, 20:37  [ТС]
Спасибо,попыталась исправить код,вроде бы получилось нормально,но возникла проблема того,что функция расходится,хотя должна сходится к точке приблизительно (0.5,0.5).В чем проблема-понять не могу,вроде бы все правильно,но числа все равно получаются запредельные

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
#include <iomanip>
#include <iostream>
using namespace std;
 
 
inline double fx(double x, double y)
{
    return (-((x*x - 1)*(exp(y) + y * exp(x))) / (2 * x*exp(y) + 2 * y * exp(x)));
}
 
inline double gy(double x, double y)
{
    return (-((y*y - 1)*(x*exp(y) + exp(x))) / (2 * x*exp(y) + 2 * y * exp(x)));
}
 
int main()
{
    double x, y, xn, yn;
    double eps;
    cout << "Enter initial root value x= ";
    cin >> x;
    cout << "Enter initial root value y= ";
    cin >> y;
    cout << endl;
    cout << "Enter error of calculation : ";
    cin >> eps;
    for (double iter = 1; (eps < fabs(fx(x, y))) && (eps < fabs(gy(x, y))); iter = iter + 1)
    {
        system("cls");
        //*Итераций может быть очень много, поэтому рекомендую забыть
        //о целых а использовать дабл как счётчик, хотя в принципе если 
        //решение не нашли за 10-100 итераций то решения для данного коэффициента
        //при f(x,y) в g(x,y) нет и надо его менять
        cout << "Iteration : " << setprecision(0) << iter << endl;
        cout << "x = " << x << endl;
        cout << "y = " << y << endl;
        cout << "f(x,y) = " << fx(x, y) << endl;
        cout << "g(x,y) = " << gy(x, y) << endl;
        xn = x;
        yn = y;
        x -= fx(xn, yn);
        y -= gy(xn, yn);
 
        //system("pause");
 
    }
    system("pause");
    return 0;
}
0
694 / 491 / 251
Регистрация: 10.06.2016
Сообщений: 2,361
25.02.2019, 22:00
Studentosi, в производных не ошиблись? Не можете привести результат дифференцирования?
0
0 / 0 / 0
Регистрация: 12.01.2019
Сообщений: 124
26.02.2019, 17:29  [ТС]
slava_psk,Да, дифференцирование проводила в Мэйпл,прикрепляю скриншот
Миниатюры
Метод простых итераций с заданной точностью на С++  
0
694 / 491 / 251
Регистрация: 10.06.2016
Сообщений: 2,361
26.02.2019, 17:44
Studentosi, да, при таких итерационных формулах процесс не сходится. Можно попробовать выразить x,y по другому. Например, выразить https://www.cyberforum.ru/cgi-bin/latex.cgi?{e}^{x}, {e}^{y}, а потом прологарифмировать. Сейчас к сожалению очень занят, не могу сам попробовать. Посмотрите теорию, там помнится нужно рассматривать и вторые производные.
0
0 / 0 / 0
Регистрация: 12.01.2019
Сообщений: 124
26.02.2019, 17:46  [ТС]
slava_pskХорошо,сейчас попробую что-нибудь сделать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.02.2019, 17:46
Помогаю со студенческими работами здесь

Метод простых итераций. С/С++
Такое задание: написать алгоритм численного решения нелинейных уравнений методом простых итераций и реализовать его на языке...

Метод простых итераций
Здраствуйте! Нужно методом простой итерации решать такую систему нелинейных уравнений с точностью e=10-4 и найти погрешность. Нашел на...

Метод простых итераций
Необходимо реализовать программно метод простых итерация для решения НУ. к примеру возьмём x^6-3x^2+x-1, интервал изоляции корня . ...

Метод простых итераций
Систему решил ,получилось верно.Возникла одна проблема ,иксы которые я получил перемножить на матрицу. То есть Ax=b --&gt;b=b ...

Метод простых итераций для СЛАУ
Здравствуйте! Пытаюсь реализовать метод простых итераций. Все функции, которые работают нормально, кроме самих итераций. Не могу понять,...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Вот уже год прошел, как у меня домен в reg.ru ...
Etyuhibosecyu 16.04.2026
И ничего они мне не сделали. Если отвязать карту, никакие услуги они не навяжут. Я бы с радостью продлил еще на два года, чтобы не мучиться с временным доменом и меня уже знали по red-star-soft. com,. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача №1: при указании работ (справочник РаботыПоРемонтуСпецтехники),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru