Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
 Аватар для StepFather322
365 / 252 / 113
Регистрация: 07.10.2017
Сообщений: 1,330

Численные методы. Метод половинного деления

05.03.2020, 21:30. Показов 2167. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно различными числовыми методами найти корень функции tan(0.3x+0.4)=x^2
Вопрос скорее всего больше математического характера, но реализовать это все надо в коде.
Я смог реализовать нахождение корня 3 способами : итерации, хорд, Ньютона.
Нужно еще методом половинного деления, но я не понимаю в чем проблема.(уже 3 часа)
Java
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
67
68
69
70
71
72
public class Main {
 
    public static void main(String[] args) {
        Main main = new Main();
        System.out.println(main.iterationsMethod(7, 0.00001));
        System.out.println(main.newtonMethod(1, 0.00001));
        System.out.println(main.hordMethod(1, 10.0, 0.00001));
        System.out.println(main.delenieMethod(1, 10, 0.00001));
    }
 
    double iterationsMethod(double x, double eps) {
        double rez;
        int iter = 0;
        do {
            rez = x;
            x = tan(0.3 * x + 0.4) / x;
            iter++;
        } while (abs(rez - x) > eps && iter < 20000);
        return x;
    }
 
    double newtonMethod(double x, double eps) {
        double f, df;
        int iter = 0;
 
        do {
            f = (tan(0.3 * x + 0.4) / x) - x;
            df = -1 + 0.15 / pow(cos(0.3 * x + 0.4), 2);
            x = x - f / df;
            iter++;
        } while (abs(f) > eps && iter < 20000);
 
        return x;
    }
 
    double hordMethod(double x0, double x1, double eps) {
        double rez = x1;
        double f0;
        double f;
        int iter = 0;
 
        do {
            f = (tan(0.3 * rez + 0.4) / rez) - rez;
            f0 = (tan(0.3 * x0 + 0.4) / x0) - x0;
            rez = rez - f / (f - f0) * (rez - x0);
            iter++;
        } while (abs(f) > eps && iter < 20000);
 
        return rez;
    }
 
    double forDelenie(double x) {
        return (tan(0.3 * x + 0.4) / x) - x;
    }
 
    double delenieMethod(double x0, double x1, double eps) {
        double left = x0;
        double right = x1;
        double x;
        double f;
        int iter = 0;
        do {
            x = (left + right) / 2;
            f = forDelenie(x);
            if (f > 0) right = x;
            else left = x;
            iter++;
        } while (abs(f) > eps && iter < 20000);
        System.out.println(iter + "iter");
        return x;
    }
}
Результат:
Java
1
2
3
4
5
0.8863477933107677
0.8863393160477557
0.8863452458705722
20000iter
10.0
Что не так с последним методом и как исправить?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.03.2020, 21:30
Ответы с готовыми решениями:

Метод бисекции (половинного деления)
Создать иерархию из трех наследующих друг от друга классов:1) класс статической завершенной функции, 2) класс с защищенным методом...

Численные методы решения уравнений- метод половинного деления
Здравствуйте. Мне был дан проект на тему - &quot;Численные методы решения уравнений&quot;. Есть исходные данные к проекту - &quot;Линейное...

Численные методы решения нелинейных уравнений:метод половинного деления
Всем привет! заголовок-тема курсовой. подскажите хотябы с чего начинать?

7
 Аватар для Aviz__
2755 / 2062 / 509
Регистрация: 17.02.2014
Сообщений: 9,491
05.03.2020, 21:42
Лучший ответ Сообщение было отмечено StepFather322 как решение

Решение

StepFather322, ты же опытный уже форумчанин Метод половинного деления
1
485 / 411 / 126
Регистрация: 23.05.2016
Сообщений: 1,653
05.03.2020, 21:50
Что значит утверждение "число Х является корнем уравнения корень с точностью эпсилон?"

Ответ. Если Х0 - корень уравнения и Х находится в эпсилон-окрестности числа Х0, то число Х называется корнем уравнения найденным с точностью эпсилон.

Обратите внимание, значение функции в точке Х не важно, важно что Х достаточно близко от истинного корня.

Вам нужно (во всех методах) не abs(f) c эпсилон сравнивать, а abs(right - left)

Добавлено через 1 минуту
И почему функция forDelenie() не соответствует условию задачи?
1
 Аватар для StepFather322
365 / 252 / 113
Регистрация: 07.10.2017
Сообщений: 1,330
05.03.2020, 22:27  [ТС]
Цитата Сообщение от Aviz__ Посмотреть сообщение
ты же опытный уже форумчанин
Да не то чтобы. Я с другого ресурса копипастил. Похоже, что в последнем методе ошибка.
Sindbad_M, спасибо за объяснение, но я очень и очень слаб в высшей математике. Мне честно нужно просто сделать и сдать
0
 Аватар для Aviz__
2755 / 2062 / 509
Регистрация: 17.02.2014
Сообщений: 9,491
06.03.2020, 08:50
Цитата Сообщение от StepFather322 Посмотреть сообщение
нужно просто сделать и сдать
ошибаешься, если хочешь работать программером. и это не высшая, а самая элементарная математика. например, в штатовских школах касаются Вайвлет анализа...
0
 Аватар для StepFather322
365 / 252 / 113
Регистрация: 07.10.2017
Сообщений: 1,330
06.03.2020, 09:08  [ТС]
Цитата Сообщение от Aviz__ Посмотреть сообщение
если хочешь работать программером
Хочу, но не стремлюсь быть каким то супер гением. Да и спорный вопрос, наверное. Конечно, лучше знать, чем не знать.©
Но все же
0
06.03.2020, 09:28

Не по теме:

Цитата Сообщение от StepFather322 Посмотреть сообщение
не стремлюсь быть
по крайней мере ты осознанно выбираешь трудный путь унижений и страданий...

0
06.03.2020, 10:22

Не по теме:

Цитата Сообщение от StepFather322 Посмотреть сообщение
в высшей математике
эта тема к "высшей математике" если и относится, то весьма условно. Тем более, что у вас уровень факультатива для старших классов.

Тут ведь вот какое дело. На форуме все люди взрослые и понимают, что курса численных методов нет ни на инязе, ни на писхфаке. А есть он там, где специальность имеет какой-никакой естественно-научный уклон. И не важно даже, сами вы эту специальность выбрали или вас заставили. Вы уже там учитесь, это необратимо. Фразы же про слабость в математике ставят вас в положение беременной девушки, которая честно глядя в глаза гинекологу говорит - нет, нет, нет, ничего такого не было, как вы могли подумать! Просто избегайте этой лирики и вас не будут учить жизни.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.03.2020, 10:22
Помогаю со студенческими работами здесь

Численные методы решения нелинейных уравнений: метод половинного деления
Здравствуйте. У меня вот такой вопрос, возможно ли сделать так, чтобы можно было бы вводить уравнения произвольно через edit? на подобии...

Численные методы решения нелинейных уравнений:метод половинного деления(График)
Дали делать курсач по методу половинного деления. Все написал а график не знаю как. Помогите пожалуйста

Численные методы. Решить нелинейное уравнение методом половинного деления
решение нелинейных уравнений. метод половинного деления. 2^x-3x-2=0 Добавлено через 5 часов 13 минут с рисунками Добавлено...

Численые методы решения нелинейных уравнение: метод половинного деления
procedure TForm1.Button1Click(Sender: TObject); var a,b,e,c,x: Extended; function f(x: Extended): Extended; begin ...

Метод половинного деления (метод деления отрезка пополам)
решите нелинейное уравнение в MS Exel. Метод пропорциональных отрезков (комбинированный метод хорд и касательных) ctg1.06x-x2=0


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru