Alt linux Программирование на языке С++ в среде Qt Creator Е. Р. Алексеев, Г. Г. Злобин, Д. А. Костюк, О. В. Чеснокова, А. С. Чмыхало Москва alt linux 2015



Download 5,27 Mb.
Pdf ko'rish
bet59/193
Sana24.02.2022
Hajmi5,27 Mb.
#227496
1   ...   55   56   57   58   59   60   61   62   ...   193
Bog'liq
Book-qtC


Глава 4. Использование функций при программировании на C++
Рис. 4.8: Алгоритм метода Ньютона
}
while ( f a b s ( a
−b )>=ep s ) ;
return k ;
}
//Функция, реализующая метод хорд.
i n t Chord ( double a , double b , double ∗ c , double e p s )
{ i n t k=0;
do
{
∗ c=a−f ( a ) / ( f ( b )−f ( a ) ) ∗ ( b−a ) ;
i f ( f ( ∗ c ) ∗ f ( a ) >0) a=∗c ;
e l s e b=∗c ;
k++;
}
while ( f a b s ( f ( ∗ c ) )>=e p s ) ;
return k ;
}
double f 1 ( double x )
//Первая производная функции f (x).
{
Программирование на языке С++ в среде Qt Creator


4.4. Решение задач с использованием функций
119
Рис. 4.9: Алгоритм метода простой итерации
return ( 2 ∗ x+5∗ s i n ( 5 ∗ x ) ) ;
}
double f 2 ( double x )
//Вторая производная функции f (x).
{
return (2+25∗ c o s ( 5 ∗ x ) ) ;
}
//Функция, реализующая метод касательных.
i n t Tangent ( double a , double b , double ∗ c , double e p s )
{ i n t k=0;
i f ( f ( a ) ∗ f 2 ( a ) >0) ∗ c=a ;
e l s e ∗ c=b ;
do
{
∗ c=∗c−f ( ∗ c ) / f 1 ( ∗ c ) ;
k++;
}
while ( f a b s ( f ( ∗ c ) )>=e p s ) ;
return k ;
}
© 2015 Алексеев Е. Р., Злобин Г. Г., Костюк Д. А., Чеснокова О. В., Чмыхало А. С.


120
Глава 4. Использование функций при программировании на C++
double f i ( double x , double L) //Функция, заданная выражением 4.4 .
{
return ( x+L∗ f ( x ) ) ;
}
//Функция, реализующая метод простой итерации.
i n t I t e r a t i o n ( double ∗x , double L , double e p s )
{ i n t k=0; double x0 ;
do
{
x0=∗x ;
∗x= f i ( x0 , L ) ;
k++;
}
while ( f a b s ( x0
−∗x )>=ep s ) ;
return k ;
}
i n t main ( )
{
double A, B, X, P ;
double ep = 0 . 0 0 1 ;
//Точность вычислений.
i n t K;
cout<<" a = " ; c i n >>A;
//Интервал изоляции корня.
cout<<" b = " ; c i n >>B ;
cout<<"Решение уравнения x ^2 - c o s ( 5 * x ) = 0 . "<cout<<"Метод дихотомии:"<K=Dichotomy (A, B,&X, ep ) ;
cout<<"Найденное решение x = "<cout<<" , количество итераций k = "<cout<<"Метод хорд:"<K=Chord (A, B,&X, ep ) ;
cout<<" Найденное решение x = "<cout<<" , количество итераций k = "<cout<<"Метод касательных: "<K=Tangent (A, B,&X, ep ) ;
cout<<" Найденное решение x = "<cout<<" , количество итераций k = "<cout<<"Метод простой итерации: "<X=A;
cout<<" L = " ; c i n >>P ;
K=I t e r a t i o n (&X, P , ep ) ;
cout<<" Найденное решение x = "<cout<<" , количество итераций k = "<return 0 ;
}
Результаты работы программы:
a=0.2
b=0.4
Решение уравнения x^2-cos(5*x)=0.
Метод дихотомии:
Найденное решение x=0.296094, количество итераций k=8
Метод хорд:
Найденное решение x=0.296546, количество итераций k=2
Метод касательных:
Найденное решение x=0.296556, количество итераций k=2
Метод простой итерации:
L=-0.2
Найденное решение x=0.296595, количество итераций k=3
Программирование на языке С++ в среде Qt Creator


4.5. Рекурсивные функции
121
4.5
Рекурсивные функции
Под рекурсией в программировании понимают функцию, которая вызывает
сама себя. Рекурсивные функции чаще всего используют для компактной реа-
лизации рекурсивных алгоритмов. Классическими рекурсивными алгоритмами
могут быть возведение числа в целую положительную степень, вычисление фак-
ториала. С другой стороны, любой рекурсивный алгоритм можно реализовать
без применения рекурсий. Достоинством рекурсии является компактная запись,
а недостатком — расход памяти на повторные вызовы функций и передачу па-
раметров, существует опасность переполнения памяти.
Рассмотрим применение рекурсии на примерах [7, 8].
Задача 4.8.
Вычислить факториал числа n.
Вычисление факториала подробно рассмотрено в задаче 3.12 (рис. 3.25). Для
решения этой задачи с применением рекурсии создадим функцию factoial, ал-
горитм которой представлен на рис. 4.10.
Рис. 4.10: Рекурсивный алгоритм вычисления факториала
Текст программы с применением рекурсии:
#include 
using namespace s t d ;
long i n t f a c t o r i a l ( i n t n )
{
i f ( n<=1)
return n ;
e l s e
return n∗ f a c t o r i a l ( n
−1) ;
}
i n t main ( )
{
i n t i ; long i n t f ;
cout<<" i = " ; c i n >>i ;
f= f a c t o r i a l ( i ) ;
cout<return 0 ;
}
© 2015 Алексеев Е. Р., Злобин Г. Г., Костюк Д. А., Чеснокова О. В., Чмыхало А. С.


122
Download 5,27 Mb.

Do'stlaringiz bilan baham:
1   ...   55   56   57   58   59   60   61   62   ...   193




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish