4 / 4 / 1
Регистрация: 18.09.2014
Сообщений: 249
1

Комплексные числа. Библиотека <complex>

21.06.2015, 22:17. Показов 7320. Ответов 14
Метки нет (Все метки)

Подключил библиотеку с комплексными числами, создал массив комплексных чисел. Произвел умножение матрицу копмлексных чисел на вектор.

Как вывести полученный результат?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.06.2015, 22:17
Ответы с готовыми решениями:

Библиотека <complex>
Необходимо написать код, который будет объявлять двумерный массив комплексных чисел размером 62...

Шаблон класса complex. Ошибка undefined reference to `complex<double>::SetRe(double)'
Есть такой файл complex.h #ifndef COMPLEX_H #define COMPLEX_H template&lt;class Type&gt; class...

Комплексные числа
Добавлено через 32 секунды Написать тестовую программу, которая: * динамически выделяет массив...

комплексные числа
дан список, элементы которого являются комплексными числами. Найти сумму элементов списка

14
495 / 377 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
21.06.2015, 22:22 2
Цитата Сообщение от bogdan_z Посмотреть сообщение
Подключил библиотеку с комплексными числами, создал массив комплексных чисел. Произвел умножение матрицу копмлексных чисел на вектор.
То есть это вы сделать сумели, а вывести нет?

Добавлено через 3 минуты
Покажите код
0
4 / 4 / 1
Регистрация: 18.09.2014
Сообщений: 249
21.06.2015, 22:54  [ТС] 3
_Valera_,
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
#include <iostream>
#include <complex>
#include <clocale>
#include <math.h>
using namespace std;
 
 
double transpose(double matr[][8])
{
    int i, j;
    double tmp[4][8];
    for (i = 0; i < 8; ++i)
        for (j = 0; j < 4; ++j)
            tmp[i][j] = matr[j][i];
    return tmp[4][8];
}
 
 
 
int main()
{
    setlocale(LC_ALL, "rus");
    
    double M[8][8] = { { 1, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 1, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 1, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 1, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 1, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 1, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 1, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 1 },
    };
 
    complex <double> a0; complex <double> a1; complex <double> a2; complex <double> a3;
    complex <double> a4; complex <double> a5; complex <double> a6; complex <double> a7;
    cout << "Введите комплексные значения:" << endl;
    cout << "Введите значение сопративления в 1 ветви (действительная часть, мнимая) ->";
    cin >> a0;
    cout << "Введите значение сопративления в 2 ветви (действительная часть, мнимая) ->";
    cin >> a1;
    cout << "Введите значение сопративления в 3 ветви (действительная часть, мнимая) ->";
    cin >> a2;
    cout << "Введите значение сопративления в 4 ветви (действительная часть, мнимая) ->";
    cin >> a3;
    cout << "Введите значение сопративления в 5 ветви (действительная часть, мнимая) ->";
    cin >> a4;
    cout << "Введите значение сопративления в 6 ветви (действительная часть, мнимая) ->";
    cin >> a5;
    cout << "Введите значение сопративления в 7 ветви (действительная часть, мнимая) ->";
    cin >> a6;
    cout << "Введите значение сопративления в 8 ветви (действительная часть, мнимая) ->";
    cin >> a7;
    complex <double> Z[8] = { complex< double >(a1), complex< double >(a2), complex< double >(a3), complex< double >(a4), complex< double >(a5), complex< double >(a6), complex< double >(a7) };
 
    double E[8];
    for (int i = 0; i < 8; i++)
    {
        cout << "Введите значение ЭДС в ветви " << i << " если оно есть, иначе введите 0 -> ";
        cin >> E[i];
    }
 
    double J[8];
    for (int i = 0; i < 8; i++)
    {
        cout << "Введите значение тока в ветви " << i << " если оно есть, иначе введите 0 -> ";
        cin >> J[i];
    }
 
    complex <double> c[8][8];
 
    for (int j = 0; j < 8; j++)
    {
        for (int i = 0; i < 8; i++)
            c[j][i] = M[j][i] * Z[j];
    }
 
    double N[4][8] = { {1,0,0,0,1,-1,0,0},
    { 0, 1, 0, 0, 0, 1, -1, 0 },
    { 0, 0, 1, 0, 0, 0, 1, -1 },
    { 0, 0, 0, 1, -1, 0, 0, 1 }
    };
 
 
    
 
    system("pause");
    return 0;
}
0
495 / 377 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
21.06.2015, 22:55 4
Что именно выводить?
0
4 / 4 / 1
Регистрация: 18.09.2014
Сообщений: 249
21.06.2015, 22:59  [ТС] 5
_Valera_, вот после этого вывести полученный массив
C++
1
2
3
4
5
6
7
complex <double> c[8][8];
 
    for (int j = 0; j < 8; j++)
    {
        for (int i = 0; i < 8; i++)
            c[j][i] = M[j][i] * Z[j];
    }
Добавлено через 2 минуты
_Valera_, и правильно я осуществляю ввод в исходный массив?

и как теперь сделать траспонирование матрицы N, умножить на N и на еще одну матрицу
0
495 / 377 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
21.06.2015, 23:00 6
Может я что-то не понимаю, а почему вы не можете его вывести?
0
4 / 4 / 1
Регистрация: 18.09.2014
Сообщений: 249
21.06.2015, 23:01  [ТС] 7
_Valera_, в цикле фор cout<<c[i][j]?
0
495 / 377 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
21.06.2015, 23:04 8
Цитата Сообщение от bogdan_z Посмотреть сообщение
_Valera_, в цикле фор cout<<c[i][j]?
Ну можно и так, наверное .
0
2431 / 1831 / 404
Регистрация: 15.12.2013
Сообщений: 8,171
21.06.2015, 23:08 9
bogdan_z, с создания темы прошел почти час,неужели за это время вы не смогли найти решение своей проблемы?
давай я продемонстрирую ход действий,которые вы должны были сделать до создания темы.
Задача: вывести данные из std::complex.
Решение:
1. std::complex стандартный заголовочный файл?Да.Идем на http://www.cplusplus.com/
2. ищем пример в справке.Переходим на http://www.cplusplus.com/refer... x/complex/
3. смотрим пример.пробуем запустить
4.все работает?радуемся.нет? создаем тему.
Надеюсь проделать это в цикле вы сможете без посторонней помощи.
0
Модератор
Эксперт по электронике
8790 / 6575 / 892
Регистрация: 14.02.2011
Сообщений: 23,084
21.06.2015, 23:11 10
Цитата Сообщение от bogdan_z Посмотреть сообщение
в цикле фор cout<<c[i][j]?
да
Поддерживается и ввод/вывод комплексных чисел. Оператор вывода печатает вещественную и мнимую части через запятую, в круглых скобках. Например, результат выполнения операторов вывода
complex< double > complex0( 3.14159, -2.171 );
comp1ex< double > complex1( complexO.real() );
cout << complexO << " " << complex1 << endl;

выглядит так:
( 3.14159, -2.171 ) ( 3.14159, 0.0 )
отсюда http://valera.asf.ru/cpp/book/c04.html
а если нужен классический вид то можно сделать так
C++
1
cout<<c[i][j].real()<<"+"<<c[i][j].imag()<<"i"<<endl;
0
4 / 4 / 1
Регистрация: 18.09.2014
Сообщений: 249
21.06.2015, 23:13  [ТС] 11
_Valera_, ошибку выдает, но это ладно, как перемножить три матрицы?ValeryS, вот это правильно?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
complex <double> a0; complex <double> a1; complex <double> a2; complex <double> a3;
    complex <double> a4; complex <double> a5; complex <double> a6; complex <double> a7;
    cout << "Введите комплексные значения:" << endl;
    cout << "Введите значение сопративления в 1 ветви (действительная часть, мнимая) ->";
    cin >> a0;
    cout << "Введите значение сопративления в 2 ветви (действительная часть, мнимая) ->";
    cin >> a1;
    cout << "Введите значение сопративления в 3 ветви (действительная часть, мнимая) ->";
    cin >> a2;
    cout << "Введите значение сопративления в 4 ветви (действительная часть, мнимая) ->";
    cin >> a3;
    cout << "Введите значение сопративления в 5 ветви (действительная часть, мнимая) ->";
    cin >> a4;
    cout << "Введите значение сопративления в 6 ветви (действительная часть, мнимая) ->";
    cin >> a5;
    cout << "Введите значение сопративления в 7 ветви (действительная часть, мнимая) ->";
    cin >> a6;
    cout << "Введите значение сопративления в 8 ветви (действительная часть, мнимая) ->";
    cin >> a7;
    complex <double> Z[8] = { complex< double >(a1), complex< double >(a2), complex< double >(a3), complex< double >(a4), complex< double >(a5), complex< double >(a6), complex< double >(a7) };
0
Модератор
Эксперт по электронике
8790 / 6575 / 892
Регистрация: 14.02.2011
Сообщений: 23,084
21.06.2015, 23:21 12
Цитата Сообщение от bogdan_z Посмотреть сообщение
complex <double> Z[8] = { complex< double >(a1), complex< double >(a2), complex< double >(a3), complex< double >(a4), complex< double >(a5), complex< double >(a6), complex< double >(a7) };
скажи, а сразу объявить массив и вводить в него данные, религия не позволяет?
типа
C++
1
2
3
4
5
6
7
complex <double> Z[8];
for(int i=0;i<sizeof(Z)/sizeof(Z[0];i++)
{
cout << "Введите значение сопротивления в"<<i+1<< "ветви (действительная часть, мнимая) ->";
cin >>Z[i];
 
}
0
4 / 4 / 1
Регистрация: 18.09.2014
Сообщений: 249
21.06.2015, 23:30  [ТС] 13
ValeryS, спасибо и не ругайте сильно, первый раз делаю комплексные.

И такой вопрос, как перемножить три матрицы, и как транспонировать матрицу, возвести в степень -1
0
Модератор
Эксперт по электронике
8790 / 6575 / 892
Регистрация: 14.02.2011
Сообщений: 23,084
21.06.2015, 23:31 14
Цитата Сообщение от bogdan_z Посмотреть сообщение
И такой вопрос, как перемножить три матрицы, и как транспонировать матрицу, возвести в степень -1
это уже вопрос математики а не программирования,
как перемножать матрицы знаешь?
0
4 / 4 / 1
Регистрация: 18.09.2014
Сообщений: 249
21.06.2015, 23:32  [ТС] 15
ValeryS, ну мало ли, может где видели подобные темы)
спасибо за совет)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.06.2015, 23:32
Помогаю со студенческими работами здесь

Комплексные числа
2. Даны два комплексных числа в алгебраической форме. Найти их произведение. Пример ...

Комплексные числа
Доброе время суток! Я новичок в Си++ а задали задание сделать: Заранее спасибо!

Комплексные числа
Написать программу производящую арифметические действия над вводимыми с клавиатуры комплексными...

Комплексные числа
Не могу решить эту задачу!Напишите Алгоритм пожалуйста,вот условие: 1)Вводятся два комплексных...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru