IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> метод половинного деления, решение уравнения
сообщение
Сообщение #1


Гость






здарвствуйте, мне нужно решить ур-е х^3 + 2x^2 - 11 = 0 методом половинного деления
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Пионер
**

Группа: Пользователи
Сообщений: 79
Пол: Мужской

Репутация: -  0  +


Мой вариант решения:

program Dihotomia;

uses crt;

var a, b, c, eps, a1, b1: real;
k: integer;
ch: char;

function f(x:real): real;
begin
f:=2*x*x*x-3*x*x-12*x; {Вводим выражение для вычисления функции}
end;

begin
clrscr;
{Вывести условие задачи}
writeln('Решение уравнения "2x^3-3x^2-12x=0" методом дихотомии.');
writeln;
{Ввод исходных данных}
write ('Введите левую границу:'); read(a); {Введите левую границу интервала}
write ('Введите правую границу:'); read(b); {Введите правую границу интервала}
write ('Введите требуемую точность:'); read(eps); {Введите требуемую точность}
writeln;
writeln ('a=', a:3:7); {Вывод значения левой границы интервала}
writeln ('b=', b:3:7); {Вывод значения правой границы интервала}
writeln ('eps=', eps:3:7); {Вывод значения требуемой точности}
writeln;

a1:=a; b1:=b; {Запоминать исходные данные}
k:=0; {Счетчик повторений}

{Проверка введеных значений}
if (a1=b1) then
writeln('Ошибка! Левая часть интервала не должна равняться правой.');
if (a1>b1) then
writeln('Ошибка! Левая часть интервала не должна быть больше правой.');

{Цикл}
while abs(b-a) > eps {Пока условие больше точности...}
do {...выполять}
begin
k:=k+1; {Увел. счетчик на 1}
c:=(a+b)/2; {Узнаем середину интервала}
if f©=0 then {Если функция равно 0, то..}
begin
{... вывести точный корень}
writeln ('Уравнение на интервале (',a1:4:3, '; ',b1:4:3,') имеет точный корень x=', c:4:5);
break; {Прервать вывод, чтобы ответ не повторялся бесконечно}
end;
if f(a)*f©<0 then b:=c; {Если функция а умноженная на функцию с меньше 0, тогда c это b}
if f(a)*f©>0 then a:=c; {Если функция а умноженная на функцию с больше 0, тогда c это a}
end;

{Проверка и вывод значений}
begin
if (f©<>0) and (a1<=b1) then {Если функция c не равна 0 и
левая часть инт-ла меньше или равно правой,
тогда вывести результат, иначе сообщить точный корень}
begin
{Вывод корня на интервале}
writeln ('Уравнение на интервале (',a1:4:7, '; ',b1:4:7,') имеет корень x=', c:4:5);
writeln;
writeln ('Точность ',eps:4:7, ' достигнута за ' ,k, ' шага(ов)', '.');
end;
end;

readkey;

end.




Итак, если я введу диапазон от -10 до -1 и точность, например, 0,001, то примерный корень будет = -1,81134, что верно!
Если от 1 до 10, то корень будет равен 3,31262, что тоже верно!
Если от -1 до 1, то корень будет равен 0, что тоже верно!
Но если я задам диапазон от -10 до 10, то выведится только один корень = 0, что недостаточно для полного ответа, т.к. уравнение 2x^3-3x^2-12x=0 имеет 3 корня! Как сделать так, чтобы программа хотя бы сообщала, что «в данном интервале найдено более одного корня, рекомендуется сузить границы интервала», или выводила все три??? Помогите, пожалуйста
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Гость   метод половинного деления   9.11.2011 14:48
TarasBer   > здарвствуйте, мне нужно решить ур-е х^3 + 2x^…   9.11.2011 14:53
Гость   > здарвствуйте, мне нужно решить ур-е х^3 + 2x…   9.11.2011 15:38
TarasBer   http://markx.narod.ru/div/   9.11.2011 15:57
Гость   Спасибо,но я уже был на этой ссылке...но увы она м…   9.11.2011 16:37
is it illegal to buy lasix onlin   using levitra everyday   8.11.2021 18:48
TarasBer   Тогда я больше ничем не могу помочь. Купите самоуч…   9.11.2011 17:04
мисс_граффити   сам алгоритм метода понятен? то есть вручную этим …   9.11.2011 23:35
Гость   сам алгоритм метода понятен? то есть вручную этим…   11.11.2011 21:33
Shmaniche   Мой вариант решения: program Dihotomia; uses crt…   17.12.2012 23:20
@nto$ka   ну чтобы выводила все три... обычно, с помощью точ…   17.12.2012 23:39
Shmaniche   ну чтобы выводила все три... обычно, с помощью то…   18.12.2012 9:00
@nto$ka   А подробнее можно? Желательно с кодом. Ну с код…   18.12.2012 16:20
Shmaniche   Де-факто, точки экстремума - это нули производно…   18.12.2012 16:36
@nto$ka   Если ты найдешь производную от кубического уравнен…   18.12.2012 20:35
Shmaniche   Если ты найдешь производную от кубического уравне…   19.12.2012 21:28
Гость   Нужно решить нелинейное уравнение методом половинн…   4.01.2015 19:33
Гость   не могли бы помочь   4.01.2015 19:35
Гость   Не получается написать программу в Паскале..Нужна …   4.01.2015 19:38
buy hydroxychloroquine sulfate o   Vaginal Irritation And Amoxicillin 500   4.12.2021 18:07
Федосеев Павел   А что там помогать-то? 1. Зайди на страничку FAQ (…   4.01.2015 22:53
Гость   Спасибо попробуем)составлять программу на паскале …   5.01.2015 1:06
Гость   именно этот график не получается построить(не подс…   5.01.2015 1:09
Федосеев Павел   Давай, регайся. Не знаю, почему - телепаты пьяные…   5.01.2015 1:37
Гость   на 1 странице самый последний текст,почему то не п…   5.01.2015 3:24
Гость   помогите пожалуйста)очеень нужно.   5.01.2015 4:10
Федосеев Павел   Ты упорно игнорируешь всё, что я говорю. 1. Регист…   5.01.2015 14:37


 Ответить  Открыть новую тему 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 16.05.2024 9:47
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name