Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 03.11.2021
Сообщений: 14

Метод простых итераций c конкретным диапазоном значений

26.09.2023, 16:18. Показов 323. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Нужно сделать такое вот задание:

Найти корень нелинейного уравнения с конкретной границей значений

f(x) = x^3 + 3 * x^2 - 3, x лежит на [-3; -2,5], метод итераций

Сделал програму след. вида, но ответ в результате выходит не -2,53, а просто -3, поэтому прилагаю код снизу.

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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;
using static System.Math;
 
namespace ConsoleApplication
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private double F(double x) => Pow(x, 3) + 3 * Pow(x, 2) - 3;
 
        private double D_F(double x) => Pow(3 * x, 2) + 6 * x;
 
        private double F_iter(double x) => (x - 2) / (D_F(a) + D_F(b)) * F(x);
 
        private void методИтерацийToolStripMenuItem_Click(object sender, EventArgs e)
        {
            groupBox1.Visible = false;
            groupBox2.Visible = true;
            double a1 = double.Parse(textBox1.Text);
            double b1 = double.Parse(textBox2.Text);
            double eps = double.Parse(textBox3.Text);
            double x0 = 0, x1 = 0;
            int iter = 0;
            bool error = false;
            listBox1.Items.Clear();
            chart1.Series.Clear();
            Series series = chart1.Series.Add("Y(x)");
            series.ChartType = SeriesChartType.Spline;
            listBox1.Items.Add("Метод простой итераций");
            do
            {
                x1 = F(x0);
                iter++;
                if (Abs(x1 - x0) >= eps && iter == 1000)
                {
                    error = true;
                    break;
                }
                x0 = x1;
            }
            while (Abs(x0 - F(x0)) > eps);
            if (error)
            {
                listBox1.Items.Add($"Не найдено");
            }
            else
            {
                listBox1.Items.Add($"Ответ: X = {x1.ToString("F3")}, Итераций пройдено = {iter.ToString("F3")}");
                textBox4.Text = x1.ToString("F5");
            }
        }
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.09.2023, 16:18
Ответы с готовыми решениями:

Метод простых итераций
Помогите пожалуйста дописать код...решение системы уравнений методом простых итераций static void Main(string args) { ...

Метод простых итераций
Всем привет. Нужно сделать такое задание: Найти корень уравнения с точностью до третьего знака после запятой. х3 +2 х + 5 = 0 ...

Метод простых итераций
Нужно найти корни уравнения f(x) методом простых итераций. У меня получается зацикливание и значения уходят в Infinity. Как можно это дело...

2
5 / 3 / 2
Регистрация: 02.07.2017
Сообщений: 112
26.09.2023, 22:37
TheWeekays, а почему вы решили, что программа в ответе должна выводить -2,53?
В качестве ответа выводится x1, который вычисляется в методе F(x0), где вы объявили x0=0, т.е. F(x0) = -3.
Проверьте, что вы упустили, например метод F_iter у вас нигде не вызывается...
1
 Аватар для Doomov
1056 / 335 / 119
Регистрация: 28.11.2020
Сообщений: 1,066
27.09.2023, 13:39
Сделал вариант для консоли, переделать не сложно
Методы...
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/// <summary>
/// Метод. Вычисляет значение функции f(x) = x^3 + 3x^2 - 3.
/// </summary>
/// <param name="x">Аргумент функции.</param>
/// <returns>Значение функции f(x).</returns>
static double Function (double x) => Math.Pow (x, 3) + 3 * Math.Pow (x, 2) - 3;
 
/// <summary>
/// Метод. Выполняет одну итерацию метода итераций для решения уравнения f(x) = 0.
/// </summary>
/// <param name="x">Текущее значение x.</param>
/// <returns>Следующее значение x.</returns>
static double IterationMethod (double x) => x - Function (x) / Derivative (x);
 
/// <summary>
/// Метод. Вычисляет производную функции f(x) = x^3 + 3x^2 - 3.
/// </summary>
/// <param name="x">Аргумент функции.</param>
/// <returns>Значение производной функции f'(x).</returns>
static double Derivative (double x) => 3 * Math.Pow (x, 2) + 6 * x;
В проге...
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
    double a = -3; // начало интервала
    double b = -2.5; // конец интервала
    double epsilon = 0.0001; // точность
    int maxIterations = 100; // максимальное количество итераций
 
    // Проверяем, есть ли корни на заданном интервале, используя теорему Больцано-Коши
    if (Function (a) * Function (b) > 0)
    {
        Console.WriteLine ("Корни не существуют на заданном интервале [-3, -2.5].");
        return;
    }
 
    // Выбираем начальное значение внутри интервала
    double x0 = (a + b) / 2;
 
    double x = x0;
    int iterations = 0;
 
    while (Math.Abs (Function (x)) > epsilon && iterations < maxIterations)
    {
        x = IterationMethod (x);
        iterations++;
    }
 
    if (Math.Abs (Function (x)) <= epsilon)
    {
        Console.WriteLine ($"Корень уравнения: {x:f3}");
        Console.WriteLine ($"Количество итераций: {iterations}");
    }
    else
    {
        Console.WriteLine ("Не удалось найти корень на заданном интервале [-3, -2.5].");
        Console.WriteLine ($"Количество итераций: {iterations}");
    }
Постарался все расписать. Далее сами
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.09.2023, 13:39
Помогаю со студенческими работами здесь

Метод простых итераций
Нужно дописать прогу для примера в закрепе using System; namespace LabSpaceClub { class Program { static void...

Метод простых итераций
мне нужно разобраться в методе простых итераций и реализовать его на C#, есть вот такая статейка, говнокод там конечно жуткий, поэтому я...

Метод дихотомии и простых итераций
Найти приближенное решение уравнения численными методами: 1) дихотомии; 2) простых итераций;

Метод простых итераций нелинейных уравнений
Помогите довести код до ума. using System; using System.Collections.Generic; using System.Linq; using System.Text; using...

Метод простых итераций (решение уравнения)
Здравствуйте уважаемые ! Срочно нужна Ваша помощь, нам по ЧМ задали написать программу. Нужно решить уравнение: X*X*X-2*X-3=0, 1....


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru