Задача
Даны квадратная матрица [latex]A[/latex] порядка [latex]n[/latex], векторы [latex]x[/latex] и [latex]y[/latex] с [latex]n[/latex] элементами. Получить вектор [latex]A(x+y)[/latex].
Примеры:
Размерность матрицы | Матрица | Вектор x | Вектор y | Результирующий вектор A(x+y) |
2 | 2 3
3 2 |
3 4 | 5 6 | 46 44 |
3 | 2 1 4
5 2 6 3 4 8 |
2 2 2 | 4 4 4 | 42 78 90 |
4 | 1 2 3 4
3 4 1 6 2 3 8 1 4 5 0 8 |
1 2 3 4 | 5 4 3 2 | 60 84 84 102 |
5 |
0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 |
4 6 7 8 0 | 2 8 9 3 1 | 0 0 16 0 0 |
Алгоритм решения: Вводим матрицу [latex]A[/latex] порядка [latex]n[/latex]. Вводим векторы [latex]x[/latex] и [latex]y[/latex], прибавляем векторы [latex]x[/latex] и [latex]y[/latex]. После умножаем матрицу [latex]A[/latex] на вектор [latex]x + y[/latex] и получаем вектор [latex]A(x + y)[/latex]. С помощью цикла выводим результирующий вектор.
Код программы :
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 |
#include <iostream> using namespace std; int main() { int n; cin >> n; int x[n]; int y[n]; int z[n]; int A[n][n]; int result_vector[n]; for (int i = 0; i < n; i++){ for (int j = 0; j < n; j++) cin >> A[i][j]; } for (int i = 0; i < n; i++){ cin>>x[i]; } for (int i = 0; i < n; i++){ cin>>y[i]; } for (int i = 0; i < n; i++){ z[i]=x[i]+y[i]; } for(int i=0; i<n; i++) { result_vector[i]=0; for(int j=0; j<n; j++) { result_vector[i]+=A[i][j]*z[j]; } } for(int i=0; i<n; i++) { cout << result_vector[i] << endl; } return 0; } |
Оригинал кода можно увидеть перейдя по ссылке
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 |
import java.util.*; import java.lang.*; import java.io.*; /* Name of the class has to be "Main" only if the class is public. */ class Ideone { public static void main (String[] args) throws java.lang.Exception { int n; Scanner in = new Scanner(System.in); n = in.nextInt(); double []x = new double[n]; double []y = new double[n]; double []z = new double[n]; double [] result_vector = new double[n]; double [][] A = new double[n][n]; for (int i = 0; i < n; i++){ for (int j = 0; j < n; j++){ A[i][j]=in.nextDouble(); } } for (int i = 0; i < n; i++){ x[i]=in.nextDouble(); } for (int i = 0; i < n; i++){ y[i]=in.nextDouble(); } for (int i = 0; i < n; i++){ z[i]=x[i]+y[i]; } for(int i=0; i<n; i++) { result_vector[i]=0; for(int j=0; j<n; j++) { result_vector[i]+=A[i][j]*z[j]; } } for(int i=0; i<n; i++) { System.out.printf("%.6f ",result_vector[i]); } } } |
Оригинал кода можно увидеть перейдя по ссылка
Похоже, что правильно.