2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Wolfram Mathematica Метод сопряжённых градиентов
Сообщение30.05.2012, 21:25 


27/10/11
228
Здравствуйте, товарищи, помогите, пожалуйста подкорректировать код для метода сопряжённый градиентов ( это из численного анализа))
У меня цикл почему-то на первой итерации прерывается ( может быть это из затого, что я криво прописал первую итерацию ?(начальные условия то есть )?


Код:
A = {{4, 1, -1, 1}, {1, 4, -1, -1}, {-1, -1, 5, 1}, {1, -1, 1, 3}};
B = {-2, 1, 0, 1};

Print["A = " , MatrixForm[A], "," " B = ",
MatrixForm[B], ",", " A.x=B"]
Print["x[0] = ", x[0] = {0, 0, 0, 0}]
Print[ ]

Print[" "]
Print["______________________________________________________________"]

While[Sqrt[(B - A.x[i + 1]).(B - A.x[i + 1])] > 10^(-6), i++;
i = 0
d[i] = r[i] = B - A.x[i];

Ro[i] = -((B - A.x[i]).(B - A.x[i]))/(d[i].A.d[i])

x[i + 1] = x[i] + Ro[i]*d[i] (*!!!!!!!!!!!!!!!!!!!!*)
r[i + 1] = r[i] + Ro[i]*A*d[i]
betta[
i + 1] = ((B - A.x[i + 1]).(B - A.x[i + 1]))/((B -
A.x[i]).(B - A.x[i]))
d[i + 1] = (B - A.x[i + 1]) + betta[i + 1]*d[i]

i = 1
r[i] = B - A.x[i];
Ro[i] = -((B - A.x[i]).(B - A.x[i]))/(d[i].A.d[i])

x[i + 1] = x[i] + Ro[i]*d[i]
r[i + 1] = r[i] + Ro[i]*A*d[i]
betta[
i + 1] = ((B - A.x[i + 1]).(B - A.x[i + 1]))/((B -
A.x[i]).(B - A.x[i]))
d[i + 1] = (B - A.x[i + 1]) + betta[i + 1]*d[i]

{

Ro[i] = -((B - A.x[i]).(B - A.x[i]))/(d[i].A.d[i])

x[i + 1] = x[i] + Ro[i]*d[i] (*!!!!!!!!!!!!!!!!!!!!*)
r[i + 1] = r[i] + Ro[i]*A*d[i]

betta[i +
1] = ((B - A.x[i + 1]).(B - A.x[i + 1]))/((B -
A.x[i]).(B - A.x[i]))
d[i + 1] = (B - A.x[i + 1]) + betta[i + 1]*d[i]

}

Print["Iteration = ", i, ", x=", x[i]]]
Print[" "]
Print["Resultado de função, calculada com LinearSolve[A,B]: x = ",
LinearSolve[A, B] // N]
Print["Verificar de solução: A.x[i] = ", Round[A.x[i]], "~~B = ", B]
Print["______________________________________________________________\
"]

 Профиль  
                  
 
 Posted automatically
Сообщение30.05.2012, 23:54 
Админ форума
Аватара пользователя


19/03/10
8952
 i  Тема перемещена из форума «Помогите решить / разобраться (М)» в форум «Околонаучный софт»

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group