Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Алгоритм Бернулл, нахождение максимального корня полинома 
:(
    Опции темы
killc0de
Дата 13.3.2013, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 19.4.2009

Репутация: нет
Всего: нет



Здравствуйте, по учебе возник вопрос с реализацией алгоритма нахождения максимального корня полинома методом Бернулли. Получилось реализовать, пример, данный в книге моя программа решает, а любой другой полином отказывается, не знаю что и делать. Если кто-нибудь сталкивался с этой темой, очень прошу ответить.
PM MAIL   Вверх
Фантом
Дата 13.3.2013, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: 2
Всего: 49



Я сталкивался. Больше отвечать пока не на что...
PM   Вверх
killc0de
Дата 13.3.2013, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 19.4.2009

Репутация: нет
Всего: нет



Извиняюсь, писал с работы, поэтому неопределенно. Вот код, уравнение из книги x^5+5*x^4-5=0, переходим к конечно-разностному уравнению: -5*y5+5*y1; и оно решается на ура. Любое же другое уравнение не решает. В основном вопрос о первых, начальных значениях y1,y2,y3,y4,y5. В книге написано, что что значения берутся произвольно, здесь значения соответственно : 0,0,0,1,1. Может, при задании другого уравнения необходимо как-то определенно задавать эти значения?
Код

program bernuli;

var
    N,max:integer;
    mY:array[0..1000]of real;
    

function newY(y5,y4,y3,y2,y1:real):real;
begin
//y=x^5+5*x^4-5 - отсюда выражаем x^5=-5*x^4-5*x^1 =>  -5*(y 
newY:=-5*y5+5*y1;
end;


procedure foundY(N,S:integer);
var
  i:integer;
begin
for i:=N to S do
  mY[i]:=newY(mY[i-N],0,0,0,mY[i-N+4]);
end;

var
    i:integer;
begin
mY[0]:=0;
mY[1]:=0;
mY[2]:=0;
mY[3]:=1;
mY[4]:=1;

max:=40;
foundY(5,max);
writeln('Результаты:');
for i:=1 to max-1 do
  writeln(mY[i+1]/mY[i]);
readln();
end.

PM MAIL   Вверх
Фантом
Дата 13.3.2013, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: 2
Всего: 49



Вообще говоря, странно, что этот код и заданное уравнение решает, поскольку первое, что он должен выдать - ошибку деления на 0 в циле вывода в основной программе.

Начальный вектор действительно нужно заменить на случайный. Ну и, честно говоря, я бы переписал всю программу, в таком виде это малосъедобно.
PM   Вверх
killc0de
Дата 14.3.2013, 08:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 19.4.2009

Репутация: нет
Всего: нет



В этом вся и беда, не могу придумать, как по другому написать. Как формировать конечно-разностное уравнение из исходного автоматически, а не в ручную в коде?
PM MAIL   Вверх
Фантом
Дата 14.3.2013, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: 2
Всего: 49



Цитата(killc0de @  14.3.2013,  09:12 Найти цитируемый пост)
Как формировать конечно-разностное уравнение из исходного автоматически, а не в ручную в коде? 

Хранить исходное уравнение в виде списка коэффициентов (или массива переменной длины). Компоненты y - аналогично.
PM   Вверх
killc0de
Дата 15.3.2013, 07:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 19.4.2009

Репутация: нет
Всего: нет



Спасибо.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.1129 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.