Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
HawKKK
0 / 0 / 0
Регистрация: 28.06.2015
Сообщений: 26
#1

Квадратное уравнение - C++

10.10.2015, 14:12. Просмотров 291. Ответов 11
Метки нет (Все метки)

Есть такое задание: Написать программу, которая найдет корни уравнения квадратного http://www.cyberforum.ru/cgi-bin/latex.cgi?{a}^{2}+bx+c=0 и проверить для данных type real которые равны: а=1е-16; b=10; c=1.
Не могу понять что нужно делать с a=1e-16?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.10.2015, 14:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Квадратное уравнение (C++):

Создать производные классы линейное уравнение и квадратное уравнение, в которых данная функция переопределена - C++
Создать абстрактный базовый класс уравнение с виртуальной функцией - корни уравнения. Создать производные классы линейное уравнение и...

Квадратное уравнение в с - C++
Здравствуйте. Надо найти корни квадратного уравнения или показать что один корень или нет корней. Нужно сделать в с, а не в с++. Please,...

Квадратное уравнение - C++
всем привет!кто нибудь может написать программу решения квадратного уравнения в общем виде с комплексными коэффициентами(используя...

С++ квадратное уравнение - C++
Здравствуйте! Подскажите с чего начать вот такую задачу решать. Спасибо всем за помощь! Задача (консольная программа). Верно...

Квадратное уравнение - C++
Прога работает, но неправильно считает корни, что не так??? #include <stdio.h> #pragma hdrstop #include <math.h> #include...

Квадратное уравнение - C++
Все здраствуйте))Изучаю С++ второй день)решил написать программу для решения корней квадратного уравнения вида A*x^2+b*x+C=0. Все вроде...

11
nmcf
5557 / 4867 / 1650
Регистрация: 14.04.2014
Сообщений: 19,758
10.10.2015, 14:14 #2
Использовать в решении.
0
HawKKK
0 / 0 / 0
Регистрация: 28.06.2015
Сообщений: 26
10.10.2015, 14:27  [ТС] #3
nmcf, Мой код такой
C++
1
2
3
4
5
6
7
8
9
10
float a, b, c, d, x1, x2;
    a = 1e-16;
    b = 10;
    c = 1;
    d = (b*b) - 4 * a * c;
    cout << d << endl; // D=100  
    x1 = ((-b) + sqrt(d)) / 2 * a;
    x2 = ((-b) - sqrt(d)) / 2 * a;
    cout << x1 << endl; // Ответ 0
    cout << x2 << endl; // Ответ -1е-15
Меня смущает дискриминант т.к. b*b =100 так еще нужно отнять (4 * a * c)=число выйдет маленькое.
0
nmcf
5557 / 4867 / 1650
Регистрация: 14.04.2014
Сообщений: 19,758
10.10.2015, 14:31 #4
И что? Пусть будет маленькое. Только используй double. Откуда такое пристрастие к этому древнему float?
0
Barrent
244 / 120 / 41
Регистрация: 04.05.2013
Сообщений: 346
Завершенные тесты: 2
10.10.2015, 16:07 #5
Цитата Сообщение от nmcf Посмотреть сообщение
Откуда такое пристрастие к этому древнему float?

Не по теме:

4 байта же

0
zss
Модератор
Эксперт С++
6540 / 6102 / 2010
Регистрация: 18.12.2011
Сообщений: 15,878
Завершенные тесты: 1
10.10.2015, 16:10 #6
HawKKK,
Цитата Сообщение от HawKKK Посмотреть сообщение
x1 = ((-b) + sqrt(d)) / 2 * a;
Почему у Вас a попало в числитель?
C++
1
x1 = (-b + sqrt(d)) /( 2.0 * a);
Приблизительное значение обоих корней должно быть близко к решению при a=0, т.е.
x=-b/c=-10.0/1.0=-10.0
И, естественно, float меняйте на double.
0
Байт
Диссидент
Эксперт C
16575 / 10845 / 1653
Регистрация: 24.12.2010
Сообщений: 20,987
10.10.2015, 16:15 #7
Цитата Сообщение от zss Посмотреть сообщение
Почему у Вас a попало в числитель?
Дык, d = b*b - 4*a*c
А решать надо по-хитрому. В этом случае приблизительная формула оказывается точнее точной
sqrt(1 + x) = 1 + x/2
1
HawKKK
0 / 0 / 0
Регистрация: 28.06.2015
Сообщений: 26
11.10.2015, 11:47  [ТС] #8
Хорошо, но мне не нравится то что дискреминант получается 100, как можно убрать округление что бы вышло 99.9999999999999996?
0
zss
Модератор
Эксперт С++
6540 / 6102 / 2010
Регистрация: 18.12.2011
Сообщений: 15,878
Завершенные тесты: 1
11.10.2015, 11:53 #9
возьмите b=9.99999999999999
0
UnknownSoldier
574 / 95 / 38
Регистрация: 08.04.2015
Сообщений: 213
11.10.2015, 11:57 #10
Цитата Сообщение от HawKKK Посмотреть сообщение
как можно убрать округление что бы вышло 99.9999999999999996?
В типе double ~15 значащих цифр, он просто не может представлять числа с более высокой точностью.
0
zss
Модератор
Эксперт С++
6540 / 6102 / 2010
Регистрация: 18.12.2011
Сообщений: 15,878
Завершенные тесты: 1
11.10.2015, 12:23 #11
Цитата Сообщение от UnknownSoldier Посмотреть сообщение
~15 значащих цифр
Чуть больше: ~17
0
Байт
Диссидент
Эксперт C
16575 / 10845 / 1653
Регистрация: 24.12.2010
Сообщений: 20,987
11.10.2015, 12:42 #12
Почему-то никто не обратил внимания на
Цитата Сообщение от Байт Посмотреть сообщение
sqrt(1 + x) = 1 + x/2
А ведь тут есть зернышко истины...
0
11.10.2015, 12:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.10.2015, 12:42
Привет! Вот еще темы с ответами:

Квадратное уравнение - C++
ПОМОГИТЕ ПЛИЗ ДОПИСАТЬ ЗАДАЧУ А ТО ЧТОТ ВАШПЕ НЕПОЛУЧАЕТСЯ , НЕРАБОТАЕТ ))*ЕСЛИ МОЖНО ТО С КОММЕНТАРИЯМИ 1)Написать программу решения...

квадратное уравнение - C++
написать функции вычисления квадрат.уравнения

Квадратное уравнение - C++
ax^2+bx+c=o в c\c++

Квадратное уравнение - C++
Написала программу, вроде все должно работать, как должно, ан нет... Условие: у=корень квадратный из (25-икс квадрат) + 2а/х-3 ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru