Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 22.12.2019
Сообщений: 2
1

Даны два вектора Y и X размерности n = 30. Вычислить

22.12.2019, 14:50. Показов 3860. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Приветствую всех, нужна помощью в решении вот такой задачки ->
Даны два вектора Y и X размерности n = 30. Вычислить

Проблема состоит в том, что я не понимаю, что в ответе должно получится. Вычислял с помощью маткада, в ответе получилась матрица, в этом случае я не могу подогнать код под этот ответ.
Вот мои попытки решения:
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
//n-размерность вектора
// Ввод векторов
void vektor_X(double X[5], int n)
{
    double;
    printf("Vektor X\n");
    for (int i = 0; i < n; i++)
    {
        X[i] = rand() % 9;
        printf("%lf\n", X[i]);
    }
}
 
void vektor_Y(double Y[5], int n)
{
    printf("Vektor Y\n");
    for (int j = 0; j < n; j++)
    {
        Y[j] = rand() % 9;
        printf("%lf\n", Y[j]);
    }
}
 
void vektor_Z(double Z[5], int n) // создал для того, чтобы ответ подогнать под матрицу
{
    printf("Vektor Y\n");
    for (int t = 0; t < n; t++)
    {
        Z[t] = rand() % 0;
        printf("%lf\n", Z[t]);
    }
}
 
// расчет элементов числителя
double chisl1(double X[5], double Y[5], double Z[5], int n, double value)
{
    double sumX = 0;
    for (int i = 0; i < n; i++) //Σx
    {
        sumX += X[i];
 
    }
 
    for (int j = 0; j < n; j++)
    {
 
        Y[j] *= (sumX * n);// * Y[j];//n*Σx*y
        printf("%lf\n", Y[j]);
    }
 
 
 
    return value;
}
 
double chisl2(double X[5], double Y[5], double Z[5], int n, double value)
{
    double sumX = 0, sumY = 0;
    for (int i = 0; i < n; i++)
    {
 
        sumX += X[i];//Σx
    }
    printf("%lf\n", sumX);
    for (int j = 0; j < n; j++)
    {
 
        sumY += Y[j];//Σy
    }
    printf("%lf\n", sumY);
    value = sumX * sumY;//Σx*Σy
    printf("%lf\n", value);
    return value;
 
}
// расчет элементов знаменателя
double znam_x(double X[5], int n, double value)
{
    double k = X[0], sumX = 0, sumX1 = 0;
    for (int i = 0; i < n; i++)
    {
 
 
        if (X[i] > k)
        {
            k = X[i];// максимальный элемент вектора Х, k
        }
        sumX += pow(X[i], 2);//Σ(x)^2
        sumX1 += X[i];
 
    }
 
    sumX1 = pow(sumX1, 2);//(Σx)^2
 
    value = k * sumX - sumX1;
    return value;
}
 
double znam_y(double Y[5], int n, double value)
{
    double p = Y[0], sumY = 0, sumY1 = 0;
    for (int i = 0; i < n; i++)
    {
 
 
        if (Y[i] > p)
        {
            p = Y[i];// максимальный элемент вектора Y, p
        }
        sumY += pow(Y[i], 2);//Σ(y)^2
        sumY1 += Y[i];
 
    }
 
    sumY1 = pow(sumY1, 2);//(Σy)^2
 
    value = p * sumY - sumY1;
    return value;
}
 
