Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
andreyananas
22 / 22 / 11
Регистрация: 15.10.2013
Сообщений: 862
Завершенные тесты: 2
#1

Проверить правильность вычисления по формулам

15.03.2014, 19:04. Просмотров 867. Ответов 22
Метки нет (Все метки)

Правильно я записал формулы?
Вернее я точно знаю что нет, где ошибка?))
C++
1
2
3
4
5
6
7
{
        u=sqrt(sqrt((-q/2)+sqrt(d)));
        v=(-p)/(3*u);
        y1=u+v;
        y2=((-u+v)/2)+((sqrt(3)*(u-v))/2);
        y3=((-u+v)/2)-((sqrt(3)*(u-v))/2);
    }
http://www.cyberforum.ru/cgi-bin/latex.cgi?u=\sqrt[3]{(\frac{-q}{2})+\sqrt{d}}
http://www.cyberforum.ru/cgi-bin/latex.cgi?v=\frac{-p}{3u}
y1=u+v
http://www.cyberforum.ru/cgi-bin/latex.cgi?y2=\frac{u+v}{-2}+\frac{\sqrt{3}(u-v)}{2}
http://www.cyberforum.ru/cgi-bin/latex.cgi?y3=\frac{u+v}{-2}-\frac{\sqrt{3}(u-v)}{2}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.03.2014, 19:04
Ответы с готовыми решениями:

Вычисления по формулам
Верна ли запись в 20 строке, если функция имеет вид y=((e^x-2.7)+3)/x+1.3...

Вычисления по формулам
Здраствуйте.Рещите задачку пожалуйста,Я Си только начал,нужен токо этот пример...

