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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2010, 15:50   #1
Alexander886
 
Регистрация: 02.11.2009
Сообщений: 4
По умолчанию Решение СЛАУ. Метод простой итерации

Всем привет, помогите поправить код. У меня есть рабочий код для решения СЛАУ методом простых итераций с заданной точностью, а мне нужно, чтобы программа основывалась на заданном количестве приближений к точному значению. Подскажите как это сделать, а то у меня ничего не выходит...
Код:
procedure TForm1.Button1Click(Sender: TObject);
 var A: array[1..10,1..10] of real;
x,x0,b:array[1..10] of real;
k,i,j,n:integer;
eps:real;
begin
 eps:=strtofloat(edit1.Text);
 n:=strtoint(edit2.Text);
 for i:=1 to n do
 for j:=1 to n do
 A[i,j]:= strtofloat(StringGrid1.Cells[j-1,i-1]);
 for i:=1 to n do
 b[i]:= strtofloat(StringGrid2.Cells[0,i-1]);
   for i:=1 to n do
   x[i]:=b[i];
 repeat for i:=1 to n do
 x0[i]:=x[i];
 for i:=1 to n do
 begin
 x[i]:=0;
 for j:=1 to n do
 x[i]:= x[i] + A[i,j]*x0[j];
 x[i]:=x[i]+ b[i];
 end;
 k:=0;
 for i:=1 to n do
 if (abs(x[i]-x0[i])<eps)
 then k:=k+1;
 until (k=n);
  for i:=1 to n do
  StringGrid3.Cells[0,i-1]:=floattostrf(x[i],fffixed,8,3);

end;
Alexander886 вне форума Ответить с цитированием
Старый 17.01.2010, 18:22   #2
Alexander886
 
Регистрация: 02.11.2009
Сообщений: 4
По умолчанию

Может быть я не правильно сформулировал свой вопрос... Короче говоря есть код (см выше) и задание:
"Выбрать начальное приближение решения. Выполнить три приближения к точному значению методом простой итерации."
Подойдет мой код для данного задания? Если нет то, как его адаптировать?
Alexander886 вне форума Ответить с цитированием
Старый 17.01.2010, 18:38   #3
val_nnm
Форумчанин
 
Регистрация: 18.10.2009
Сообщений: 185
По умолчанию

Ну я твой код сильно не проверял, но если он правильный то нужно сделать примерно следующее

Код:
procedure TForm1.Button1Click(Sender: TObject);
 var A: array[1..10,1..10] of real;
x,x0,b:array[1..10] of real;
k,i,j,n:integer;
p:integer;
begin
  p:=strtoint(edit1.Text);
  n:=strtoint(edit2.Text);
  for i:=1 to n do
    for j:=1 to n do
      A[i,j]:= strtofloat(StringGrid1.Cells[j-1,i-1]);
  for i:=1 to n do
    b[i]:= strtofloat(StringGrid2.Cells[0,i-1]);
    for i:=1 to n do
      x[i]:=b[i];
  k := 0;
  repeat
    for i:=1 to n do
      x0[i]:=x[i];
    for i:=1 to n do
    begin
      x[i]:=0;
      for j:=1 to n do
      x[i]:= x[i] + A[i,j]*x0[j];
      x[i]:=x[i]+ b[i];
    end;
    k := k+1;
  until (k>=p);
  for i:=1 to n do
    StringGrid3.Cells[0,i-1]:=floattostrf(x[i],fffixed,8,3);
end;
На С# пишу лучше чем на русском.
"У меня правильнописание хромает. Оно хорошее, но почему-то хромает."
val_nnm вне форума Ответить с цитированием
Старый 17.01.2010, 20:08   #4
Alexander886
 
Регистрация: 02.11.2009
Сообщений: 4
По умолчанию

val_nnm, спасибо тебе большое! Все работает!
Alexander886 вне форума Ответить с цитированием
Старый 21.03.2010, 21:34   #5
vitaly38
Пользователь
 
Регистрация: 12.10.2009
Сообщений: 37
По умолчанию

а что такое n которое надо вводить в едит2? у меня выскакивает ошибка ''is not valid integer value чтобы я туда не ввел, целое число либо дробное...поясните пожалуйста.
vitaly38 вне форума Ответить с цитированием
Старый 24.03.2010, 18:43   #6
vitaly38
Пользователь
 
Регистрация: 12.10.2009
Сообщений: 37
По умолчанию

подскажите!!!
vitaly38 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Метод простой итерации Nikolai17 Помощь студентам 4 17.11.2009 09:39
Метод простой итерации. (ЧМ) Rise Помощь студентам 2 05.11.2009 18:00
Метод простой итерации Artemm Общие вопросы C/C++ 17 31.05.2009 14:06
Решение СЛАУ (метод простых итераций) XeN0N Помощь студентам 2 15.02.2009 21:33