Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
-19 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 20
1

Поиск корня уравнения методом половинного деления с использованием метода Симпсона

06.06.2015, 17:51. Показов 2134. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток.

Есть следующее уравнение:

https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
\int_{0}^{x}\frac{sin(t)}{t}dt=\frac{\pi}{2}\;,\;x \in [0;2\pi]<br />

или

https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
f(x)=\int_{0}^{x}\frac{sin(t)}{t}dt-\frac{\pi}{2}<br />

Нужно найти корень уравнения по методу половинного деления с использованием метода Симпсона (для вычисления интеграла). Так как на отрезке [0;2pi] есть 2 корня уравнения, то, чтобы выполнялось условие сходимости метода Симпсона, мы сократили отрезок до [0;3] (один корень).

Код в MatLab получился следующий (использовал m-файл):

Matlab M
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
% Нахождение корня уравнения методом половинного деления, используя
% численное интегрирование по методу Симпсона
 
disp('Результаты:'), disp(' ')
 
% Исходные данные (пределы и погрешность)
 
afix = 0; bfix = 3; e = 0.001;
 
podint = 'sin(t)/t'; % задание подынтегрального выражения
 
a = afix;
b = bfix;
c = (a + b)/2;
 
while abs(b - a) <= e;
    if (quad(podint, afix, c, e) - 1.57) * (quad(podint, afix, b, e) - 1.57) < 0;
        a = c;
    else
        b = c;
    end
    c = (a + b)/2;
end
 
disp('Корень уравнения'), disp(c)
Естественно, код выдавал совершенно не тот результат, который хотелось бы увидеть. Еще один косяком было то, что если а = 0, то результат подынтегральной функции должен быть единицей, так как деление на ноль запрещено, а я не знаю, как это учесть в функции quad!

Преподаватель сказал, чтобы проверку a можно реализовать, если прикрутить функцию в доп файле + заменить функцию quad на quadv (вроде так правильнее будет).

Помогите решить задачу. Если можете еще как-то усовершенствовать алгоритм, то пожалуйста.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.06.2015, 17:51
Ответы с готовыми решениями:

Поиск корня уравнения методом половинного деления и методом хорд
Нужно найти корень уравнения ctg(1,05x)-x^2=0 в отрезке . что-то не получается седлать это методом...

Нахождение корня уравнения методом половинного деления
Вообщем дорогие друзья спасайте. Препод сказал сделать программу которая решает методом половинного...

Вычисление корня уравнения методом половинного деления
Написать модуль исчисления корня уравнения вида: f(x)=0 методом половинного деления. Использовать...

Процедура нахождения корня уравнения методом половинного деления и методом Ньютона
написать программу процедуру для нахождения корня каждого уравнения методом половинного деления и...

1
187 / 192 / 43
Регистрация: 13.05.2013
Сообщений: 709
06.06.2015, 21:51 2
Лучший ответ Сообщение было отмечено andreloster как решение

Решение

Если:
Matlab M
1
while abs(b - a) <= e;
Заменить на:
Matlab M
1
while abs(b - a) >= e;
И quad на quadv, как вам преподаватель советовал.
То всё считает.
1
06.06.2015, 21:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.06.2015, 21:51
Помогаю со студенческими работами здесь

Определение корня любого уравнения методом половинного деления
Определите корень любого уравнения методом половинного деления, помогите пожалуйста

Нахождение корня кубического уравнения методом половинного деления
Вот написал программу для нахождения корня кубического уравнения методом половинного деления, но...

Реализовать поиск корня методом половинного деления
Реализовать поиск корня методом половинного деления.

Для уравнения, методом половинного деления, вычислить значение корня с точностью e=0,0001
Для уравнения, методом половинного деления вычислить значение корня с точностью e=0,0001 cosx-4x=0


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

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