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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2013, 16:59   #1
Ильгизуля
Пользователь
 
Регистрация: 11.04.2013
Сообщений: 15
По умолчанию Паскаль-минимум

Здравствуйте!Помогите, пожалуйста, написать программу поиска минимума функции методом Ньютона(т.е с использованием производных второго порядка, а так же частных производнях)

Заранее благодарна!
Ильгизуля вне форума Ответить с цитированием
Старый 14.04.2013, 20:02   #2
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Ну так выкладывайте наработки, задавайте вопросы - поможем.
s-andriano вне форума Ответить с цитированием
Старый 16.04.2013, 06:43   #3
Ильгизуля
Пользователь
 
Регистрация: 11.04.2013
Сообщений: 15
По умолчанию Метод Ньютона

В одной книге нашла программу на метод Маркквадрата,как я знаю данный метод представляет собой усовершенствованный метод Ньютона.
В данной программе мне не все понятно, и вроде в ней есть определенные ошибки.
Помогите, пожалуйста разобраться.
Код:
 program upr1;
procedure modmrt( n : integer;
var Bvec : rvector;
var X : rvector;
var Fmin : real;
Workdata:probdata);

var
a, c: smatvec;
delta, v : rvector;
dec, eps, inc, lambda, p, phi, res : real;
count, i, ifn, igrad, j, k, nn2, q : integer;
notcomp, singmat, calcmat: boolean;
begin
writeln(‘alg23.pas -- Nash Marquardt nonlinear least squares’);
with Workdata do
begin
if nlls = false then halt;
Fmin:=big;
inc:=10.0;
dec:=0.4;
eps:=calceps;
lambda:=0.0001;
phi:=1.0;
ifn:=0; igrad:=0;
calcmat:=true;

nn2:=(n*(n+l)) div 2;

p:=0.0;
for i:=1 to m do
begin
res:-lllres(i, n, Bvec, notcomp);

p:=p+res*res;
end;
ifn:=ifn+1;
Fmin:=p;
count:=0;

while count<n do
begin
if calcmat then
begin
writeln(igrad,’ ’,ifn,’ sum of squares=’,Fmin);
for i:=1 to n do
begin
write(Bvec[i]:10:fi,’ ’);
if (7 * (i div 7) = i) and (i<r) then writeln;
end;
writeln;
igrad:=igrad+1;
for j:=1 to nn2 do a[j]:=0.0;
for j:=1 to n do v[j]:=0.0;
for i:=1 to m do
begin
nljac(i, n, Bvec, X);
res:=nlres(i, n, Bvec, notcomp);
}
for j:=1 to n do
begin
v[j]:=vu[j]+X[j]*res;
q:=(j*(j-l)) div 2;

for k:=1 to j do a[q+k]:=a[q+k]+X[j]*X[k];
end;
end;
for j:=1 to nn2 do c[j]:=a[j];
for j:=1 to n do X[j]:=Bvec[j];
end;
writeln(‘LAMDA=’,lambda:8);
for j:=1 to n do
begin
q:=(i*(j+l)) div 2;
a[q]:=c[q]*(1.0+lambda)+phi*lambda;
delta[j]:=-v[j];
if j>1 then
for i:=1 to (j-1) do a[q-i]:=c[q-i];
end;
notcomp:=false;
Choldcmp(n, a, singmat);
if (not singmat) then
begin
Cholback(n, a, delta);
count:=0;
for i:=1 to n do
begin
Bvec[i]:=X[i]+delta[i];
if (reltest+Bvec[i])=(reltest+X[i]) then count:=count+1;


end;

begin
p:=0.0; i:=0;
repeat
i:=i+1; res:=nlres(i,n,Bvec,notcomp);
if (not notcomp) then p:=p+res*res;
until notcomp or (i>=n);
ifn:=ifn+1;
end;
end;
if count<n then
if (not singmat) and (not notcomp) and (p<Fmin) then
begin
lambda:=lambda*dec;
Fmin:=p;
calcmat:=true;
else
begin
lambda:=lambda*inc;
if lambdaceps*eps then lambda:=eps;
calcmat:=false;

end;

end;
end;
end;
end.

Последний раз редактировалось Stilet; 16.04.2013 в 09:53.
Ильгизуля вне форума Ответить с цитированием
Старый 16.04.2013, 07:46   #4
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

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

В общем, с Вас:
1. Описание метода решения (из книги).
2. Описание основных переменных (из книги).
3. Ну и, само собой, привести исходник в читаемый вид.
s-andriano вне форума Ответить с цитированием
Старый 16.04.2013, 10:09   #5
Ильгизуля
Пользователь
 
Регистрация: 11.04.2013
Сообщений: 15
По умолчанию Метод Ньютона

Алгоритм метода.
Начальный этап
Задать ,.
Найти градиент функции в произвольной точке

и матрицу Гессе H(x)
Положить k=0.
Основной этап
Шаг 1. Вычислить градиент функции
Шаг 2. Проверить выполнение критерия останова
а) если критерий выполнен, расчет окончен,
б) если критерий не выполнен, то перейти к шагу 3.
Шаг 3. Вычислить матрицу Гессе
Шаг 4. Найти обратную матрицу
Шаг 5. Проверить положительную определенность матрицы

Шаг 6. Найти
Шаг 7. Положить k= k +1 и перейти к шагу 1.




Данным методом, решать я умею, и в общем поняла суть, но мне представляется трудным написать программу которая находит частные производные, обратную матрицу, определитель матрицы.
Наиболее понятный алгоритм данного метода находится здесь
http://optimizaciya-sapr.narod.ru/be...er/nuton2.html
Ильгизуля вне форума Ответить с цитированием
Старый 16.04.2013, 10:14   #6
alexander13
Форумчанин
 
Аватар для alexander13
 
Регистрация: 07.02.2013
Сообщений: 267
По умолчанию

Минимум функции скольких переменных?
Μολὼν λαβέ
alexander13 вне форума Ответить с цитированием
Старый 16.04.2013, 19:51   #7
Ильгизуля
Пользователь
 
Регистрация: 11.04.2013
Сообщений: 15
По умолчанию Метод Ньютона

двух переменных
Ильгизуля вне форума Ответить с цитированием
Старый 16.04.2013, 20:18   #8
alexander13
Форумчанин
 
Аватар для alexander13
 
Регистрация: 07.02.2013
Сообщений: 267
По умолчанию

Эм.. и что за функция конкретно?

Upd.
Мне кажется, что Вы не очень разобрались в методе..
Μολὼν λαβέ

Последний раз редактировалось alexander13; 16.04.2013 в 20:29.
alexander13 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти минимум из 8 чисел(найти минимум из 2х чисел) STIFLER32 Microsoft Office Word 1 22.03.2012 19:14
найти минимум Kristina1 Visual C++ 4 30.10.2011 11:43
Максимум, минимум, DBGrid. Карташов А.А. Помощь студентам 3 26.12.2010 20:26
Максимум-минимум Freeman-des Помощь студентам 8 22.12.2010 20:13
задача с координатами, максимум и минимум [Паскаль] Absourd Помощь студентам 1 14.12.2010 11:40