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

КУЭР-разложение методом вращений - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ В одномерном массиве, состоящем из N вещественных элементов, вычислить: http://www.cyberforum.ru/cpp-beginners/thread1000718.html
В одномерном массиве, состоящем из n вещественных элементов, вычислить: а) минимальный элемент массива; б) сумму элементов массива, расположенных между первым и последним положительными элементами. в)Преобразовать массив таким образом, чтобы сначала располагались все элементы, равные нулю, а потом - все остальные. Заранее Спасибо!
C++ Написать программу, работающую со структурой TRAIN Описать структуру с именем TRAIN, содержащую следующие поля: - Название пункта назначения - Номер поезда - Время отправления Написать программу, которая выполняет следующие действия: - Ввод с клавиатуры данных в массив, состоящий из шести элементов типа TRAIN; записи должны быть упорядочены по времени отправления поезда; - Вывод на экран информации о поездах, направляющихся в пункт,... http://www.cyberforum.ru/cpp-beginners/thread1000698.html
C++ Очень странная ошибка при считывании пробела
Значит пишу программу которая по пробелам разделяет строку на слова. Да я люблю делать сам не нравится мне этот стандартный split и тому подобные. Так вот. Вроде все работает пока мы не доплетаемся до пробела и тут происходит обвал. string subscript out of range вроде все в пределах нормы и даже намного ее меньше. main #include <iostream> #include "searchrequest.h" int main() {...
C++ сформулировать квадратную матрицу порядка n по заданному образцу. на с++
1 1 1 . . . 1 1 1 2 2 2 . . . 2 2 2 3 3 3 . . . 3 3 3 . . . . . . . . . . . . . . . . . . n-1 n-1 . . . 0 0 0 n 0 0 . . . 0 0 0
C++ Обьясните пожалуйста небольшой кусок кода http://www.cyberforum.ru/cpp-beginners/thread1000678.html
Добрый день. Написал программу списка, но не совсем понимаю работу одного куска программы! А именно там где происходит добавление элемента в конец списка. Не до конца понимаю что там происходит. Если можно объясните по подробнее. Заранее благодарен Вот как я это понимаю: //Обьясните пожалуйста вот этот кусок кода link* newlink = new link; // выделяем память для внесения нового...
C++ Найти двузначные числа, у которых сумма удвоенного квадрата первой цифры и квадрата второй цифры равен самому числу Найти двузначные числа, у которых сумма удвоенного квадрата первой цифры и квадрата второй цифры равен самому числу подробнее

Показать сообщение отдельно
Virus0PS
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 9

КУЭР-разложение методом вращений - C++

07.11.2013, 18:26. Просмотров 582. Ответов 2
Метки (Все метки)

Я программу создал через двухмерный массив работает
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#include <stdio.h>
#include <math.h>
#include <time.h>
#define _N 10  // число уравнений
#define _M 10  // число неизвестных
 
   float **a;
   float *b;
   float *x;
   int n,m;
// QR-алгоритм
void qr () {
  int l,k;
  float c[_N][_M];
  float s[_N][_M];
  float akk,akl,alk,all,bk,bl;
 
  // Прямой ход
  for (k=0; k<n-1; k++) {
   for (l=k+1; l<n; l++) {
    c[k][l] = a[k][k] / (sqrt( a[k][k]*a[k][k] + a[l][k]*a[l][k] ));
    s[k][l] = a[l][k] / (sqrt( a[k][k]*a[k][k] + a[l][k]*a[l][k] ));
 
       // Умножение матрицы a[][] на T[k][l]
       akk=a[k][k];  alk=a[l][k];  akl=a[k][l];  all=a[l][l];
       a[k][k] =  akk*c[k][l] + alk*s[k][l];
       a[k][l] =  akl*c[k][l] + all*s[k][l];
       a[l][k] = -akk*s[k][l] + alk*c[k][l];
       a[l][l] = -akl*s[k][l] + all*c[k][l];
 
       // Вектор свободных членов умножается на T[k][l]
       bk = b[k]; bl = b[l];
       b[k] =  bk*c[k][l] + bl*s[k][l];
       b[l] = -bk*s[k][l] + bl*c[k][l];
   }
  }
  // Теперь матрица a[][] -- верхняя диагональная.
 
  // Обратный ход
  float h;
  x[n-1]=b[n-1]/a[n-1][n-1];
  for (l=(n-1);l>=1;l--) {
      h=b[l-1];
      for (k=(l+1);k<=n;k++) h=h-x[k-1]*a[l-1][k-1];
      x[l-1]=h/a[l-1][l-1];
  }
 
}
// ------------------------------------------------------
// ------------------------------------------------------
float matrix(int N,int M) {
 n = N; m = M;
 a = new float* [n];
 for (int i=0; i<n; i++) {
      a[i] = new float [m];
      for (int j=0; j<m; j++) a[i][j]=0;
      b = new float [n];
 x = new float [n];
{ b[i]=0; x[i]=0; }}
 
}
 
// ------------------------------------------------------
// Вывод СЛАУ на экран
// ------------------------------------------------------
void print_slau() {
 for (int i=0; i<n; i++) {
    for (int j=0; j<m; j++) printf("%.2f  ",a[i][j]);
    printf("| %.3f  ",b[i]);
    printf("\n");
 }
}
 
// ------------------------------------------------------
// Печать решения и невязки решения
// ------------------------------------------------------
void print_x() {
 float max=0,h;
 for (int i=0; i<n; i++) {
      h=0;
      for (int j=0; j<n; j++) h=h+x[j]*a[i][j];
      if (max<fabs(b[i]-h)) max=fabs(b[i]-h);
      printf("x[%i]=%.3f  ",i,x[i]);
      if (i==5) printf("\n");
 }
 printf("\nMax. Nevyaka: %f\n",max);
}
// ------------------------------------------------------
// Установить значение матрицы a[][]
// ------------------------------------------------------
void seta(int i, int j, float value) {
  a[i][j] = value;
}
// ------------------------------------------------------
// Установить значение вектора b[]
// ------------------------------------------------------
void setb(int i, float value) {
  b[i] = value;
}
 
// ------------------------------------------------------
 
int main() {
double t;
 
 matrix (_N,_M);
 for (int i=0; i<_N; i++)
 {for (int j=0; j<_M; j++)
seta(i,j,i+j);
 setb(i,1);}
 printf("Solusion (QR-razlojeniy)\n");
 printf("=Ishodnaya sistema========================================\n");
print_slau();
 printf("\n=Solusion=========================================\n");
t=clock();
qr();
t=clock()-t;
printf("Vremayraboti funk %lqr sekundi\n",t/CLOCKS_PER_SEC);
print_x();
 
}
А нам сказали через одномерный сделать, помогите перевести на одномерный массив

Добавлено через 2 часа 32 минуты
Надо перевести в одномерный массив
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 13:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru