C Matematik funksiyalar

Quyida ko’riladigan matematik funksiyalardan foydalanish uchun dasturga sarlavhali fayl ulash lozim.

Trigonometrik funksiyalar. Kosinus cos, sinus sin, tangens tan.

Prototiplari:

	double cos(double x);
	double sin(double x);
	double tan(double x);

Argumentlar qiymatlari radianda beriladi. Sinus va kosinus -1 dan 1 gacha qiymat qaytaradi. Tangens sin(x)/cos(x) formula bo’yicha hisoblanadi.

Misol:

	#include<stdio.h>
	#include<math.h>
	int main()
	{
	double x;
	x = M_PI_2;
	printf("x = %lf sin = %lf\n", x, sin(x));
	x = 0;
	printf("x = %lf cos = %lf\n", x, cos(x));
	x = M_PI_4;
	printf("x = %lf cos = %lf\n", x, tan(x));
	return 0;
	}

Bu misolda M_PI_2 va M_PI_4 pi yarmi va to’rtdan bir qismini bildiruvchi konstantalardir.

Teskari trigonometrik funksiyalar. Teskari trigonometrik funksiyalar arkkosinus acos, arksinus asin, arktangens atan, ikki son x/y bo’linmasi arktangensi atan2 funksiyalari yordamida hisoblanadi.

	double acos(double x);
	double asin(double x);
	double atan(double x);
	double atan2(double y, double x);

Arkkosinus va arksinus argumentlari qiymati -1 va 1 oralig’ida yotishi kerak.

Funksiyalar radianda qiymat qaytaradi:

  • Arkkosinus qiymati 0 va pi oralig’ida.
  • Arksinus qiymati -pi/2 va pi/2 oralig’ida.
  • Arktangens qiymati -pi/2 va pi/2 oralig’ida.
  • Bo’linma arktangensi qiymati -pi va pi oralig’ida.

Misol:

	#include<stdio.h>
	#include<math.h>
	int main()
	{
	double x,y;
	x = 1;
	printf("x = %lf asin = %lf\n", x, asin(x));
	x = 0;
	printf("x = %lf acos = %lf\n", x, acos(x));
	x = 1500000;
	printf("x = %lf atan = %lf\n", x, atan(x));
	x = 3000000; y = 2;
	printf("x = %lf y = %lf atan2 = %lf\n", x, y, atan2(x,1.0));
	return 0;
	}

Bu misol bajarilish natijasida hamma funksiyalar bitta qiymat ya’ni pi yarmiga teng qiymat qaytaradi. Albatta atan va atan2 funksiyalar qiymatlari taxminan teng bo’ladi.

Absolyut qiymat. Haqiqiy son absolyut qiymati fabs funksiyasi yordamida hisoblanadi.

	Prototipi: double fabs(double x);

Misol:

	#include<stdio.h>
	#include<math.h>
	int main()
	{
	double x = -2.0;
	printf("x = %lf fabs = %lf\n", x, fabs(x));
	return 0;
	}

Logarifm. Natural logarifmni hisoblash uchun log, o’nlik logarifmni hisoblash uchun log10 funksiyalaridan foydalaniladi.

Prototiplari:

	double log(double x);
	double log10(double x);

Misol:

	#include<stdio.h>
	#include<math.h>
	int main()
	{
	double x = 2.718282;
	printf("x = %lf log = %lf\n", x, log(x));
	x = 10.0;
	printf("x = %lf log10 = %lf\n", x, log10(x));
	return 0;
	}

Eksponenta. Eksponenta hisoblash uchun exp funksiyasidan foydalaniladi.

Prototipi:

	double exp(double x);

Misol:

	#include<stdio.h>
	#include<math.h>
	int main()
	{
	double y;
	double x = 1.0;
	y = exp(x);
	printf(" x = %lf exp(x) = %lf\n", x, y);
	return 0;
	}

Daraja. Darajani hisoblash uchun pow funksiyasidan foydalanish lozim.

Prototipi:

	Double pow(double x, double y);

Funksiya xy qiymatni qaytaradi. Agar x va y ikkalasi 0 bo’lsa, natijasi 1. Agar x < 0 va y musbat bo’lsa xatolik yuzaga keladi.

Misol:

	#include<stdio.h>
	#include<math.h>
	int main()
	{
	double x = 2.0, y = 3.0;
	printf(" x = %lf y = %lf pow(x,y) = %lf\n", x, y, pow(x,y));
	return 0;
	}

Yaxlitlash funksiyalari. Sonni yuqoriga yaxlitlash uchun ceil va pastga yaxlitlash uchun floor funksiyasidan foydalaniladi.

Prototiplari:

	double ceil(double x);
	double floor(double x);

Birinchi funksiya x dan kichik bo’lmagan eng kichik butun sonni qaytaradi. Ikkinchi funksiya x dan katta bo’lmagan eng katta butun sonni qaytaradi. Ikkala funksiya butun sonni double turda qaytaradi.

Misol (ceil va floor uchun):

	#include<stdio.h>
	#include<math.h>
	int main()
	{
	double number = 123.54;
	double down, up;
	down = floor(number);
	up = ceil(number);
	printf("number = %5.2lf\n", number);
	printf("down = %5.2lf\n", down);
	printf("up = %5.2lf\n", up);
	return 0;
	}

Ildiz. Kvadrat ildiz olish uchun sqrt funksiyasidan foydalaniladi.

Prototipi:

	double sqrt(double x);

Agar parametr qiymati musbat bo’lsa natija ham musbat, manfiy bo’lsa xatolik kelib chiqadi.

Misol:

	#include<stdio.h>
	#include<math.h>
	int main()
	{
	double x = 4.0;
	double z = sqrt(x);
	printf(" x = %lf sqrt(x) = %lf\n", x, z);
	return 0;
	}

Modul. Modul ya’ni ikki son bo’linmasi x/y qoldig’ini hisoblash uchun fmod funksiyasidan foydalaniladi.

Prototipi:

	double fmod(double x, double y);

Funksiya qiymati f quyidagi shartlarga mos keladi.

x = (ay + f) bunda a butun son va 0 < f < y.

Agar y = 0,bo’lsa fmod qiymati 0 ga teng bo’ladi.

Misol:

	#include<stdio.h>
	#include<math.h>
	int main()
	{
	double x = 5.0, y = 2.0;
	double z = fmod(x, y);
	printf(" x = %lf y = %lf fmod(x,y)) = %lf\n", x, y, z);
	return 0;
	}

Kasr ajratish. Haqiqiy sonni butun va kasr qismini ajratish uchun modf funksiyasidan foydalaniladi.

Prototipi:

	double modf(double x, double *ipart);

Funksiya double x sonni qismini ipart parametrga yozib, kasr qismini qiymat sifatida qaytaradi.

Misol:

	#include<stdio.h>
	#include<math.h>
	int main()
	{
	double fraction, integer;
	double number = 100000.567;
	fraction = modf(number, &integer);
	printf("number = %lf integer = %lf fraction = %lf\n", number, integer, fraction);
	return 0;
	}