int main()
{
    double X[5], Y[5], Z[5], n = 5;
    double B = 0, O = 0, L = 0;
    vektor_X(X, n);
    vektor_Y(Y, n);
//в основном проверка действия функций
    printf("\n");
    chisl1(X, Y,Z, n, O);
    printf("\n");
    chisl2(X, Y,Z, n, L);
    printf("\n");
    //B = chisl1(X,Y,n,Z) - chisl2(X,Y,n,L);
    //printf("%lf\n", B);
    printf("\n");
 
    
 
    printf("\n");
    
    //Z = sqrt(znam_x - znam_y);
    //L = B / Z;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.12.2019, 14:50
Ответы с готовыми решениями:

Даны два одномерных вектора, вычислить их скалярное произведение
Даны два одномерных вектора Х, Т, каждый из которых состоит из 10 элементов. Вычислить их скалярное...

Даны два одномерных вектора Х, Т, каждый из которых состоит из 10 элементов. Вычислить их скалярное произведение
Даны два одномерных вектора Х, Т, каждый из которых состоит из 10 элементов. Вычислить их скалярное...

Даны два вектора b = (b1, b2, ., bn), x = (x1,x2, ., xn) и матрица C(n x n). Написать программу вычисления длины век
Даны два вектора b = (b1, b2, ..., bn), x = (x1,x2, ..., xn) и матрица C(n x n). Написать программу...

Даны два вектора размерности n. Вычислить их скалярное произведение
9. Даны два вектора размерности n. Вычислить их скалярное произведение

1
0 / 0 / 0
Регистрация: 22.12.2019
Сообщений: 2
22.12.2019, 19:58  [ТС] 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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
//n-размерность вектора
// Ввод векторов
void vektor_X(double X[5], int n)
{
    double;
    printf("Vektor X\n");
    for (int i = 0; i < n; i++)
    {
        X[i] = rand() % 9;
        printf("%lf\n", X[i]);
    }
}
 
void vektor_Y(double Y[5], int n)
{
    printf("Vektor Y\n");
    for (int j = 0; j < n; j++)
    {
        Y[j] = rand() % 9;
        printf("%lf\n", Y[j]);
    }
}
 
void vektor_Z(double Z[5], int n)
{
    printf("Vektor Y\n");
    for (int t = 0; t < n; t++)
    {
        Z[t] = rand() % 0;
        printf("%lf\n", Z[t]);
    }
}
 
// расчет элементов числителя
double chisl1(double X[5], double Y[5], double Z[5], int n, double value)
{
    double sumX = 0, sumX1 = 0, sumY1 = 0;
    
    for (int i = 0; i < n; i++) //Σx
    {
        sumX += X[i];
 
    }
 
    for (int j = 0; j < n; j++)
    {
 
        Y[j] *= (sumX * n);
        Z[j] = Y[j];// * Y[j];//n*Σx*y
        //printf("%lf\n", Z[j]);
        
    }
 
    for (int j = 0; j < n; j++)
    {
 
        Y[j] /= (sumX * n);//чистка массива
        //printf("%lf\n", Y[j]);
    }
 
    
    for (int i = 0; i < n; i++)
    {
 
        sumX1 += X[i];//Σx
    }
    //printf("%lf\n", sumX);
    for (int j = 0; j < n; j++)
    {
 
        sumY1 += Y[j];//Σy
    }
    //printf("%lf\n", sumY1);
    value = sumX1 * sumY1;//Σx*Σy
 
    //printf("%lf\n", value);
    printf("\n");
    for (int j = 0; j < n; j++)
    {
 
        Z[j] -= value;
        //printf("%lf\n", Z[j]);
        
    }
    
    return Z[5];
}
 
// расчет элементов знаменателя
double znam_x(double X[5], int n, double value)
{
    double k = X[0], sumX = 0, sumX1 = 0;
    for (int i = 0; i < n; i++)
    {
 
 
        if (X[i] > k)
        {
            k = X[i];// максимальный элемент вектора Х, k
        } 
        sumX += pow(X[i], 2);//Σ(x)^2
        //printf("%lf\n", sumX);
        sumX1 += X[i];
 
    }
    //printf("%lf\n", k);
    printf("\n");
    sumX1 = pow(sumX1, 2);//(Σx)^2
    //printf("%lf", sumX1);
    printf("\n");
    
    printf("\n");
    value = k * (sumX - sumX1);
    //printf("%lf", value);
    return value;
}
 
double znam_y(double Y[5], int n, double value)
{
    double p = Y[0], sumY = 0, sumY1 = 0;
    for (int i = 0; i < n; i++)
    {
 
 
        if (Y[i] > p)
        {
            p = Y[i];// максимальный элемент вектора Y, p
        }
        sumY += pow(Y[i], 2);//Σ(y)^2
        sumY1 += Y[i];
 
    }
    //printf("%lf\n", p);
    printf("\n");
    sumY1 = pow(sumY1, 2);//(Σy)^2
 
    value = p * (sumY - sumY1);
    //printf("%lf", value);
    return value;
}
 
 
 
int main()
{
    double  R = 0 , X[5], Y[5], Z[5], B[5], n = 5, G = 0, j = 0;
    double  O = 0, L = 0,m=0,v=0;
    
    vektor_X(X, n);
    vektor_Y(Y, n);
    printf("\n");
    //chisl1(X, Y,Z, n, O);
    //printf("\n");
    znam_x(X, n, m);
    //printf("\n");
    znam_y(Y, n, v);
    //printf("\n");
    chisl1(X, Y, Z, n, O);
 
    //printf("\n");
    
    R = sqrt(znam_x(X, n, m) * znam_y(Y, n, v));//знаменатель
    //printf("%lf\n ", R);
    
    //printf("\n");
 
    for (int j = 0; j < n; j++)
    {
        Z[j] /= R;
        printf("%lf\n", Z[j]);
 
    }
    
    
}
0
22.12.2019, 19:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.12.2019, 19:58
Помогаю со студенческими работами здесь

Даны два вектора с и d. Вычислить t=C ср + D ср
Даны два вектора с=(c1,c2,c3,c4,c5) и d=(d1,d2,d3,d4,d5) . Вычислить t=C ср+D ср , где С ср и D...

Даны два вектора b=(b1,b2,.,b6),x=(x1,x2,.,x6) и матрица А(6х6).написать программу вычисления длины вектора Ax-b
Даны два вектора b=(b1,b2,...,b6),x=(x1,x2,...,x6) и матрица А(6х6).написать программу вычисления...

Сравнить два вектора размерности n
Как сравнить два вектора размерности n? Например вектор a(2,3,2) сравнить с вектором b(1,3,3)....

Даны два двумерных числовых массива А и В размерности n. Заполнить массив С=А*В
Ребят, помогите решить задачу, не совсем понимаю как с массивами работать в паскале, Даны два...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru