Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Метод итераций и метод Зейделя 
:(
    Опции темы
prikolist
Дата 16.6.2009, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Здравсвуйте программисты! Спасибо всем за помощь в предыдущих темах, осталась последняя лаба, которую нужно решить по предмету "Численные методы" и сдать преподу до понедельника успеть, остальные лабы прошли на ура. Подскажите пожалуйста как решить методом Зейделя и итераций вот эти 2 системы уравнений, буду очень благодарен Вот фото:

Нашёл такой код, не знаю,правильно,согласно этим уравнениям.

Код

#define eps 0.0001 //требуемая точность вычислений
void iteration(double a[N][N],double b[N],double x[N])
{
 int i,j;
 double norma; //чебышевская норма вектора
 double xn[N]={0};//вектор для текущей итерации, начальное значение
       //должно быть равно начальному приближению
 
 for(i=0;i < N;i++)
  {
   x[i]=-b[i];

   for(j=0;j < N;j++)
   {
    if(i!=j)
     x[i]+=a[i][j]*x[j];
   }

   x[i]/=-a[i][i];
  }

  for(i=0;i < N;i++)
  {
   if(fabs(x[i]-xn[i]) > norma)
    norma=fabs(x[i]-xn[i]);
   xn[i]=x[i];
  }


Присоединённый файл ( Кол-во скачиваний: 9 )
Присоединённый файл  111.jpg 11,27 Kb
PM MAIL   Вверх
bsa
Дата 17.6.2009, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



а ты сам этот метод хоть знаешь?
PM   Вверх
prikolist
Дата 17.6.2009, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Я его не очень знаю, поэтому спрашиваю. Подскажите пожалуйста, как можно реализовать задачу выше. Буду очень благодарен.
PM MAIL   Вверх
zim22
Дата 17.6.2009, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

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



Цитата(prikolist @  17.6.2009,  13:28 Найти цитируемый пост)
 Буду очень благодарен.

ага, знаю я вашу благодарность. "Спасибо большое".

Цитата(prikolist @  17.6.2009,  13:28 Найти цитируемый пост)
Я его не очень знаю, поэтому спрашиваю

не там спрашиваете. идите в Алгоритмы.


--------------------
PM MAIL   Вверх
prikolist
Дата 17.6.2009, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Подскажите пожалуйста,как переделать вот этот код, это Метод Зейделя и итераций. Переделать в консоль на С++. Буду очень благодарен.

Код
 



unit Iter;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls;

type

  TForm1 = class(TForm)

    rez: TMemo;

    B1: TButton;

    B2: TButton;

    procedure B1Click(Sender: TObject);

    procedure B2Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.B1Click(Sender: TObject);

var x1,x2,x3,x4,f1,f2,f3,f4,t1,t2,t3,t4,e:real;

str1,str2,str3,str4,str5:string;

k:integer;

label S,F;

begin

k:=0;x1:=1.21;x2:=-0.72;x3:=-0.58;x4:=1.56;

rez.Clear;e:=0.001;

repeat

f1:=0.23*x1-0.14*x2+0.06*x3-0.12*x4+1.21;  

f2:=0.12*x1+0.32*x3-0.18*x4-0.72;

f3:=0.08*x1-0.12*x2+0.23*x3+0.32*x4-0.58;

f4:=0.25*x1+0.22*x2+0.14*x3+1.56;

    t1:=f1-x1;

    t2:=f2-x2;

    t3:=f3-x3;

    t4:=f4-x4; 

    x1:=f1;x2:=f2;x3:=f3;x4:=f4;

          inc(k);

until (abs(t1)<=e) and (abs(t2)<=e) and (abs(t3)<=e) and (abs(t4)<=e);

str(f1:6:3,str1);

str(f2:6:3,str2);

str(f3:6:3,str3);

str(f4:6:3,str4);

str(k,str5);

rez.Lines.Add(' ------- Результат вычислений ------- ');

rez.Lines.Add(' X1= '+str1+'  X2= '+str2+'  X3= '+str3+'  X4= '+str4);

rez.Lines.Add(' Количество итераций = '+str5);

end;

procedure TForm1.B2Click(Sender: TObject); // метод зейделя

var x1,x2,x3,x4,f1,f2,f3,f4,t1,t2,t3,t4,e:real;

str1,str2,str3,str4,str5:string;

k:integer;

begin

k:=0;x1:=1.21;x2:=-0.72;x3:=-0.58;x4:=1.56;

rez.Clear;e:=0.001;

repeat

f1:=0.23*x1-0.14*x2+0.06*x3-0.12*x4+1.21;

x1:=f1;

f2:=0.12*x1+0.32*x3-0.18*x4-0.72;

x2:=f2;

f3:=0.08*x1-0.12*x2+0.23*x3+0.32*x4-0.58;

x3:=f3;

f4:=0.25*x1+0.22*x2+0.14*x3+1.56;

x4:=f4;

    t1:=f1-x1;

    t2:=f2-x2;

    t3:=f3-x3;

    t4:=f4-x4;

          x1:=t1;x2:=t2;x3:=t3;x4:=t4;

                inc(k);

until (abs(t1)<=e) and (abs(t2)<=e) and (abs(t3)<=e) and (abs(t4)<=e);

str(f1:6:3,str1);

str(f2:6:3,str2);

str(f3:6:3,str3);

str(f4:6:3,str4);

str(k,str5);

rez.Lines.Add(' ------- Результат вычислений ------- ');

rez.Lines.Add(' X1= '+str1+'  X2= '+str2+'  X3= '+str3+'  X4= '+str4);

rez.Lines.Add(' Количество итераций = '+str5);

end;

end.


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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