С Новым годом! Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/25: Рейтинг темы: голосов - 25, средняя оценка - 4.52
1 / 1 / 0
Регистрация: 25.01.2010
Сообщений: 73
1

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

27.04.2015, 03:47. Показов 4681. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Составить программу для нахождения корня уравнения методом итерации с точностью ε=0,001.
https://www.cyberforum.ru/cgi-bin/latex.cgi?{x}^{4}-4.1{x}^{3}+{x}^{2}-5.1x+4.1=0
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.04.2015, 03:47
Ответы с готовыми решениями:

Написать программу для решения уравнения методом итерации
Для уравнения приведенного ниже, написать программу в pascal для решения методом итерации,...

Проверить программу нахождения корня уравнения
Народ нужна проверка по И-циклам. Буду очень признателен const a=0; b=0.8; // начало и...

Найти ошибки в программе для нахождения корня уравнения
Помогите пожалуйста, не пойму в чём ошибки: 2)Составить программу для нахождения корня уравнения...

Составить программу для решения уравнения f(x)=0 на отрезке [A,B} с точностью Е методом деления отрезка попола
Помогите подставить в исходник математическое уравнение Сам исходник я благо нашел на просторах...

3
Модератор
10065 / 5407 / 3353
Регистрация: 17.08.2012
Сообщений: 16,550
27.04.2015, 13:11 2
Цитата Сообщение от Neocosmo Посмотреть сообщение
для нахождения корня
Который из корней найти: x=0.68233 или x=4.1?
0
1 / 1 / 0
Регистрация: 25.01.2010
Сообщений: 73
27.04.2015, 14:21  [ТС] 3
Написано что надо найти корень.А так не известно.Мне хотя бы литературу по этой теме прочитать.Когда элементарную математику "переводят" в паскаль я то ещё понимаю, а когда итерации, интегралы и прочее-уже плыву.
0
Модератор
10065 / 5407 / 3353
Регистрация: 17.08.2012
Сообщений: 16,550
27.04.2015, 21:03 4
А чё тут плыть-то? Вот теория: Википедия - Метод простой итерации.

Зададимся интервалом грубого поиска корней. Пусть будет -10 <= x <= 10.

Зададимся шагом грубого поиска корней. Шаг должен быть таким, чтобы он не захватывал сразу несколько корней. Примем для удобства h=1.

Пробежимся по интервалу с шагом h, вычисляя значение функции в точках xi и xi+h. Если знаки функции в этих точках противоположны, значит, на подинтервале xi<=x<=xi+h есть корень.

Так как задан метод простой итерации, в качестве сжимающего отображения будем использовать постоянную. В качестве таковой прямо-таки просится использовать число, обратное тангенсу наклона прямой, проходящей через крайние точки подинтервала: (xi, f(xi)) и (xi+h, f(xi+h)). И у нас получится:

тангенс угла наклона прямой (помним, у нас h=1)

https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
k = \frac{f(xi+h)-f(xi)}{xi+h-xi}=\frac{f(xi+h)-f(xi)}{h}=f(xi+h)-f(xi)<br />

сжимающее отображение

https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
\lambda _0=\frac{1}{k}=\frac{1}{f(xi+h)-f(xi)}<br />

В качестве начального приближения примем x=xi. Очередное приближение будет

https://www.cyberforum.ru/cgi-bin/latex.cgi?x1=x-\lambda _0f(x)

и, если модуль разности между соседними приближениями < eps, то очередной корень найден с точностью eps.

Ну и, пишем, чё тут писать-то, всё по Википедии...
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
33
34
35
36
37
function f(x: real): real;
begin
  f := (((x - 4.1) * x + 1) * x - 5.1) * x + 4.1 {функция}
end;
 
const eps = 0.001; {точность}
      d = trunc(-ln(eps) / ln(10)); {количество значащих цифр после десятичной точки}
      xs = -10; {начало интервала поиска корней}
      xe = 10 - 1; {конец интервала поиска корней минус шаг}
      {шаг интервала поиска корней примем за 1 для удобства}
 
var x, x1, lambda: real;
    xi, n: integer;
 
begin
  writeln('Roots of y=x^4-4.1x^3+x^2-5.1x+4.1, precision = ', eps:0:d);
  n := 1; {просто номер очередного корня}
  {цикл поиска корней}
  for xi := xs to xe do 
    if f(xi) * f(xi + 1) <= 0 {если разного знака, то на интервале xi..xi+1 есть корень}
      then begin
        {находим отображение (лямбда)}
        lambda := 1 / (f(xi + 1) - f(xi)); {надо ещё разделить знаменатель на шаг по x, но шаг у нас = 1}
        x1 := xi; {начальное приближение}
        {цикл уточнения корня}
        repeat
          x := x1; {запоминаем прошлое приближение}
          x1 := x - lambda * f(x) {ищем очередное приближение корня}
        until abs(x1 - x) < eps; {если разница между соседними приближениями < eps, корень найден}
        {конец цикла уточнения корня}
        {печатаем найденный корень с требуемой точностью}
        writeln('x', n, ' = ', x1:0:d);
        inc(n)
      end; 
  {конец цикла поиска корней}
  readln
end.
Насчёт функции - не пугайтесь. Это Ваша функция, просто я иксы за скобы повыносил, чтобы степени не громоздить.
Выпендрёж в виде количества цифр после десятичной точки (константа d) - можете выкинуть, хотя там всё просто: целая часть десятичного логарифма числа (положительного, естественно) равна количеству значащих разрядов минус 1 при логарифме от числа большего либо равного 1, и позиции первой значащей цифры, отличной от нуля, после десятичной точки (правда, с обратным знаком), если число меньше 1. Вот последний случай я и использовал, для того, чтобы при смене eps не приходилось выискивать в программе и менять число выводимых после десятичной токи знаков. Можете, кстати, и форматированный вывод тоже выкинуть, ну, будут числа печататься в научной нотации, что такого. Ну и, после изучения программы или перед её сдачей лишние (или вообще все) комментарии выкиньте к лешему. Ну и, может, ещё какие украшения заодно. Ну там, первый writeln, и номер корня n. Тогда лаконично получится.
0
27.04.2015, 21:03
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.04.2015, 21:03
Помогаю со студенческими работами здесь

Нахождение корня методом простой итерации
Доброе время суток всем. Помогите разобраться пожалуйста! Мне нужно получить значение переменной...

Составить программу нахождения решения линейного уравнения ах + b = 0
помогите поправить задачу.Составить программу нахождения решения линейного уравнения ах + b = 0,...

Составить программу вычисления корня с погрешностью ε=0,0001 методом половинного деления
Составить программу вычисления корня с погрешностью ε=0,0001 методом половинного деления

Найти корень уравнения методом итерации
Здравствуйте. помогите пожалуйста надо Найти корень уравнения методом итерации с точностью 0.001 ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
Что такое NullReferenceEx­­­ception и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
Использование GraphQL в Go (Golang)
InfoMaster 08.01.2025
Go (Golang) является одним из наиболее популярных языков программирования, используемых для создания высокопроизводительных серверных приложений. Его архитектурные особенности и встроенные. . .
Что лучше использовать при создании класса в Java: сеттеры или конструктор?
Alexander-7 08.01.2025
Вопрос подробнее: На вопрос: «Когда одновременно создаются конструктор и сеттеры в классе – это нормально?» куратор уточнил: «Ваш класс может вообще не иметь сеттеров, а только конструктор и геттеры. . .
Как работать с GraphQL на TypeScript
InfoMaster 08.01.2025
Введение в GraphQL и TypeScript В современной разработке веб-приложений GraphQL стал мощным инструментом для создания гибких и эффективных API. В сочетании с TypeScript, эта технология. . .
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru