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

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

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

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


Гость






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


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

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

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


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

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


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


Гость






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

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

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

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


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

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

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


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


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


Гость






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


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

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

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


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


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


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

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

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


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

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


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


Гость






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

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

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

Да вручную могу и корень ур-я будет 1,719666 Но как это решить в паскале. беда)
 К началу страницы 
+ Ответить 
Shmaniche
сообщение 17.12.2012 19:20
Сообщение #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 
 К началу страницы 
+ Ответить 
@nto$ka
сообщение 17.12.2012 19:39
Сообщение #10


Новичок
*

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

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


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


Пионер
**

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

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


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

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


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

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


Новичок
*

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

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


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

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


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

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

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

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

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


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


Пионер
**

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

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


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


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


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

Сообщение отредактировано: Shmaniche - 18.12.2012 12:36
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
@nto$ka
сообщение 18.12.2012 16:35
Сообщение #14


Новичок
*

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

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


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


Пионер
**

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

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


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

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


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

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


Гость






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


Гость






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


Гость






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


Бывалый
***

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

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


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


Гость






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

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

 



- Текстовая версия 5.11.2024 23:10
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"