Вычисления по формулам
Вычислить значение выражения по формуле (все переменные принимают...

Вычисления по известным формулам
Составить программу вычисления значения функции ...

Программа вычисления значения Y по математическим формулам
Вот задача: y = |b-1|+tg^5(c+a) если (-1 < x < 1); y = cos ln^2 x+x^8 если (x...

22
agent008
1 / 1 / 3
Регистрация: 15.03.2014
Сообщений: 118
15.03.2014, 19:08 #2
Корень записивается через pow() а не sqrt()
0
saden
183 / 167 / 52
Регистрация: 27.01.2013
Сообщений: 788
15.03.2014, 19:10 #3
неправильно только первое. Действительно, корень 3-го порядка - это не корень из корня, а число в степени 1/3
0
andreyananas
22 / 22 / 11
Регистрация: 15.10.2013
Сообщений: 862
Завершенные тесты: 2
15.03.2014, 19:11  [ТС] #4
C++
1
2
3
4
5
6
7
{
        r=sqrt(((-p)*p*p)/27);
        fi=acos((-q)/2*r);
        y1=2*sqrt(sqrt(r))*cos(fi/3);
        y1=2*sqrt(sqrt(r))*cos((fi+2*M_PI)/3);
        y1=2*sqrt(sqrt(r))*cos((fi+4*M_PI)/3);
}
http://www.cyberforum.ru/cgi-bin/latex.cgi?r=\sqrt{\frac{{-p}^{3}}{27}}
http://www.cyberforum.ru/cgi-bin/latex.cgi?fi=arccos(\frac{-q}{2r})
http://www.cyberforum.ru/cgi-bin/latex.cgi?y1=2\left|\sqrt[3]{r} \right|cos(\frac{fi}{3})
http://www.cyberforum.ru/cgi-bin/latex.cgi?y1=2\left|\sqrt[3]{r} \right|cos(\frac{fi+2\pi }{3})
http://www.cyberforum.ru/cgi-bin/latex.cgi?y1=2\left|\sqrt[3]{r} \right|cos(\frac{fi+4\pi }{3})
0
saden
183 / 167 / 52
Регистрация: 27.01.2013
Сообщений: 788
15.03.2014, 19:13 #5
C++
1
fi=acos((-q)/2*r);
->
C++
1
fi=acos((-q)/2/r);
+ те же ошибки с корнем 3-го порядка
0
andreyananas
22 / 22 / 11
Регистрация: 15.10.2013
Сообщений: 862
Завершенные тесты: 2
15.03.2014, 19:13  [ТС] #6
Цитата Сообщение от saden Посмотреть сообщение
Действительно, корень 3-го порядка - это не корень из корня, а число в степени 1/3
хм... просто навыходе мне вообще пишет например y1= nan
0
saden
183 / 167 / 52
Регистрация: 27.01.2013
Сообщений: 788
15.03.2014, 19:14 #7
возможно, попадается корень из отрицательного числа
0
Esecman
38 / 26 / 12
Регистрация: 31.12.2013
Сообщений: 329
15.03.2014, 19:15 #8
#QNAN
0
andreyananas
22 / 22 / 11
Регистрация: 15.10.2013
Сообщений: 862
Завершенные тесты: 2
15.03.2014, 21:30  [ТС] #9
Цитата Сообщение от Esecman Посмотреть сообщение
#QNAN
И что это значит?

Добавлено через 1 час 35 минут
ну так как правильно записать???

Добавлено через 42 секунды
ппц куча ответов и ничего конкретного(

Добавлено через 3 минуты
agent008, как правильно прописать pow() ?
0
saden
183 / 167 / 52
Регистрация: 27.01.2013
Сообщений: 788
15.03.2014, 21:31 #10
http://www.cyberforum.ru/cgi-bin/latex.cgi?y=\sqrt[3]{x}=x^{\frac13}=e^{\frac{\ln{x}}3}
C++
1
y=exp(ln(x)/3)
0
ValeryS
Модератор
7219 / 5482 / 682
Регистрация: 14.02.2011
Сообщений: 18,539
15.03.2014, 21:33 #11
Цитата Сообщение от andreyananas Посмотреть сообщение
хм... просто навыходе мне вообще пишет например y1= nan
Цитата Сообщение от saden Посмотреть сообщение
возможно, попадается корень из отрицательного числа
ну дак при квадратном корне и будет ошибка, а при третьей степени нет
Цитата Сообщение от andreyananas Посмотреть сообщение
ну так как правильно записать???
тебе сто раз уже сказали
вместо
Цитата Сообщение от andreyananas Посмотреть сообщение
u=sqrt(sqrt((-q/2)+sqrt(d)));
C++
1
u=pow ( ((-q/2)+sqrt(d)),1.0/3.0);
1
Esecman
38 / 26 / 12
Регистрация: 31.12.2013
Сообщений: 329
15.03.2014, 21:43 #12
C++
1
#include <math.h>
И не ln, а log
2
andreyananas
22 / 22 / 11
Регистрация: 15.10.2013
Сообщений: 862
Завершенные тесты: 2
15.03.2014, 21:46  [ТС] #13
Цитата Сообщение от ValeryS Посмотреть сообщение
C++
1
u=pow ( ((-q/2)+sqrt(d)),1.0/3.0)
;
не работает, проверял на простом примере.
C++
1
2
3
a=81
a=pow((a),1.0/3.0);
cout << a;
выбивает 4.9347...
0
saden
183 / 167 / 52
Регистрация: 27.01.2013
Сообщений: 788
15.03.2014, 21:47 #14
а сколько должно быть?
0
andreyananas
22 / 22 / 11
Регистрация: 15.10.2013
Сообщений: 862
Завершенные тесты: 2
15.03.2014, 21:49  [ТС] #15
Цитата Сообщение от saden Посмотреть сообщение
а сколько должно быть?
а разве не 3???
0
saden
183 / 167 / 52
Регистрация: 27.01.2013
Сообщений: 788
15.03.2014, 21:50 #16
не, это для 27
1
ValeryS
Модератор
7219 / 5482 / 682
Регистрация: 14.02.2011
Сообщений: 18,539
15.03.2014, 21:52 #17
Цитата Сообщение от saden Посмотреть сообщение
а сколько должно быть?
4,3267487109222251469649149323403(калькулятор сказал)
4.9 это уже близко к 5 а 53=125
сейчас загружу компилятор и проверю
1
andreyananas
22 / 22 / 11
Регистрация: 15.10.2013
Сообщений: 862
Завершенные тесты: 2
15.03.2014, 22:03  [ТС] #18
Цитата Сообщение от ValeryS Посмотреть сообщение
4,3267487109222251469649149323403(калькулятор сказал)
4.9 это уже близко к 5 а 53=125
сейчас загружу компилятор и проверю
Да все норм, я наночь глядя ступил с 81... надо было 27 писать)))

Добавлено через 7 минут
в итоге все равно пишет y1= "nan"

Добавлено через 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
#include <iostream>
#include <math.h>
#include <cmath>
 
using namespace std;
 
int main()
{
    float a, b, c, p, q, y1, y2, y3, d, u, v, r, fi;
    cout << "This program unleashes the cubic equation\n";
    cout << "Enter a factor - a:\n";
    cin >> a;
    cout << "Enter a factor - b:\n";
    cin >> b;
    cout << "Enter a factor - c:\n";
    cin >> c;
    cout << "x^3+" << a << "x^2+" << b << "x+" << c << "=0\n";
    p=b-(a*a/3);
    q=((2*(a*a*a))/27)-((a*b)/3)+c;
    d=((p*p*p)/27)+((q*q)/4);
    if (d>0)
    {
        u=pow(((-q/2)+sqrt(d)),1.0/3.0);
        v=(-p)/(3*u);
        y1=u+v;
        y2=((-u+v)/2)+((sqrt(3)*(u-v))/2);
        y3=((-u+v)/2)-((sqrt(3)*(u-v))/2);
    }
    if (d==0)
    {
        y1=(3*q)/p;
        y2=y3=((-3)*q)/2*p;
    }
    if (d<0)
    {
        r=sqrt(((-p)*p*p)/27);
        fi=acos((-q)/2*r);
        y1=2*pow((r),1.0/3.0)*cos(fi/3);
        y1=2*pow((r),1.0/3.0)*cos((fi+2*M_PI)/3);
        y1=2*pow((r),1.0/3.0)*cos((fi+4*M_PI)/3);
    }
    cout << y1;
}
вот код программы
0
saden
183 / 167 / 52
Регистрация: 27.01.2013
Сообщений: 788
15.03.2014, 22:08 #19
в математике корень от отрицательного числа считается неопределенным. Даже нечетного порядка.

Не могу сказать, реализовано ли это в библиотеках С++, но попробуйте разделить отрицательные значения через if

Добавлено через 1 минуту
кстати, судя по коду d может быть отрицательным, а от него берецца квадратный корень

Добавлено через 1 минуту
Не, виноват, не досмотрел...
Проверяй знаки, пока на примете р
0
ValeryS
Модератор
7219 / 5482 / 682
Регистрация: 14.02.2011
Сообщений: 18,539
15.03.2014, 22:14 #20
итак VS 2008
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <math.h>
 
int main()
{
double a=81;
a=pow((a),1.0/3.0);
std::cout << a;
 return 0;
}
ответ 4.32675
не знаю откуда у тебя
Цитата Сообщение от andreyananas Посмотреть сообщение
выбивает 4.9347...
взялось

Добавлено через 3 минуты
Цитата Сообщение от andreyananas Посмотреть сообщение
в итоге все равно пишет y1= "nan"
пройди в Дебагере по шагам
или выводи на экран все промежуточные вычисления
есть подозрение что
Цитата Сообщение от andreyananas Посмотреть сообщение
d=((p*p*p)/27)+((q*q)/4);
отрицательное
а от него корень берется
"nan" в переводе на русский язык невозможное число

Добавлено через 2 минуты
Цитата Сообщение от andreyananas Посмотреть сообщение
float a, b, c, p, q, y1, y2, y3, d, u, v, r, fi;
поменяй на double
0
15.03.2014, 22:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.03.2014, 22:14

Вычисления по формулам, использование стандартных математических функций
Помогите написать программу, а то не понимаю как записать формулу......

Создать программу для вычисления Y и Z по заданным формулам
Помогите пожалуйста,знаю что простенько,но не понимаю,а если можно то и...

Проверить правильность кода
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; // новый стандарт - хидеры не имеют...


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

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

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