С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Метод итераций и метод Зейделя - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ автозагрузка файла http://www.cyberforum.ru/cpp-beginners/thread40593.html
можно ли в коде файла написать такой код чтобы этот файл сам начал закачаться из интернета?скажем когда человек зашел в какую то страницу?
C++ что сделать чтобы прога сама по себе открылась? что можно написать или сделать что прога сама по себе попала после загрузки в рут?или бут не помню...чтоб сама по себе открывалась и начала действовать http://www.cyberforum.ru/cpp-beginners/thread40592.html
C++ двусвязный список c++
Помогите с програмкой пожалуйста.Последовательность символов, ограниченную точкой, занести в два двусвязных списока. Прога почемуто неправильно печатает гласные помогитеА то уже часа 2 сижу и не...
C++ Выполнение одновременно
народ, вот у меня есть код на С++, у котором есть два цыкли. Я хочу, чтобы можна було бы одновременно: и водить курсором, и чтобы в то же время и прямоугольник опускался))) вот етот код #include...
C++ кто знает как в с++ найти размер файла http://www.cyberforum.ru/cpp-beginners/thread40565.html
Мне нужно прочитать полностю файл и загрузить в память. fstream fs; fs.open("file.txt"); if(fs){ // int count = 1000; char* txt = new char;
C++ Конфликт компиляторов Здравствуйте, я относительно недавно начал программировать, экспериментирую с созданием игр на движке HGE. У меня установлен Microsoft Visual C++ 6.0 на котором он отлично компилируется. И вот я хочу... подробнее

Показать сообщение отдельно
prikolist
3 / 3 / 0
Регистрация: 19.07.2008
Сообщений: 142
18.06.2009, 14:51  [ТС]
Подскажите пожалуйста,как переделать вот этот код, это Метод Зейделя и итераций. Переделать в консоль на С++. Буду очень благодарен.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
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.
Добавлено через 8 часов 41 минуту 18 секунд
Вот метод итераций, как его подстроить, чтоб решило моё.

Метод итерации
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include "stdafx.h"
#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};//вектор для текущей итерации, начальное значение
       //должно быть равно начальному приближению
 
 
 
 do{
  norma=0.0;
  for(i=0;i < N;i++)
  {
   xn[i]=-b[i];
 
   for(j=0;j < N;j++)
   {
    if(i!=j)
     xn[i]+=a[i][j]*x[j];
   }
 
   xn[i]/=-a[i][i];
  }
 
  for(i=0;i < N;i++)
  {
   if(fabs(x[i]-xn[i]) > norma)
    norma=fabs(x[i]-xn[i]); //Вычисление нормы вектора
   x[i]=xn[i];
  }
  
 }
 while(norma > eps); //проверка на необходимую точность вычислений
 
 
 return;
}
Метод Зейделя
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 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];
  }
Подскажите пожалуйста, завтра или в пятницу хочу сдать этот код, очень нужно. Как подстроить его под мои уравнения?

Добавлено через 15 часов 17 минут 29 секунд
Вот попробывал методои итераций, подскажите пожалуйста, не компилится, уже не знаю что не так.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include"stdafx.h"
#include<iostream>
#include<cmath>
#define eps 0.0001 //требуемая точность вычислений
#define N 4
usingnamespace std;
 
//----------------------------------------------------------------------------------
void iteration(double a[N][N], double b[N],double x[N])
{
int i,j;
double norma; //чебышевская норма вектора
double xn[N]={0};//вектор для текущей итерации, начальное значение
//должно быть равно начальному приближению
do{
norma=0.0;
for(i=0;i < N;i++)
{
xn[i]=-b[i];
for(j=0;j < N;j++)
{
if(i!=j)
xn[i]+=a[i][j]*x[j];
}
xn[i]/=-a[i][i];
}
for(i=0;i < N;i++)
{
if(fabs(x[i]-xn[i]) > norma)
norma=fabs(x[i]-xn[i]); //Вычисление нормы вектора
x[i]=xn[i];
}
 
}
while(norma > eps); //проверка на необходимую точность вычислений
 
return ;
}
 
int main()
{
int a,b,x;
double a[N][N],b[N],x[N];
int i;
a[0][0] = -1.01; a[0][1] = 0.02; a[0][2] = -0.62; a[0][3] = 0.08; b[0] = 1.3;
a[1][0] = -1.03; a[1][1] = 0.28; a[1][2] = 0.33; a[1][3] = -0.07; b[1] = -1.1;
a[2][0] = -1.09; a[2][1] = 0.13; a[2][2] = 0.42; a[2][3] = 0.28; b[2] = 1.7;
a[3][0] = -1.19; a[3][1] = -0.23; a[3][2] = 0.08; a[3][3] = 0.37; b[3] = 1.5;
 
iteration(a,b,x);
for(i=0; i<N; i++)
cout<<"Rezyltat metoda iterasiy = "<<x[i]<<endl;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.