Глава 3. Операторы управления
Рис. 3.17: Алгоритм решения кубического уравнения
r o=s q r t ( ( f l o a t ) (−p∗p∗p / 2 7 ) ) ;
f i =−q / ( 2 ∗ r o ) ;
f i =p i /2−atan ( f i / s q r t (1− f i ∗ f i ) ) ;
x1=2∗pow ( ro , ( f l o a t ) 1 / 3 ) ∗ c o s ( f i / 3 )−r / 3 ;
x2=2∗pow ( ro , ( f l o a t ) 1 / 3 ) ∗ c o s ( f i /3+2∗ p i / 3 )−r / 3 ;
x3=2∗pow ( ro , ( f l o a t ) 1 / 3 ) ∗ c o s ( f i /3+4∗ p i / 3 )−r / 3 ;
cout<<" \ n x1 = "<cout<<" \ t x3 = "<}
e l s e
{
Программирование на языке С++ в среде Qt Creator
3.3. Условные операторы
59
//Формулы
3.4
i f (
−q/2+ s q r t (D) >0) u=pow((−q/2+ s q r t (D) ) , ( f l o a t ) 1 / 3 ) ;
e l s e
i f (
−q/2+ s q r t (D) <0) u=−pow ( f a b s (−q/2+ s q r t (D) ) , ( f l o a t ) 1 / 3 ) ;
e l s e u=0;
i f (
−q/2− s q r t (D) >0) v=pow((−q/2− s q r t (D) ) , ( f l o a t ) 1 / 3 ) ;
e l s e
i f (
−q/2− s q r t (D) <0) v=−pow ( f a b s (−q/2− s q r t (D) ) , ( f l o a t ) 1 / 3 ) ;
e l s e v =0;
x1=u+v−r / 3 ; //Вычисление действительного корня кубического уравнения.
h=−(u+v ) /2− r / 3 ; //Вычисление действительной
g=(u−v ) /2∗ s q r t ( ( f l o a t ) 3 ) ; //и мнимой части комплексных корней
cout<<" \ n x1 = "<i f ( x2>=0)
{
cout<cout<}
e l s e
{
cout<cout<}
}
i f ( g>=0)
{
cout<<" \ t x2 = "<cout<<" \ t x3 = "<}
e l s e
{
cout<<" \ t x2 = "<cout<<" \ t x2 = "<}
}
return 0 ;
}
Задача 3.7.
Заданы коэффициенты a, b и c биквадратного уравнения ax
4
+bx
2
+
c = 0. Найти все его действительные корни.
Входные данные
: a, b, c.
Выходные данные
: x1, x2, x3, x4.
Для решения биквадратного уравнения необходимо заменой y = x
2
привести
его к квадратному уравнению ay
2
+ by + c = 0 и решить это уравнение.
Опишем алгоритм решения этой задачи (рис. 3.18):
1. Ввод коэффициентов биквадратного уравнения a, b и c (блок 1).
2. Вычисление дискриминанта уравнения d (блок 2).
3. Если d < 0 (блок 3), вывод сообщения, что корней нет (блок 4), а ина-
че определяются корни соответствующего квадратного уравнения y1 и y2
(блок 5).
4. Если y1 < 0 и y2 < 0 (блок 6) , то вывод сообщения, что корней нет (блок 7).
5. Если y1 ≥ 0 и y2 ≥ 0 (блок 8), то вычисляются четыре корня по формулам
±
√
y
1
, ±
√
y
2
(блок 9) и выводятся значения корней (блок 10).
6. Если условия 4) и 5) не выполняются, то необходимо проверить знак y1. Ес-
ли y1 ≥ 0 (блок 11), то вычисляются два корня по формуле ±√y
1
(блок 12),
иначе (если y2 ≥ 0) вычисляются два корня по формуле ±√y
2
(блок 13).
Вывод вычисленных значений корней (блок 14).
© 2015 Алексеев Е. Р., Злобин Г. Г., Костюк Д. А., Чеснокова О. В., Чмыхало А. С.
60
Do'stlaringiz bilan baham: |