Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/34: Рейтинг темы: голосов - 34, средняя оценка - 4.79
0 / 0 / 0
Регистрация: 12.02.2018
Сообщений: 5

Приближенное решение уравнений методом половинного деления

12.02.2018, 10:36. Показов 6315. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет. Нужно создать программу в Pascal для решения вот этого уравнения: sin(x-0.5)-2x+0.5=0. Помогите, пожалуйста!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.02.2018, 10:36
Ответы с готовыми решениями:

Численное решение нелинейных алгебраических уравнений методом половинного деления
Численное решение нелинейных алгебраических уравнений методом половинного деления уравнение вот такое x=exp(-x);

Решение нелинейного уравнения методом половинного деления
Задание следующее: "вычислить первый положительный корень уравнения F(x)=0 с заданной погрешностью e (e=10^(-3)/10^(-6)) на интервале...

Отделение и уточнение корней нелинейных уравнений. Метод половинного деления(Проб)
Помогите исправить ошибку, пожалуйста. Определение и уточнение корней нелинейных уравнений. Уравнение: x3 + 3x2 - 8x - 3 = 0 ...

7
Почетный модератор
 Аватар для Puporev
64311 / 47608 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
12.02.2018, 10:45
Посмотрите похожие темы внизу страницы, если мало посмотрите в поиске по разделу Паскаль с ключевыми словами Метод половинного деления, или Метод дихотомии.
0
Модератор
10153 / 5490 / 3371
Регистрация: 17.08.2012
Сообщений: 16,782
12.02.2018, 13:01
Лучший ответ Сообщение было отмечено wot_e25_1991 как решение

Решение

Корень уравнения единственный, приблизительно x=0.018401997104918...
Pascal Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function f(x: real): real;
begin
  f := sin(x - 0.5) - 2 * x + 0.5
end;
 
const
  eps = 1e-15;
 
var
  a, b, c: real;
 
begin
  a := -1;
  b := 1;
  repeat
    c := (a + b) / 2;
    if f(c) * f(b) > 0
      then b := c
      else a := c
  until b - a < eps;
  write('x = ', a:0:15)
end.
1
0 / 0 / 0
Регистрация: 12.02.2018
Сообщений: 5
12.02.2018, 14:19  [ТС]
Спасибо тебе большое, но я изначально не верно задание расписал. Там идет так:

Задание:
Отделите корни данного уравнения и уточните их методом половинного деления с точностью до е=0,5*10^-4
Потом уже sin(x-0.5)-2x+0.5=0
И далее:
1. Отделите графически все корни уравнения f(x) = 0 так, чтобы на отрезках изоляции корней функция f(x) удовлетворяла условиям метода половинного деления.
2. Выполните один шаг метода для одного из корней вручную и проверьте условие окончания вычислений.
3. Составьте программу уточнения корня с точностью до е, выводящую результаты в таблицу:

n an bn En
.. ... ... ...

где аn, bn — концы вложенных отрезков, Еn — их длины.
4. Найдите все приближенные корни уравнения и выпишите их с верными значащими цифрами.
0
Почетный модератор
 Аватар для Puporev
64311 / 47608 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
12.02.2018, 14:31
Вам же написали что это уравнение имеет единственный корень.
0
0 / 0 / 0
Регистрация: 12.02.2018
Сообщений: 5
12.02.2018, 14:42  [ТС]
Я изначально просто уравнение написал, без дополнительных действий. Если Вы считаете, что этот код конечный, тогда я не буду спорить и просто скажу "Спасибо" человеку, который помог мне!
0
Модератор
10153 / 5490 / 3371
Регистрация: 17.08.2012
Сообщений: 16,782
12.02.2018, 15:18
Лучший ответ Сообщение было отмечено wot_e25_1991 как решение

Решение

Цитата Сообщение от wot_e25_1991 Посмотреть сообщение
Отделите корни данного уравнения
Что подразумевается под этой фразой, не постигаю. Может, так:

Разделим функцию на линейную и нелинейную части f1(x) и f2(x).

Корень уравнения f1(x)=-2x+0.5 - единственный (потому что функция - прямая, не параллельная оси абсцисс), и равен x0=0.25 (При y=0 получим x=0.5/2).

Модуль скорости роста функции f1(x)=-2x+0.5 при любом значении аргумента больше модуля скорости роста функции f2(x)=sin(x-0.5), обе функции непрерывны, следовательно, функция f(x)=sin(x-0.5)-2x+0.5 не имеет локальных экстремумов, и поэтому имеет только один корень, как и функция f1(x)=-2x+0.5.

Модуль функции f2(x) не превосходит 1, следовательно, корень уравнения sin(x-0.5)-2x+0.5=0 в любом случае будет находиться в интервале [-0.25; 0.75].
Подробнее:
sin(x) = -1, тогда получаем -1-2x+0.5=0, откуда x >= -0.25
sin(x) = 1, тогда получаем 1-2x+0.5=0, откуда x <= 0.75

