Спасибо,но я уже был на этой ссылке...но увы она мне мало что дала. я могу решить ээто уравнение обычным способом..но ввиде программы для меня это темный лес ((
TarasBer
9.11.2011 17:04
Тогда я больше ничем не могу помочь. Купите самоучитель по Паскалю, может, станет понятнее.
мисс_граффити
9.11.2011 23:35
сам алгоритм метода понятен? то есть вручную этим методом решить сможешь?
по ссылке же программа готовая есть, кстати...
Гость
11.11.2011 21:33
Цитата(мисс_граффити @ 9.11.2011 19:35)
сам алгоритм метода понятен? то есть вручную этим методом решить сможешь?
по ссылке же программа готовая есть, кстати...
Да вручную могу и корень ур-я будет 1,719666 Но как это решить в паскале. беда)
Shmanich
17.12.2012 23:20
Мой вариант решения:
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;
{Проверка введеных значений} if (a1=b1) then writeln('Ошибка! Левая часть интервала не должна равняться правой.'); if (a1>b1) then writeln('Ошибка! Левая часть интервала не должна быть больше правой.');
Итак, если я введу диапазон от -10 до -1 и точность, например, 0,001, то примерный корень будет = -1,81134, что верно! Если от 1 до 10, то корень будет равен 3,31262, что тоже верно! Если от -1 до 1, то корень будет равен 0, что тоже верно! Но если я задам диапазон от -10 до 10, то выведится только один корень = 0, что недостаточно для полного ответа, т.к. уравнение 2x^3-3x^2-12x=0 имеет 3 корня! Как сделать так, чтобы программа хотя бы сообщала, что «в данном интервале найдено более одного корня, рекомендуется сузить границы интервала», или выводила все три??? Помогите, пожалуйста
@nto$ka
17.12.2012 23:39
ну чтобы выводила все три... обычно, с помощью точек экстремума находят промежутки, на которых функция меняет знак. Например, одна точка экстремума 5 а вторая -5. Таким образом, где-то между ними функция была равна нулю. В этом промежутке корень и ищут.
Shmanich
18.12.2012 9:00
Цитата(@nto$ka @ 17.12.2012 23:39)
ну чтобы выводила все три... обычно, с помощью точек экстремума находят промежутки, на которых функция меняет знак.
А подробнее можно? Желательно с кодом.
@nto$ka
18.12.2012 16:20
Цитата(Shmaniche @ 18.12.2012 9:00)
А подробнее можно? Желательно с кодом.
Ну с кодом-то мы все не против))
Точка экстремума, это точка, где функция меняет свое стремление. Между точками 1 и 2 функция стремится вниз, а между точками 2 и 3 она стремится вверх. Поэтому точка 2 является производной. Собственно все отмеченные здесь точки являются экстремумами.
Тебе нужно найти точки экстремума, и если точка 1 и 2 имеют разные знаки, значит на этом отрезке функция прошла через ноль, значит, здесь и стоит искать корень.
Добавлено через 8 мин. А сейчас не запутайся, ибо я объясняю бестолково
Де-факто, точки экстремума - это нули производной. Отсюда вытекает: чтобы найти экстремумы, надо найти производную от твоего уравнения и приравнять к нулю. НО среди полученных корней может оказаться "мусор". Чтобы понять, какие точки экстремальны, необходимо посмотреть знаки промежутков. Если знаки до точки и после точки различны, то точка является экстремумом
Shmanich
18.12.2012 16:36
Цитата(@nto$ka @ 18.12.2012 16:20)
Де-факто, точки экстремума - это нули производной. Отсюда вытекает: чтобы найти экстремумы, надо найти производную от твоего уравнения и приравнять к нулю. НО среди полученных корней может оказаться "мусор". Чтобы понять, какие точки экстремальны, необходимо посмотреть знаки промежутков. Если знаки до точки и после точки различны, то точка является экстремумом
Я знаю как найти экстремумы, но как это описать в Паскале и приделать к своей программе пока не могу сообразить.
@nto$ka
18.12.2012 20:35
Если ты найдешь производную от кубического уравнения, получишь квадратное Неужели, в самом деле сложно решить квадратное уравнение? Я думаю, что производную можно найти и вручную
Shmanich
19.12.2012 21:28
Цитата(@nto$ka @ 18.12.2012 20:35)
Если ты найдешь производную от кубического уравнения, получишь квадратное Неужели, в самом деле сложно решить квадратное уравнение? Я думаю, что производную можно найти и вручную
Квадратное уравнение я знаю как решать, но как это все к своему коду приделать пока не пойму.
Гость
4.01.2015 19:33
Нужно решить нелинейное уравнение методом половинного деления sin(ln x)-cos(ln x)+2 ln x=0
Гость
4.01.2015 19:35
не могли бы помочь
Гость
4.01.2015 19:38
Не получается написать программу в Паскале..Нужна ваша помощь
Федосеев Павел
4.01.2015 22:53
А что там помогать-то? 1. Зайди на страничку FAQ (ссылка выделена красным цветом на верху этой страницы) 2. На 2-й странице "Численные методы решения уравнений" 3. Метод половинного деления 4. Скопировать и заменить формулу уравнения.
Гость
5.01.2015 1:06
Спасибо попробуем)составлять программу на паскале не получается,там же еще нужно график строить.
Гость
5.01.2015 1:09
именно этот график не получается построить(не подскажите
Федосеев Павел
5.01.2015 1:37
Давай, регайся.
Не знаю, почему - телепаты пьяные под ёлкой валяются...
Показывай, на чём остановился.
Гость
5.01.2015 3:24
на 1 странице самый последний текст,почему то не получается построить
Гость
5.01.2015 4:10
помогите пожалуйста)очеень нужно.
Федосеев Павел
5.01.2015 14:37
Ты упорно игнорируешь всё, что я говорю. 1. Регистрируйся на форуме. Иначе это проявление неуважения. 2. Я не знаю, на каком коде ты остановился, что у тебя не получается, с какими ошибками. Приводи свой итоговый вариант, уточни компилятор, описывай конкретные проблемы. Для вставки кода в сообщение пользуйся тегами-кнопками CODE (лучше выбрать вариант none - у других проблемы с автозаменой), закрытие тега - кнопка # (решётка). Без кода я гадать не буду.