Форум программистов, компьютерный форум CyberForum.ru

Метод вращений с построением КЮЭР-разложения - C++

Восстановить пароль Регистрация
 
Virus0PS
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 9
06.11.2013, 17:11     Метод вращений с построением КЮЭР-разложения #1
Я написал только Метод вращения
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
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
84
85
86
87
88
89
90
91
92
93
94
#include<math.h>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
 
void f(double  *mass, double *bb, int n)
{
int i,j,k;
double a,b,c,s,t;
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
b=mass[j*n+i];
a=mass[i*n+i];
c=a/sqrt(a*a+b*b);
s=b/sqrt(a*a+b*b);
for(k=i;k<n;k++)
{
t=mass[i*n+k];
mass[i*n+k]=c*mass[i*n+k]+s*mass[j*n+k];
mass[j*n+k]=-s*t+c*mass[j*n+k];
}
t=bb[i];
bb[i]=c*bb[i]+s*bb[j];
bb[j]=-s*t+c*bb[j];
}
}
for(i=n-1;i>=0;i--)
{
double summ=0.;
for(j=i+1;j<n;j++)
summ+=mass[i*n+j]*bb[j];
summ=bb[i]-summ;
bb[i]=summ/mass[i*n+i];
}
 
}
int main()
{
    int i=0,j,k,l,tt,n,key;
printf("amount:\n");
if(scanf("%d",&n)!=1)
{
    printf("error\n");return -1;
}
printf("key:\n");
if(scanf("%d",&key)!=1)
{
    printf("error\n");return -1;
}
srand(key);
double tmp,t, *mass=malloc(n*n*sizeof (double)),maxx;
double *bb=malloc(n*sizeof (double));
//freopen("input.txt","r",stdin);
//freopen("output.txt","w",stdout);
for(i=0;i<n;i++)
bb[i]=0.;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{tmp=rand();
tmp=(tmp>0.5?tmp:1.);
mass[i*n+j]=(rand()%2==0?1.:-1.)*rand()/tmp;
bb[i]+=mass[i*n+j];
}
if(n<30){printf("matrix A\n");
 
for(i=0;i<n;i++){
for(j=0;j<n;j++)
printf("%.2lf ",mass[i*n+j]);
printf("\n");}
printf("elements B\n");
 
for(j=0;j<n;j++)
printf("%.2e ",bb[j]);}
    t=clock();
    f(mass,bb,n);
t=clock()-t;
for(i=0,maxx=0.;i<n;i++)
{
    maxx=(fabs(bb[i]-1.)>maxx?bb[i]-1.:maxx);
}
printf("error=%e\n",maxx);
if(n<30){
printf("Solution\n");
for(i=0;i<n;i++)
printf("%.2lf ",bb[i]);}
printf("\nvremya rabot programmi %f sekund\n",t/CLOCKS_PER_SEC);
free(mass);
free(bb);
mass=0;
bb=0;
return 0;
}
помогите с построением -разложения
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.11.2013, 17:11     Метод вращений с построением КЮЭР-разложения
Посмотрите здесь:

Разложения числа на цифры C++
C++ метод вращений
алгоритм разложения функции C++
C++ Метод вращений Якоби с++
C++ Поиск универсального алгоритма LU разложения
C++ КУЭР-разложение методом вращений
совсем запуталась с построением( C++
C++ Сложности с построением многофайлового решения

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
06.11.2013, 17:28     Метод вращений с построением КЮЭР-разложения #2
вот Вам класс матриц с QR) можете взять только метод оттуда, если поймете что и как там)
Критику в студию
Yandex
Объявления
06.11.2013, 17:28     Метод вращений с построением КЮЭР-разложения
Ответ Создать тему
Опции темы

Текущее время: 00:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru