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

-nan ind при решении сл

26.11.2018, 23:10. Показов 4891. Ответов 4

Author24 — интернет-сервис помощи студентам
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
#include "stdafx.h"
#include<iostream>
using namespace std;
int main()
{
    setlocale(LC_ALL, "Russian");
    float A[10][10];
    float U[10][10];
    float b[10], x[10], y[10];
    int n, k;
    int i, j;
    float temp;
    cout << "Введите размерность матрицы " << endl;
    cin >> n;
label:
    cout << "Введите элементы матрицы " << n << "x" << n << endl;
    for (i = 0; i < n; i++)
        for (j = 0; j < n; j++)
        {
            cin >> A[i][j];
        }
    for (i = 0; i < n; i++)
        for (j = 0; j < n; j++)
        {
            U[i][j] = 0;
        }
    //проверка на симметричность
    for (i = 0; i < n; i++)
        for (j = 0; j < n; j++)
        {
            if (A[i][j] != A[j][i])
            {
                cout << "матрица не симетрична" << endl;
                goto label;
            }
        }
    cout << "введите елементы вектора b " << n << "x" << n << endl;
    for (i = 0; i < n; i++)
    {
        cin >> b[i];
    }
 
    for (int i = 0; i < n; i++)
    {
        temp = 0;
        for (int k = 0; k < i; k++)
            temp = temp + U[k][i] * U[k][i];
        U[i][i] = sqrt(A[i][i] - temp);
        for (j = i; j < n; j++)
        {
            temp = 0;
            for (k = 0; k < i; k++)
                temp = temp + U[k][i] * U[k][j];
            U[i][j] = (A[i][j] - temp) / U[i][i];
        }
    }
    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++) {
            cout << U[i][j] << " ";
        }
        cout << endl;
    }
    for (i = 0; i < n; i++)
    {
        temp = 0;
        for (int k = 0; k < i; k++)
            temp = temp + U[k][i] * y[k];
        y[i] = (b[i] - temp) / U[i][i];
    }
    for (i = n - 1; i >= 0; i--)
    {
        temp = 0;
        for (int k = i + 1; k < n; k++)
            temp = temp + U[i][k] * x[k];
        x[i] = (y[i] - temp) / U[i][i];
    }
    for (i = 0; i < n; i++)
        cout << "x" << i << "= " << x[i] << endl;
    system("pause");
}
[/CPP]
Исходные данные такие:
Матрица 123 214 341, вектор -3 -5 5.
На выходе получаю:
1 2 3
0 -nan - nan
0 0 -nan
x0=nan
x1=nan
x2=nan.
Я понимаю что nan означает что получилось не число, но не пойму что не так.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.11.2018, 23:10
Ответы с готовыми решениями:

Ошибка -nan(ind) и nan
Доброго времени суток форумчане! Решаю задачу, в которой необходимо найти площадь треугольника по...

-nan(ind)
Что такое -nan(ind) и как это исправить? #define _CRT_SECURE_NO_WARNINGS #include &lt;iostream&gt;...

-nan(ind)
нужно вычислить значение функции, вроде сделал все проверки, но все равно при вводе отрицательного...

Ошибка -nan(ind)
Как исправить? #include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; int main() { int...

4
75 / 59 / 31
Регистрация: 20.03.2017
Сообщений: 351
27.11.2018, 08:48 2
MysteryMC, ставь точки останова и смотри где это у тебя появляется.
Обычно NaN появляется, если было что-то из этого:

- все математические операции, содержащие NaN в качестве одного из операндов;
- деление нуля на ноль;
- деление бесконечности на бесконечность;
- умножение нуля на бесконечность;
- сложение бесконечности с бесконечностью противоположного знака;
- вычисление квадратного корня отрицательного числа;
- логарифмирование отрицательного числа.
0
0 / 0 / 0
Регистрация: 09.02.2017
Сообщений: 26
27.11.2018, 11:45  [ТС] 3
Вот что у меня получилось, я поставил останову на вычисление квадратного корня. Но я не пойму почему у меня такие значения К и U[i][k]
0
0 / 0 / 0
Регистрация: 09.02.2017
Сообщений: 26
27.11.2018, 11:47  [ТС] 4
Не загрузилось вложение
Миниатюры
-nan ind при решении сл  
0
75 / 59 / 31
Регистрация: 20.03.2017
Сообщений: 351
27.11.2018, 12:32 5
MysteryMC, в строке 48
C++
1
U[i][i] = sqrt(A[i][i] - temp);
Получается что при второй итерации ты извлекаешь корень из отрицательного числа.
0
27.11.2018, 12:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.11.2018, 12:32
Помогаю со студенческими работами здесь

Выдаёт -nan(ind)
Header.h файл#pragma once double f(double x); double h(double a, double b, int n); double hi(int...

Ошибка -nan (ind)
Не пойму, как избавится от этой ошибки #include &quot;pch.h&quot; #include &lt;iostream&gt; #include &lt;fstream&gt;...

Ошибка nan(ind)
Помогите, пожалуйста. Что за ошибка nan(ind) в момент когда y должен быть равен 0 #include...

Ошибка -nan<ind>
#include &quot;pch.h&quot; #include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; int main() {...

Почему выдает -nan(ind)
#include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; int main() { ...

Что такое -nan<ind>
Написал код. После введения переменных получаю в консоли ответ &quot;-nan&lt;ind&gt;&quot;. В чём может быть...


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

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