Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Алгоритмы _ Уравнение с одним неизвестным

Автор: compiler 11.02.2007 16:45

здраствуйте, прошу помоч

Существует ли общий алгоритм для решения уравнение с одним неизвестным/выражением члена из уравнения

Заранее благодарен.

Автор: мисс_граффити 11.02.2007 16:47

Уравнение может быть любого порядка?
То есть не обязательно линейное?

Автор: compiler 11.02.2007 16:50

Цитата(мисс_граффити @ 11.02.2007 11:47) *

Уравнение может быть любого порядка?
То есть не обязательно линейное?

может быть...
хотелось бы общий алгоритм...
но и за алг. для линейных уравнений буду благодарен

Автор: мисс_граффити 11.02.2007 17:09

как уравнение задано?
с линейными-то все просто...
для нелинейных есть численные методы решения, но они обычно не дают возможности отыскать ВСЕ корни.

Автор: compiler 11.02.2007 17:12

Цитата(мисс_граффити @ 11.02.2007 12:09) *

как уравнение задано?

написать прогу для решения уравнений(так для себя).

Автор: Lapp 13.02.2007 17:23

Цитата(compiler @ 11.02.2007 13:12) *

написать прогу для решения уравнений(так для себя).

2 мисс_граффити:
Полагаю, речь идет о выражении вида F(x)=0, где все параметры функции F известны. Иначе говоря, есть паскалевская функция, необходимо найти пересечения с осью x.

Задача решабельная, хотя не абсолютно, а в некоторых предположениях, налагаемых на F. Например: непрерывность, дифференцируемость, монотонность.. При этом потребуется как-то задавать не только саму F, но и область ее определения.
Само решение можно проводить простой дихотомией. Но если функция не совсем простая, то потребуется более сложное ее исследование..

В общем случае задача, конечно, не решается.

Автор: Андрюха 14.02.2007 21:22

Возможно, я чего не понял...
1). Для уравения вида ax+b=0 x=-b/a, a<>0 иначе а х любое
2).Для уравнения вида a*x*x+b*x+c=0 если D=b*b-4*a*c>0, то решения-2 числа вида (-b+Sqrt(D))/2*a и
(-b+Sqrt(D))/2*a; если D=0 то есть ДВА СОВПАДАЮЩИХ РЕШЕНИЯ (-b/2*a)
3). Для уравнений вида
a*x*x*x+b*x*x+c*x+d=0
и
a*x*x*x*x+b*x*x*x+c*x*x+d*x+e=0 имеются формулы
Кордана-Торталли, которые довольно солжны, но их легко найти в сети
4).Для уравнений степени выше 4 нет общих уравнений для решения, хотя можно попробовать разными поисками, если ф(х)=0-монотонная(или монотонная на каком-то отрезке) функция
Если это не то, что надо было-сорри

Автор: Lapp 15.02.2007 4:45

Цитата(Андрюха @ 14.02.2007 17:22) *

Возможно, я чего не понял...

Андрюха, ты не понял. Речь идет о всяких уравнениях, не только степенных. И никакие формулы тут не используются.
Например, x+5=Sin(x). В этом случае снчала приводим к виду:
x+5-Sin(x)=0
Таким образом, ищем нули функции F(x)=x+5-Sin(x)
Например, так. Сначала проверяем ее значения в некоторых точках - допустим, от -1000 до +1000 с шагом 1. Видим, что на краях этого промежутка значения довольно большие по модулю, а ближе к нулю - поменьше. Берем точку с минимальным по модулю значением и вокруг нее снова проходимся с ментшим шагом. Снова повторяем операцию. Попутно может получиться, что корня два или больше - значит, нужно предусмотреть механизм ветвления.. Останавливаем процесс при достижении заданной точности.
Можно также предоставить возможность "ручной подстройки" - то есть начальный интервал выбирается не совсем автоматически, а задается пользователем. Если пользователь подозревает, что корень находится где-то от 50 до 100 - то он и задаст этот интервал..
Вот так, приблизительно.

Автор: Lapp 15.02.2007 9:21

Написал самый примитивный (без ветвления) пример реализации такого алгоритма. Если кому-то интересно - могу выложить в Задачах.

Автор: compiler 17.02.2007 1:07

Цитата(Lapp @ 15.02.2007 4:21) *

...могу выложить в Задачах.

Буду очень благодарен...