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

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

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

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> метод половинного деления, решение уравнения
сообщение
Сообщение #1


Гость






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


Злостный любитель
*****

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

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


> здарвствуйте, мне нужно решить ур-е х^3 + 2x^2 - 11 = 0 методом половинного деления

мы не возаржаем


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Цитата(TarasBer @ 9.11.2011 10:53) *

> здарвствуйте, мне нужно решить ур-е х^3 + 2x^2 - 11 = 0 методом половинного деления

мы не возаржаем

не могли бы помочь?)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Злостный любитель
*****

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

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


http://markx.narod.ru/div/


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Спасибо,но я уже был на этой ссылке...но увы она мне мало что дала. я могу решить ээто уравнение обычным способом..но ввиде программы для меня это темный лес ((
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Злостный любитель
*****

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

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


Тогда я больше ничем не могу помочь. Купите самоучитель по Паскалю, может, станет понятнее.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


сам алгоритм метода понятен? то есть вручную этим методом решить сможешь?

по ссылке же программа готовая есть, кстати...


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Цитата(мисс_граффити @ 9.11.2011 19:35) *

сам алгоритм метода понятен? то есть вручную этим методом решить сможешь?

по ссылке же программа готовая есть, кстати...

Да вручную могу и корень ур-я будет 1,719666 Но как это решить в паскале. беда)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Пионер
**

Группа: Пользователи
Сообщений: 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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Новичок
*

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

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


ну чтобы выводила все три...
обычно, с помощью точек экстремума находят промежутки, на которых функция меняет знак. Например, одна точка экстремума 5 а вторая -5. Таким образом, где-то между ними функция была равна нулю. В этом промежутке корень и ищут.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Пионер
**

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

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


Цитата(@nto$ka @ 17.12.2012 23:39) *

ну чтобы выводила все три...
обычно, с помощью точек экстремума находят промежутки, на которых функция меняет знак.


А подробнее можно? Желательно с кодом.

Сообщение отредактировано: Shmaniche -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Новичок
*

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

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


Цитата(Shmaniche @ 18.12.2012 9:00) *

А подробнее можно? Желательно с кодом.


Ну с кодом-то мы все не против))

Точка экстремума, это точка, где функция меняет свое стремление. Между точками 1 и 2 функция стремится вниз, а между точками 2 и 3 она стремится вверх. Поэтому точка 2 является производной. Собственно все отмеченные здесь точки являются экстремумами.

Тебе нужно найти точки экстремума, и если точка 1 и 2 имеют разные знаки, значит на этом отрезке функция прошла через ноль, значит, здесь и стоит искать корень.

Добавлено через 8 мин.
А сейчас не запутайся, ибо я объясняю бестолково sad.gif

Де-факто, точки экстремума - это нули производной. Отсюда вытекает: чтобы найти экстремумы, надо найти производную от твоего уравнения и приравнять к нулю.
НО среди полученных корней может оказаться "мусор". Чтобы понять, какие точки экстремальны, необходимо посмотреть знаки промежутков. Если знаки до точки и после точки различны, то точка является экстремумом


Эскизы прикрепленных изображений
Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Пионер
**

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

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


Цитата(@nto$ka @ 18.12.2012 16:20) *


Де-факто, точки экстремума - это нули производной. Отсюда вытекает: чтобы найти экстремумы, надо найти производную от твоего уравнения и приравнять к нулю.
НО среди полученных корней может оказаться "мусор". Чтобы понять, какие точки экстремальны, необходимо посмотреть знаки промежутков. Если знаки до точки и после точки различны, то точка является экстремумом


Я знаю как найти экстремумы, но как это описать в Паскале и приделать к своей программе пока не могу сообразить.

Сообщение отредактировано: Shmaniche -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Новичок
*

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

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


Если ты найдешь производную от кубического уравнения, получишь квадратное Неужели, в самом деле сложно решить квадратное уравнение? Я думаю, что производную можно найти и вручную
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Пионер
**

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

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


Цитата(@nto$ka @ 18.12.2012 20:35) *

Если ты найдешь производную от кубического уравнения, получишь квадратное Неужели, в самом деле сложно решить квадратное уравнение? Я думаю, что производную можно найти и вручную


Квадратное уравнение я знаю как решать, но как это все к своему коду приделать пока не пойму. 10.gif

Сообщение отредактировано: Shmaniche -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Гость






Нужно решить нелинейное уравнение методом половинного деления
sin(ln x)-cos(ln x)+2 ln x=0
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Гость






не могли бы помочь
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Гость






Не получается написать программу в Паскале..Нужна ваша помощь
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


Знаток
****

Группа: Пользователи
Сообщений: 481
Пол: Мужской
Реальное имя: Федосеев Павел

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


А что там помогать-то?
1. Зайди на страничку FAQ (ссылка выделена красным цветом на верху этой страницы)
2. На 2-й странице "Численные методы решения уравнений"
3. Метод половинного деления
4. Скопировать и заменить формулу уравнения.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #20


Гость






Спасибо попробуем)составлять программу на паскале не получается,там же еще нужно график строить.
 К началу страницы 
+ Ответить 

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

 





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