Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.03.2009, 17:31   #1
sat123
 
Регистрация: 20.03.2009
Сообщений: 7
По умолчанию отделение корней методом Лангранжа

нужна программа для отделения корней уравнения вида
a0*x^n + a1*x^n-1 + .+an-1*x + an = 0 методом Лангранжа.
Где а0, a1, an-1, a - коэффициенты при X.

тем кто даст ссылку или тем, у кого есть програмный код, или же тем, кто ее напишет дам миллион долларов (шутка). Пойдет на любом языке, но желательно (Паскаль\Делфи\С++);

спасибо наверное скажу заранее
sat123 вне форума Ответить с цитированием
Старый 21.03.2009, 13:28   #2
sat123
 
Регистрация: 20.03.2009
Сообщений: 7
По умолчанию

ап теме
неужели никто не имеет никаких догадок?
sat123 вне форума Ответить с цитированием
Старый 21.03.2009, 13:38   #3
Jean-Esther
Пользователь
 
Аватар для Jean-Esther
 
Регистрация: 15.01.2009
Сообщений: 69
По умолчанию

Честно говоря, самому интересно, но никогда не слышал о методе Лагранжа. Может, хоть ссылочку кинешь?
Silence is of great value...
Jean-Esther вне форума Ответить с цитированием
Старый 22.03.2009, 01:10   #4
sat123
 
Регистрация: 20.03.2009
Сообщений: 7
По умолчанию

к сожалению, не знаю я ссылок

в общем вот составленный лично мною алгоритм действий:

1)записываем заданное уравнение;
2)находим коэффициенты при иксах: a0, a1..an-1, an;

3)находим b и K;
где b - абсолютное за модулем значение отрицательного коэффициента стреди a;
K - номер первого отрицательного коеффициента среди а;
___________________________________ __________________________
4)находим верхнюю положительную границу R(в+) графика фунции
по уравнению R(в+)=1+((b/a0)^1/K);
___________________________________ __________________________
5)находим нижнюю положительную границу R(н+) графика фукции
Для этого:
- вместо ф-ции f1(x) подставляем x^n*f(1/x)=0
[ f1(x)=(x^n*f(1/x)=0) ]

- находим коэффициенты a0, b, K из полученного уравнения;

- подставляем их в уравнение R1, а имеено R1=1+((b/a0)^1/k);

- наконец находим нижнюю положительную границу R(н+);
R(н+)=1/R1;
___________________________________ __________________________
6)Находим нижнюю отрицательную R(н-) границу графика:

- вместо ф-ции f2(x) подставляем f(-x);
[ f1(x)=f(-x) ]

- находим коэффициенты a0, b, K из полученного уравнения;

- подставляем их в уравнение R2, а имеено R2=1+((b/a0)^1/k);

- наконец находим нижнюю отрицателную границу R(н-);
R(н-)=-R2;
___________________________________ __________________________
7)Находим верхнюю отрицательную R(в-) границу графика:

- вместо ф-ции f3(x) подставляем x^n*f(-1/x)=0;
[ f1(x)=x^n*f(-1/x)=0 ]

- находим коэффициенты a0, b, K из полученного уравнения;

- подставляем их в уравнение R3, а имеено R3=1+((b/a0)^1/k);

- наконец находим верхнюю отрицательную границу R(в-);
R(в-)=1/R3;
___________________________________ __________________________
8) Находим промежутки:
R(н+)<=x(+)<=R(в+);
R(н-)<=x(-)<=R(в-);
___________________________________ __________________________
9) Задаем шаг измения значения Х в пределах промежутков
[как задать шаг точно не знаю, но можно попробовать с помощью уравнений:
(R(в+)-R(н+))/n для промежутка на положительной части Х (х>0)
(R(в-)-R(н-))/n для промежутка на отрицательной части Х (х<0)]
___________________________________ __________________________
10) пошагово подставляем значение "Х" в заданное уравнение(в пределах промежутков) и проверяем соответствует ли знак промежутка значения Х в пределах одного шага и промежутка шага, стоящего за данным.

(соответсвует ли знак Х в промежутке h со знаком значения Х промежутка шага h+1)
Если не совпадает - значит в этом промежутке содержится один из корней уравнения (тоесть y(x)=0);
___________________________________ __________________________
11)Проверяем совпают ли количество промежутков с корнями уравнения со значением n(наибольшая степень заданного уравнения)

- совпадает: тогда выводим [a,b] этих промежутков(это будет искомое данной программы);
- не совпадает(значит в одном промежутке два или больше корня): тогда делим значение шага на два(для того, чтоб уменьшить интервалы промежутков и точнее определить наличие корней в данном промежутке)

Делим до тех пор, пока количество промежутков с отличными знаками не будет равнятся n (так как, по свойству такого типа уравнений, количество корней равняется значению наибильшего степеня оного уравнения);

- как только совпадает - выводим промежутки на экран;
___________________________________ ___________________________
Вот вам суть метода Лангранжа;
Возьмитесь пожалуйста за эту программу(программа первого курса не програмного факультета)

Я сам паралельно пишу, но сроки поджимают, поэтому вынужден заручится поддержкой более образованных в этом вопросе людей.
___________________________________ ___________________________
и ещё: если не трудно, покажите кусок программы с помощью которого я смогу определить коэффициенты при Иксах и определить значения "b" и "К";

жду каких либо комментариев(лучше в виде самой программы).
если есть предложения по отдельным кускам программы - буду признателен;
если есть хотябы отдельные куски программы, которые можно переделать под мою - буду вдвойне принателен

Последний раз редактировалось sat123; 22.03.2009 в 20:06.
sat123 вне форума Ответить с цитированием
Старый 22.03.2009, 20:07   #5
sat123
 
Регистрация: 20.03.2009
Сообщений: 7
По умолчанию

подсобите пожалуйста
sat123 вне форума Ответить с цитированием
Старый 22.03.2009, 20:32   #6
Jean-Esther
Пользователь
 
Аватар для Jean-Esther
 
Регистрация: 15.01.2009
Сообщений: 69
По умолчанию

Уже третий час пытаюсь осилить этот метод. Не получается. Можешь подробнее объяснить каждый шаг алгоритма?
Silence is of great value...
Jean-Esther вне форума Ответить с цитированием
Старый 22.03.2009, 20:34   #7
sat123
 
Регистрация: 20.03.2009
Сообщений: 7
По умолчанию

я уж и не знаю как подробнее, задавай вопросы, я буду отвечать
sat123 вне форума Ответить с цитированием
Старый 22.03.2009, 21:03   #8
Matuzalem
Новичок
Джуниор
 
Регистрация: 22.03.2009
Сообщений: 1
По умолчанию

sat123 Вы случайно, не в Житомирском политехе ?)))
просто задание, копия моего, только у меня еще изолированые корни. (п.с. оставляйте аську в ЛС) (до четверга думаю сделаю, общими усилиями многих людей)

По делу.

Есть небольшие наработки.

нужна помощь только в маленьком кусочке кода.

Как сделать так, что б степень при каждом слагаемом падала на единицу, до тех пор, пока не будет нулевой степень ?

(т.е. если n=5, то будет 6 слагаемых, с каждым слагаемым понижается степень на единицу)


я так понимаю это будет цикл:

for i:=n downto 0 do begin

а дальше как ?


что б яснее было

Последний раз редактировалось Matuzalem; 22.03.2009 в 23:25.
Matuzalem вне форума Ответить с цитированием
Старый 23.03.2009, 18:27   #9
Jean-Esther
Пользователь
 
Аватар для Jean-Esther
 
Регистрация: 15.01.2009
Сообщений: 69
По умолчанию Вот и я...

Как я обещал, начну думать над вопросом.
И вопрос к автору (т.е. к sat123):
реши, пожалуйста, уравнение x^2-2x+1 этим методом. Хочу вникнуть в его суть, так сказать, понять его хочется.
Silence is of great value...
Jean-Esther вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение уравнения методом деления отрезка пополам. Методом секущей. Panda196 Паскаль, Turbo Pascal, PascalABC.NET 3 25.11.2008 09:06
отделение строк при передаче в serversocket... prizrak1390 Общие вопросы Delphi 14 29.06.2008 21:13
Алгоритм уточнения корней СЛАУ NexusN Помощь студентам 1 02.04.2008 10:17
Методы нахождения корней уравнения werser Помощь студентам 8 20.02.2008 22:41