Всё, корень локализован.
Цитата Сообщение от wot_e25_1991 Посмотреть сообщение
1. Отделите графически ...
Это я не умею: с графикой в Pascal ABC не дружу. Если имеется ввиду построить график на бумажке - стройте. Или найдите какую-нибудь программу для построения графиков, Advanced Grapher, например, пускай он и строит.
Цитата Сообщение от wot_e25_1991 Посмотреть сообщение
2. Выполните один шаг метода ...
Выполняйте, проверяйте, делайте выводы. Программа ниже, должно получиться первая и вторая строка таблицы, дополненные значениями f(x) на границах текущего интервала.
Цитата Сообщение от wot_e25_1991 Посмотреть сообщение
3. Составьте программу уточнения корня ...
Чуть модифицируем, и...
Pascal Скопировано
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
function f(x: real): real;
begin
  f := sin(x - 0.5) - 2 * x + 0.5
end;
 
const
  eps = 0.5e-4;
  hor = '+-----+-----------+-----------+-----------+';
 
var
  an, bn, cn, en: real;
  n: integer;
 
begin
  an := -0.25;
  bn := 0.75;
  n := 1;
  writeln(hor);
  writeln('|  n  |     an    |     bn    |     en    |');
  writeln(hor);
  repeat
    en := bn - an;
    writeln('|', n:4, ' |', an:10:6, ' |', bn:10:6, ' |', en:10:6, ' |');
    cn := (an + bn) / 2;
    if f(cn) * f(bn) > 0
      then bn := cn
      else an := cn;
    inc(n)
  until en < eps;
  writeln(hor);
  write('x = ', an:0:5)
end.
Цитата Сообщение от wot_e25_1991 Посмотреть сообщение
4. Найдите все приближенные корни
Это действие делает программа выше. Находит "весь приближённый корень" .
1
0 / 0 / 0
Регистрация: 12.02.2018
Сообщений: 5
12.02.2018, 15:43  [ТС]
График был построен, просто не сказал

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

Уравнение методом половинного деления 1+Cos(x)/(3-Sin(x)-0.5)
Function f(x As Single) As Single f=1+Cos(x)/(3-Sin(x)-0.5) End Functioin Sub решениеуравнения() Dim x As Integer, y As Integer,...

Найти корень уравнения методом половинного деления
Найти корень уравнения \cos x-\sqrt{x}=0 методом половинного деления с точностью Е=0.0001.

Приближенное решение алгебраических и трансцендентных уравнений
Помогите пожалуйста!

Реализовать поиск корня методом половинного деления.(Рекурсия)
Здравствуйте подскажите как решить задачку Реализовать поиск корня методом половинного деления.

Приближенное вычисление дифференциальных уравнений методом Эйлера
приближенное вычисление дифференциальных уравнений методом Эйлера


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Не удержался от оценки концепции двигателя Стирлинга.
Hrethgir 03.04.2025
Сколько не пытался - она выдавала правильные схемы, причём случайно рисовала горячие области в середине, холодные по краям, трубки с краёв в низ и магнит в соединяющей, но при этой выдавала описание. . .
Метод с двумя буферами (или double buffering) или ping-pong buffering
Hrethgir 02.04.2025
Из ответов LM модели. Метод, который предполагает использование двух массивов для хранения промежуточных результатов сложения векторов, обычно применяется в сценариях, где необходимо минимизировать. . .
На любовном киберфронте
Alexander-7 01.04.2025
Недавно на одном малоизвестном сайте знакомств мною заинтересовалась девушка: «Текст немного странный. Но, судя по адресу почты, иностранка», – подумал я. Поколебавшись пару суток, я ответил ей:. . .
Как работает Node.js изнутри
run.dev 29.03.2025
Node. js изменил подход к разработке веб-приложений, позволив использовать JavaScript не только на стороне клиента, но и на сервере. Созданный в 2009 году Райаном Далем, этот открытый,. . .
Моки в Python: Mock Object Library
py-thonny 29.03.2025
Тестирование кода требует особого подхода, когда речь идёт о компонентах, взаимодействующих с внешним миром. Мы часто сталкиваемся с непредсказуемостью HTTP-запросов, чтением данных из базы или. . .
JavaScript: Управление памятью и улучшение производительности
run.dev 29.03.2025
В отличие от низкоуровневых языков программирования, JavaScript не требует ручного выделения и освобождения памяти. Здесь работает автоматический сборщик мусора, который определяет, какие объекты. . .
Мультитенантная архитектура со SpringBoot и PostgreSQL
ArchitectMsa 29.03.2025
SaaS-приложения редко обслуживают одного клиента и обычно они должны поддерживать множество организаций, каждая из которых работает в своём изолированном пространстве. Мультитенантная архитектура. . .
std::span в C++: Производительность и лучшие практики
NullReferenced 28.03.2025
std::span — одно из самых недооценённых нововведений стандарта C++20, которое радикально меняет подход к работе с непрерывными последовательностями данных. По сути, это невладеющее представление. . .
Многопоточность в C#: Threadpool
UnmanagedCoder 28.03.2025
Пул потоков в C# — это коллекция заранее созданных и готовых к использованию потоков, которые находятся в распоряжении приложения. Вместо того чтобы создавать и уничтожать потоки для каждой небольшой. . .
Вопросы на собеседованиях по микросервисам
ArchitectMsa 27.03.2025
Работодатели ищут не просто разработчиков, знающих базовые концепции, а специалистов, разбирающихся в тонкостях масштабирования, отказоустойчивости и производительности. Сейчас на первый план выходят. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер