Арифметические Операции С Элементами Массива

Автор Тема: Арифметические Операции С Элементами Массива  (Прочитано 3713 раз)

Оффлайн LosinmanАвтор темы

  • Бизнес оценка: (0)
  • Дебютант
  • *
  • СПАСИБО: 0
  • Сообщений: 8
  • Карма: 1

Оффлайн LosinmanАвтор темы

  • Дебютант
  • *
Добрый день!
Никак не могу сообразить, почему получается следующий результат

Код:
Только зарегистрированные пользователи могут видеть код. Пожалуйста, войдите или зарегистрируйтесь.

Должно выводить 0, а выдаёт какой-то невразумительный ответ   -5.55112e-017

Подскажите пожалуйста, что не так?


Оффлайн Morph Gen

  • Бизнес оценка: (0)
  • Рекрут
  • *
  • СПАСИБО: 0
  • Сообщений: 11
  • Карма: 1

Оффлайн Morph Gen

  • Рекрут
  • *
Ну потому что  -5.55112e-017 - это очень маленькое число, это и есть ноль (т.н. машинный ноль).
Но у вас же дробные числа, да еще двoйной точности. "0", который вы хотите получить - это целое число.
Дак вот в компутере возникают погрешности при вычислениях и вот эти погрешности вы и получили себе на экран ( -5.55112e-017)

Сообщение отредактировал r04 - 1:06:2014, 06:52


Оффлайн LosinmanАвтор темы

  • Бизнес оценка: (0)
  • Дебютант
  • *
  • СПАСИБО: 0
  • Сообщений: 8
  • Карма: 1

Оффлайн LosinmanАвтор темы

  • Дебютант
  • *
спасибо за ответ)

хм...а можно как-то всё таки 0 получить? Может используя библиотеку какую?

Вроде элементарная задача - отнять два равных числа друг из друга и получить ноль.

Такой результат мне надо получить в рамках задачи разработки алгоритма метода исключения Гаусса (решение системы линейн уравненний).
Т.е нужно будет умножать первую строку матрицы на коэффициент и вычитать полученную строку из других строк.

Оффлайн Morph Gen

  • Бизнес оценка: (0)
  • Рекрут
  • *
  • СПАСИБО: 0
  • Сообщений: 11
  • Карма: 1

Оффлайн Morph Gen

  • Рекрут
  • *
ну можно использовать нечеткое вравнение (такая функция есть в некоторых библиотеках)

Код:
Только зарегистрированные пользователи могут видеть код. Пожалуйста, войдите или зарегистрируйтесь.
ну как-то так.


Цитировать
Вроде элементарная задача - отнять два равных числа друг из друга и получить ноль.

Задача элементарная, но в компутере нет равных дробных чисел.
Грубо говоря,
a = 1, b = 1

1.0000000000000000000001
и
1.00000000000000000000001
или
0.999999999999999999999999
Вот такие вот дела.

Оффлайн fox-fox

  • Бизнес оценка: (0)
  • Рекрут
  • *
  • СПАСИБО: 1
  • Сообщений: 36
  • Карма: -1
  • Пол: Мужской

Оффлайн fox-fox

  • Рекрут
  • *
Может так:

#include<iostream>
using namespace std;

int main()
{

float a[8][9]= {                         
{
2.9,5.6,8.9,6.3,1.7,2.0,0.5,1.0,9.3},                        
{-
0.4,4.3,5.0,1.2,1.8,-0.8,2.7,0.6,5.1},                        
{-
1.0,-0.9,5.8,1.5,2.5,0.8,3.8,9.2,2.0},                        
{
0.6,3.4,7.4,13.2,7.3,10.1,12.3,10.6,14.0},                        
{-
1.0,-4.3,-4.7,-3.2,7.7,5.4,1.7,7.6,1.4},                        
{-
0.7,-3.4,-1.1,-3.4,-4.5,0.8,1.5,3.4,-6.5},                        
{-
1.4,-2.0,-2.1,-6.3,-2.2,-3.0,1.7,8.8,1.6},     
{-
1.2,-3.9,-2.8,-6.4,-0.5,-1.3,-1.1,13.6,3.3}                         
};

//double x =  (a[1][0]/a[0][0]) * a[0][0];
float y = (a[1][0] - (a[1][0]/a[0][0]) * a[0][0]);
cout << << endl;

system("pause>> void");
return 
0;
}


 

Похожие темы

  Тема / Автор Ответов Последний ответ
3 Ответов
1646 Просмотров
Последний ответ 11-04-2012, 21:17:42
от Glava
7 Ответов
1815 Просмотров
Последний ответ 24-05-2012, 15:03:08
от [Lichkin-rus]
1 Ответов
3810 Просмотров
Последний ответ 04-12-2014, 14:45:22
от fox-fox
5 Ответов
1605 Просмотров
Последний ответ 22-03-2015, 22:19:30
от Андрей88
0 Ответов
2529 Просмотров
Последний ответ 26-10-2016, 10:41:03
от lokdown