49 / 49 / 14
Регистрация: 08.04.2011
Сообщений: 124

ошибка square root

28.04.2011, 12:42. Показов 1316. Ответов 6
Метки нет (Все метки)

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
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
#include "stdafx.h"
#include <math.h>
 
// Матрица порядка 3x3
const int n=3;
 
int Zeidel (float a[n][n], float b[n], float x[n], float e)
{
    int i,j;
    float s1, s2, s, v, m;
    int iCount=0;
    do
    {
        
        m = 0;
        for (i=0;i<n;i++)
        {
            // Вычисляем суммы
                 s1 = 0;
                 s2 = 0;
 
        for (j=0;j<i;j++)  s1+=  a[i][j] * x[j];
        for( j = i; j<n;j++)  s2 += a[i][j] * x[j];
 
                 // Вычисляем новое приближение и погрешность
                 v = x[i];
                 x[i] -= (1 / a[i][i]) * (s1 + s2 - b[i]);
 
        if (fabs (v-x[i]) >m ) m = fabs(v - x[i]);
        }
        iCount++;
    }
    while (m >= e);
    printf("Number of Iterations: %i\n",iCount);
    return 1;
 
}
 
 
 
 
    /*
    A     1     2     3     4     b
 
    1     4.1   0.1   0.2   0.2   21.14
    2     0.3   5.3   0.9   -0.1  -17.82
    3     0.2   0.3   3.2   0.2   9.02
    4     0.1   0.1   0.2   -9.1  17.08
 
    Верный результат:
    x1 =  5.2000000008E+00
    x2 = -4.2000000028E+00
    x3 =  3.0000000003E+00
    x4 = -1.8000000000E+00
 
    */
 
 
int main(int argc, char* argv[])
{
    
    // Точность вычислений
    float eps = 0.0001;
    
    int i;
 
    // Матрица коэффициентов
    float a[n][n];
 
    // Столбец правых частей
    float b[n];
 
    // Вектор решения
    float x[n];
 
 
    a[0][0]=2.f;    a[0][1]=1.f;    a[0][2]=1.f; 
    a[1][0]=1.f;    a[1][1]=3.f;    a[1][2]=1.f; 
    a[2][0]=1.f;    a[2][1]=1.f;    a[2][2]=4.f; 
 
    
    b[0]=4.f;   b[1]=5.f;   b[2]=6.f; 
 
 
    // Начальное приближение - нулевой вектор
    for (i=0;i<n;i++)
    {
        x[i]=0;
    }
 
    
    if (Zeidel (a,b,x,eps))
    {
       printf ("Solution found.\n");
        for (i=0;i<n;i++)
        {
            printf ("%f\n",x[i]);
        }
    }
    else
    {
        printf ("Solution not found\n");
    }
    return 0;
 
}
на эту, которая работает под borland c 3.1
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
#include <iostream.h>
#include <conio.h>
#include <math.h>
const int n=4;
double eps = 0.0001;
double i;
double x[n];
 
double b[n]={5.458, 3.460, 18.515, 5.478};
 
double a[n][n]={{0.060, 0.048, 0.700, 0.550},
           {0.020, 0.333, 0.080, 0.300},
           {1.250, 0.400, 0.092, 0.248},
           {0.034, 0.650, 0.067, 0.300}};
 
double Zeydel (double a[n][n], double b[n], double x[n], double e)
{
 double i,j;
 double s1, s2, s, v, m;
 double ii=0;
 do
 {
  m = 0;
  for (i=0;i<n;i++)
  {
   s1=0;
   s2=0;
 
   for (j=0;j<i;j++)  s1+= a[i][j]*x[j];
   for (j=i;j<n;j++)  s2+= a[i][j]*x[j];
    v=x[i];
    x[i]-=(s1+s2-b[i])/a[i][i];
 
    if (fabs(v-x[i])>m)
     m=fabs(v-x[i]);
   }
    ii++;
   }
  while (m>=e);
 
    cout<<"Chislo iteraciy: "<<ii<<endl;
   return 1;
 }
 
void main()
{
 clrscr();
 
 for (i=0;i<n;i++)
 {
  x[i]=0;
 }
 
 if (Zeydel (a,b,x,eps))
 {
  for (i=0;i<n;i++)
  {
   cout<<"\n"<<"x"<<i+1<<" = "<<x[i];
  }}  
 getch();
}
Выдает ошибку floating point square root of negative number
Хотя когда подставляю матрицу как в первой проге, работает нормально
В чем проблема помогите пожалуйста
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.04.2011, 12:42
Ответы с готовыми решениями:

Ошибка - square не найден
// Perviy_cikl.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; #include...

Ошибка: идентификатор "square" не определен
Вот код: #include &quot;../../../std_lib_facilities.h&quot; int main() { for (int i = 0; i&lt;100; i++) cout &lt;&lt; i &lt;&lt; '\t' &lt;&lt; square(i)...

Floating Point:Square Root of Negative Number
После запуска программы в Borland C++ вылезает следующая ошибка Floating Point:Square Root of Negative Number. В чем причина и как ее...

6
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
28.04.2011, 13:09
Цитата Сообщение от kjahert Посмотреть сообщение
В чем проблема
Сюда по сообщении в том что Вы пытаетесь вычислить квадратный корень отрицательного числа. Правда где Вы его вычисляете я не вижу .
0
49 / 49 / 14
Регистрация: 08.04.2011
Сообщений: 124
01.05.2011, 15:47  [ТС]
Что-то можно сделать с ней, чтоб работала?
0
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
01.05.2011, 16:08
Пройтись в отладчике по шагам. На каком-то шаге ошибка проявится - тогда смотреть, как исправлять.
0
49 / 49 / 14
Регистрация: 08.04.2011
Сообщений: 124
01.05.2011, 16:18  [ТС]
А если отладчик не работает?
0
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
01.05.2011, 16:32
В Борланде 3.1 при компиляции в отладочном режиме - работает
Но можно понаставить отладочной печати и assert - чтобы по сообщениям отследить, где ошибка.
0
49 / 49 / 14
Регистрация: 08.04.2011
Сообщений: 124
01.05.2011, 16:39  [ТС]
Пошаговый debugger не работает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.05.2011, 16:39
Помогаю со студенческими работами здесь

Fast Inverse Square Root: перевод с C++ на Matlab
float InvSqrt(float x) { float xhalf = 0.5f*x; int i = *(int*)&amp;x; i = 0x5f3759df - (i&gt;&gt;1); x = *(float*)&amp;i; x =...

Ошибка: Inputs must be a scalar and a square matrix.
Всем доброй ночи! Помогите пожалуйста решить проблему с ошибкой: Inputs must be a scalar and a square matrix. Я понимаю ее суть (операция...

Ошибка: Matrix must be square. при построении АЧХ RC-фильтра
R=1; C=2; fc=(2*3,14*R*C)^-1; Ku=1/(1+(2*pi*f*R*C)^2)^0.5;plot(Ku,f);grid; ??? Error using ==&gt; mpower Matrix must be square.

Разложение с кратными корнями и ошибка "not a square matrix"
Здравствуйте, собственно, разложение выполнялись хорошо, пока не встретились кратные корни, проблема в том что Mathcad ругается &quot;not a...

Как работает root.rowconfigure / root.columnconfigure?
Немного не понял для чего они и как вообще используются


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

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

Новые блоги и статьи
Компиляция C++ с Clang API
NullReferenced 24.03.2025
Компиляторы обычно воспринимаются как черные ящики, которые превращают исходный код в исполняемые файлы. Мы запускаем компилятор командой в терминале, и вуаля — получаем бинарник. Но что если нужно. . .
Многопоточное программировани­е в C#: Класс Thread
UnmanagedCoder 24.03.2025
Когда запускается приложение на компьютере, операционная система создаёт для него процесс - виртуальное адресное пространство. В C# этот процесс изначально получает один поток выполнения — главный. . .
SwiftUI Data Flow: Передача данных между представлениями
mobDevWorks 23.03.2025
При первом знакомстве со SwiftUI кажется, что фреймворк предлагает избыточное количество механизмов для передачи данных: @State, @Binding, @StateObject, @ObservedObject, @EnvironmentObject и другие. . . .
Моки в Java: Сравниваем Mockito, EasyMock, JMockit
Javaican 23.03.2025
Как протестировать класс, который зависит от других сложных компонентов, таких как базы данных, веб-сервисы или другие классы, с которыми и так непросто работать в тестовом окружении? Для этого и. . .
Архитектурные паттерны микросервисов: ТОП-10 шаблонов
ArchitectMsa 22.03.2025
Популярность микросервисной архитектуры объясняется множеством важных преимуществ. К примеру, она позволяет командам разработчиков работать независимо друг от друга, используя различные технологии и. . .
Оптимизация рендеринга в Unity: Сортировка миллиона спрайтов
GameUnited 22.03.2025
Помните, когда наличие сотни спрайтов в игре приводило к существенному падению производительности? Время таких ограничений уходит в прошлое. Сегодня геймдев сталкивается с задачами совершенно иного. . .
Образование и практика
Igor3D 21.03.2025
Добрый день А вот каково качество/ эффективность ВУЗовского образования? Аналитическая геометрия изучается в первом семестре и считается довольно легким курсом, что вполне справедливо. Ну хорошо,. . .
Lazarus. Таблица с объединением ячеек.
Massaraksh7 21.03.2025
Понадобилась представление на экране таблицы с объединёнными ячейками. И не одной, а штук триста, и все разные. На Delphi я использовал для этих целей TStringGrid, и то, кривовато получалось. А в. . .
Async/await в Swift: Асинхронное программировани­е в iOS
mobDevWorks 20.03.2025
Асинхронное программирование долго было одной из самых сложных задач для разработчиков iOS. В течение многих лет мы сражались с замыканиями, диспетчеризацией очередей и обратными вызовами, чтобы. . .
Колмогоровская сложность: Приёмы упрощения кода
ArchitectMsa 20.03.2025
Наверное, каждый программист хотя бы раз сталкивался с кодом, который напоминает запутанный лабиринт — чем дальше в него погружаешься, тем сложнее найти выход. И когда мы говорим о сложности кода, мы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru