Perpustakaan fungsi matematik matematik.h. Fungsi matematik piawai dalam bahasa C

Matematik.h- fail pengepala perpustakaan standard Bahasa C, direka bentuk untuk berfungsi dengan mudah operasi matematik. Memandangkan C++ juga melaksanakan fungsi ini untuk keserasian (semuanya terkandung dalam fail pengepala cmath), kami akan mempertimbangkan bahasa ini bersama-sama. Di bawah Linux dan FreeBSD fungsi matematik disimpan secara berasingan dalam perpustakaan matematik libm. Oleh itu, jika mana-mana arahan ini digunakan, pilihan -lm mesti dihantar kepada pemaut semasa membina. Oleh kerana keputusan kebanyakan operasi matematik ialah nombor pecahan, semua fungsi perpustakaan menerima dua kali ganda. Untuk bekerja dengan apungan dan berganda panjang fungsi dengan postfixes f dan l digunakan, masing-masing.

Kompleks.h- fail pengepala perpustakaan standard bahasa pengaturcaraan C, yang mengisytiharkan fungsi untuk aritmetik kompleks. Fungsi ini menggunakan jenis kompleks terbina dalam, yang diperkenalkan dalam standard C99. Fungsi dalam fail pengepala complex.h disediakan untuk tiga jenis— double, float dan long double (nilai dibentangkan dalam radian): untuk pengiraan nilai trigonometri sinus, kosinus, tangen dan kotangen untuk nombor kompleks, logaritma dan eksponen, punca.

GNU (GSL)- ianya percuma perisian bawah lesen GNU Lesen Awam Am. Perpustakaan menyediakan pelbagai rutin matematik seperti penjana nombor rawak, fungsi khas dan petak terkecil. Terdapat lebih 1000 ciri secara keseluruhan dengan suite ujian yang luas. Tidak seperti lesen untuk perpustakaan berangka proprietari, GSL tidak menyekat kerjasama saintifik. Untuk memasukkan perpustakaan anda mesti menulis: $\# include $. Untuk menggunakan pengendalian pengecualian C++ dalam rangka kerja fungsi tersuai dihantar ke perpustakaan sebagai parameter, perpustakaan mesti dibina dengan pilihan kompilasi -fexceptions. Perpustakaan boleh digunakan dalam program berbilang benang. Semua fungsi berulir dalam erti kata bahawa mereka tidak menggunakan pembolehubah statik. Memori sentiasa dikaitkan dengan objek, bukan fungsi. Untuk fungsi yang objeknya digunakan ruang kerja Sebagai storan sementara, ruang kerja mesti diperuntukkan berdasarkan setiap utas. Untuk fungsi yang menggunakan objek meja, memori boleh digunakan oleh berbilang benang pada masa yang sama. Jadual hujah sentiasa diisytiharkan malar dalam prototaip fungsi untuk menunjukkan bahawa ia boleh diakses dengan selamat daripada urutan yang berbeza.

Di sini contoh program dalam C++ menggunakan perpustakaan matematik:

Cari sinus dan kosinus bagi A

#termasuk // perpustakaan matematik

menggunakan ruang nama std;

cout<< «Input A = »; cin>>a; //input a

b=cos(a); //menetapkan nilai

cout<< «Cos A = „<

Output program:

Cari exp daripada nombor A

#include // perpustakaan I/O

#termasuk // perpustakaan matematik

#termasuk

#termasuk

menggunakan ruang nama std;

SetConsoleOutputCP(1251);

dua kali ganda a,b,c; // pembolehubah jenis berganda

cout<< “Input A = »; cin>>a; //input a

b=siling(a); //tugasan dihargai

cout<< «Большее целое число A = „<

Output program:

Naikkan nombor kepada nilai yang diberi kuasa

#include // perpustakaan I/O

#termasuk // perpustakaan matematik

#termasuk

#termasuk

menggunakan ruang nama std;

SetConsoleOutputCP(1251);

dua kali ganda a,b; // pembolehubah jenis berganda

cout<< “Введите число = »; cin>>a;

cout<< «Введите степень = »; cin>>b;

cout<< «Число в степени = „<

Output program:

Menyelesaikan persamaan kuadratik

#termasuk

# sertakan # sertakan

menggunakan ruang nama std;

dua kali ganda a = 1, b = 2, c = 1;

i = gsl_poli_solve_quadratic(a, b, c, &x0, &x1);

jika (i == 2) cout<< “x0 =»<< x0 << " x1 ="<< x1 << endl;

jika (i == 1) cout<< «x0 = » << x0 << endl;

jika (i == 0) cout<< «No solve » << endl;

Output program:

Cara menggunakan fungsi statistik

#termasuk

#termasuk

data berganda = (17.2, 18.1, 16.5, 18.3, 12.6);

min berganda, varians, terbesar, terkecil;

min = gsl_stats_mean(data, 1, 5);

varians = gsl_stats_variance(data, 1, 5);

terbesar = gsl_stats_max(data, 1, 5);

terkecil = gsl_stats_min(data, 1, 5);

printf("Dataset data ialah \%g, \%g, \%g,\%g, \%g\n",

data, data, data, data, data);

printf("Min sampel ialah \%g\ n", min);

printf("Anggaran varians ialah \%g\ n", varians);

printf("Nilai terbesar ialah \%g\n", terbesar);

printf("Nilai terkecil ialah \%g\n", terkecil);

Semua fungsi matematik memerlukan pengepala . Program C menggunakan pengepala

1 acos Fungsi double acos(double arg arg
2 seperti dalam Fungsi double asin(double arg) mengembalikan kosinus arka hujah arg. Nilai hujah fungsi mestilah dalam julat dari -1 hingga 1, jika tidak ralat akan berlaku.
3 atan Fungsi double atan(double arg) mengembalikan arctangent bagi hujah arg.
4 atan2 Fungsi double atan2(double x, berganda y) mengembalikan arctangent bagi nilai tersebut y/x.
5 siling Fungsi siling dua kali (double bilangan) mengembalikan integer terdekat (diwakili sebagai nombor nyata titik terapung) yang tidak kurang daripada nilai hujah bilangan. Sebagai contoh, ceil(1.02) akan mengembalikan 2.0. Penukaran ini dipanggil pembundaran berlebihan.
6 cos Fungsi double cos(double arg) mengembalikan kosinus hujah arg
7 cosh Fungsi double cosh(double arg) mengembalikan kosinus hiperbolik hujah arg.
8 exp Fungsi double exp(double arg) mengembalikan asas logaritma asli e, diangkat menjadi kuasa arg.
9 fabs Fab berganda berfungsi (berganda bilangan) mengembalikan nilai mutlak (nilai modulo) argumen bilangan.
10 lantai Fungsi tingkat dua (double bilangan) mengembalikan integer terbesar (diwakili sebagai nombor nyata titik terapung) tidak lebih besar daripada nilai hujah bilangan. Sebagai contoh, floor(1.02) akan mengembalikan nombor 1.0. Penukaran ini dipanggil pembundaran ke bawah.
11 fmod Fungsi double fmod(double x, double y) mengembalikan baki bahagian x/y.
12 frexp Fungsi double frex(double bilangan, int * exp) mengembangkan nombor bilangan oleh mantissa antara 0.1 hingga 1, tidak termasuk 1, dan eksponen integer, jadi bilangan = mantissa. Fungsi mengembalikan mantissa dan nilai eksponen disimpan dalam pembolehubah yang ditunjuk oleh penunjuk exp.
13 log Fungsi log berganda (double bilangan) mengembalikan logaritma asli suatu nombor bilangan. Jika hujah bilangan
14 log10 Fungsi double log10(double bilangan) mengembalikan logaritma perpuluhan nombor bilangan. Jika hujah bilangan adalah negatif atau sifar, ralat berlaku.
15 pow Fungsi double pow(double asas, berganda exp) mengembalikan nombor asas, dinaikkan kepada kuasa exp. Jika asas ijazah asas adalah sama dengan sifar, dan eksponen exp adalah kurang daripada atau sama dengan sifar, ralat mungkin berlaku disebabkan hujah meninggalkan domain definisi fungsi (ralat domain). Ralat ini juga berlaku jika hujah asas adalah negatif dan hujah exp bukan integer.
16 dosa Fungsi double sin(double arg) mengembalikan sinus hujah arg. Nilai hujah mesti dinyatakan dalam radian.
17 sinh Fungsi double sinh(double arg) mengembalikan sinus hiperbolik hujah arg.
18 persegi Fungsi double sqrt(double bilangan) mengembalikan punca kuasa dua hujah bilangan. Jika hujah adalah negatif, ralat berlaku kerana fungsi keluar dari skop.
19 Tan Fungsi double tan(double arg) mengembalikan tangen hujah arg. Nilai hujah mesti dinyatakan dalam radian.
20 tanh Fungsi double tanh(double arg) mengembalikan tangen hiperbolik hujah arg.

Kemas kini terakhir: 31/10/2015

Kelas Matematik direka bentuk untuk melaksanakan pelbagai operasi matematik dalam perpustakaan kelas .NET. Ia statik, jadi semua kaedahnya juga statik.

Mari lihat kaedah kelas Matematik:

    Abs(double value) : Mengembalikan nilai mutlak untuk argumen nilai

    Keputusan berganda = Math.Abs(-12.4); // 12.4

    Acos(nilai berganda): Mengembalikan nilai kosinus arka. Parameter nilai mesti mempunyai nilai antara -1 dan 1

    Keputusan berganda = Math.Acos(1); // 0

    Asin(nilai berganda): Mengembalikan sinus arka nilai. Parameter nilai mesti mempunyai nilai antara -1 dan 1

    Atan(nilai berganda): mengembalikan arctangent nilai

    BigMul(int x, int y) : mengembalikan produk x * y sebagai objek panjang

    Keputusan berganda = Math.BigMul(100, 9340); // 934000

    Ceiling(double value): mengembalikan integer titik terapung terkecil yang tidak kurang daripada nilai

    Keputusan berganda = Math.Ceiling(2.34); // 3

    Cos(double d): mengembalikan kosinus sudut d

    Cosh(double d): mengembalikan kosinus hiperbolik sudut d

    DivRem(int a, int b, out int result): mengembalikan hasil pembahagian a/b, dan selebihnya diletakkan dalam parameter hasil

    Hasil int; int div = Math.DivRem(14, 5, keluar keputusan); //hasil = 4 // div = 2

    Exp(double d) : Mengembalikan asas logaritma asli yang dinaikkan kepada kuasa d

    Lantai(perpuluhan d): mengembalikan integer terbesar yang tidak lebih besar daripada d

    Keputusan berganda = Math.Floor(2.56); // 2

    IEEERemainder(double a, double b): mengembalikan baki a dibahagikan dengan b

    Keputusan berganda = Math.IEEERemainder(26, 4); // 2 = 26-24

    Log(double d): mengembalikan logaritma asli bagi d

    Log(double a, double newBase): mengembalikan logaritma nombor berdasarkan newBase

    Log10(double d) : Mengembalikan logaritma perpuluhan bagi d

    Max(double a, double b): mengembalikan nombor maksimum antara a dan b

    Min(double a, double b): mengembalikan nombor minimum antara a dan b

    Pow(double a, double b): mengembalikan nombor a yang dinaikkan kepada kuasa b

    Round(double d): Mengembalikan d dibundarkan kepada integer terdekat

    Keputusan berganda1 = Math.Round(20.56); // 21 hasil berganda2 = Math.Round(20.46); //20

    Bulat(ganda a, bulat b): Mengembalikan nombor a yang dibundarkan kepada bilangan tempat perpuluhan yang ditentukan yang diwakili oleh b

    Keputusan berganda1 = Math.Round(20.567, 2); // 20.57 hasil berganda2 = Math.Round(20.463, 1); //20.5

    Tanda(nilai berganda): Mengembalikan 1 jika nilai positif, dan -1 jika nilai negatif. Jika nilai ialah 0, maka mengembalikan 0

    Int result1 = Math.Sign(15); // 1 int result2 = Math.Sign(-5); //-1

    Sin(nilai berganda): mengembalikan sinus nilai sudut

    Sinh(nilai berganda): mengembalikan sinus hiperbolik nilai sudut

    Sqrt(double value): mengembalikan punca kuasa dua nilai

    Keputusan berganda1 = Math.Sqrt(16); // 4

    Tan(nilai berganda): mengembalikan tangen nilai sudut

    Tanh(nilai berganda): mengembalikan tangen hiperbolik nilai sudut

    Truncate(double value): membuang bahagian pecahan nilai, hanya mengembalikan nilai integer

    Keputusan berganda = Math.Truncate(16.89); // 16

Kelas Matematik juga mentakrifkan dua pemalar: Math.E dan Math.PI. Sebagai contoh, mari kita mengira luas bulatan:

Console.WriteLine("Masukkan jejari bulatan"); jejari berganda = Double.Parse(Console.ReadLine()); dua luas = Math.PI * Math.Pow(radius, 2); Console.WriteLine("Luas bulatan dengan jejari (0) ialah (1)", jejari, luas);

Output konsol:

Masukkan jejari bulatan 20 Luas bulatan dengan jejari 20 ialah 1256.63706143592

Sila gantung AdBlock di tapak ini.

Pengiraan matematik tidak terhad kepada operasi aritmetik sahaja. Sebagai tambahan kepada mereka, anda juga boleh mencari akar, modul, logaritma, fungsi trigonometri, dsb. Mari belajar cara menggunakan fungsi tersebut dalam program kami.

Untuk menggunakan fungsi matematik, anda perlu memasukkan fail pengepala math.h . Ia mentakrifkan banyak fungsi yang berbeza, tetapi buat masa ini kita akan melihat perkara berikut:

Beberapa fungsi matematik

modulus fabs(x) nombor x
sqrt(x) punca kuasa dua nombor x
sin(x) sinus bagi x (x dalam radian)
cos(x) kosinus bagi x (x dalam radian)
pengiraan pow(x, y) x y
pengiraan exp(x) e x
log(x) logaritma asli bagi x
log10(x) logaritma perpuluhan bagi x

Dua perkara penting.

  • Semua fungsi mengembalikan nilai berganda.
  • Parameter fungsi ialah nombor nyata (berganda), tetapi anda juga boleh lulus integer. Ini akan berlaku penukaran jenis tersirat. Pengkompil akan membuat nombor sebenar 3.0 daripada integer, contohnya 3.

Contoh.
Panjang kaki segi tiga tegak diberi. Kira panjang hipotenus. Masalah mudah untuk menguji pengetahuan anda tentang teorem Pythagoras.

Penyenaraian 1.

#termasuk #termasuk // sambungkan math.h int main (kosong) ( int a, b, c2; scanf("%d",&a); scanf("%d",&b); c2 = a*a + b*b; printf ("c = %.2f\n", sqrt(c2)); return 0; )

Kira sinus sudut yang dimasukkan dari papan kekunci. Sudut dimasukkan dalam darjah.

Penyenaraian 2.

#termasuk #termasuk // sambungkan math.h int utama (kosong) ( double alpha, sin_a, pi = 3.1415926; scanf("%lf",&alpha); alpha = alpha*pi/180; sin_a = sin(alpha); printf("% .2f\n", sin_a); kembalikan 0; )

Banyak yang boleh dibincangkan dalam program ini. Fungsi trigonometri yang ditakrifkan dalam math.h berfungsi dengan ukuran sudut radian. Orang ramai lebih biasa bekerja dengan ijazah. Oleh itu, dalam program ini kami mula-mula menukar nilai daripada darjah kepada radian. Jika ini tidak dilakukan, hasilnya akan menjadi salah. Semak sendiri.

Penukaran jenis tersirat

Apabila melakukan penukaran jenis eksplisit, kami menunjukkan dalam kurungan sebelum nilai jenis yang nilai itu harus dihantar. Tidak perlu melakukan ini dalam penukaran tersirat. Pengkompil secara automatik akan memilih jenis yang diperlukan.

Penukaran jenis tersirat dilakukan dalam kes berikut:

  1. sebelum menghantar argumen kepada fungsi (seperti dalam contoh akar kami. Penyenaraian 1.)
  2. melakukan operasi aritmetik dengan pelbagai jenis hujah
  3. sebelum melaksanakan tugasan

Peraturan penukaran jenis tersirat

  • jika operasi aritmetik dilakukan dengan pelbagai jenis hujah. Kedua-dua hujah dilemparkan kepada jenis yang lebih besar.
    Jenis pesanan: int< float < double
  • apabila ditugaskan. Nilai di sebelah kanan pengendali tugasan dilemparkan kepada jenis pembolehubah di sebelah kiri pengendali tugasan. Walau bagaimanapun, jika jenis yang lebih besar diberikan kepada yang lebih kecil, kehilangan ketepatan mungkin berlaku.

int+float akan ditukar secara automatik kepada float+float
float/int akan ditukar secara automatik kepada float/float
double*float akan ditukar kepada double*double
int = double double akan ditukar kepada int dengan kehilangan bahagian pecahan
float = int int akan ditukar kepada terapung

Struktur program C

1. #termasuk cstdlib.h.

2. #termasuk - masukkan fail pengepala iostream.h.

3 . menggunakan ruang nama std - gunakan ruang nama standard

4. int utama(int argc, char *argv)– nama fungsi. Mana-mana program C terdiri daripada satu atau lebih fungsi. Dalam templat bertulis hanya terdapat satu fungsi - utama(). Berfungsi dengan nama utama mesti masuk sebarang program yang boleh dilaksanakan .

5. { - permulaan fungsi badan

6. sistem (“jeda”) – panggilan fungsi sistem dengan hujah "jeda". Fungsi menunggu kekunci ditekan.

7. pengendali kembali dengan hujah EXIT_SUCCESS– penamatan fungsi utama dengan kod 0.

8. ) – akhir fungsi utama.

Jenis data C mudah

Untuk mewakili nilai integer dalam C, jenis data berikut disediakan:

Taip char. Menduduki 1 bait dalam ingatan. Digunakan untuk mewakili aksara dan integer dari 0 hingga 255 (-128 hingga 127).

Taip int. Menduduki 4 bait dalam ingatan. Digunakan untuk mewakili integer dalam julat -2,147,483,648 hingga 2,147,483,647.

Taip apungan. Menduduki 4 bait dalam ingatan. Digunakan untuk mewakili nombor titik terapung. daripada 3.4×10 -38 kepada 3.4×10 38. Ketepatan pengiraan sehingga 7 tempat perpuluhan.

Taip dua kali ganda. Menduduki 8 bait dalam ingatan. Digunakan untuk mewakili nombor titik terapung. daripada 1.7×10 -308 kepada 1.7×10 308. Ketepatan pengiraan sehingga 15 tempat perpuluhan.

taip void - jenis kosong. Digunakan untuk menerangkan fungsi.

Taip bool - jenis logik. Boleh mengambil 2 nilai: benar atau salah.

Operator Asas C

Operator ialah token yang menukar beberapa pengiraan apabila digunakan pada pembolehubah atau objek lain dalam ungkapan. Bahasa C membentangkan satu set besar operator aritmetik dan logik.

Jadual 4.1. Pengendali unary bahasa C

Jadual 4.2. Pengendali binari bahasa C

Kod operator Nama Hasil operasi
Pengendali aditif
+ tambah binari mengira jumlah, contohnya: int x = 2,y = 1,z; z = x+y;
- tolak binari mengira perbezaan, contohnya: int x = 2,y = 1,z; z = x-y;
Pengendali darab
* pendaraban mengira hasil, contohnya: int x = 2,y = 1,z; z = x*y;
/ pembahagian pengiraan hasil bagi, contohnya: int x = 12,y = 2,z; z = x/y;
% baki mengira baki pembahagian, contohnya: int x = 12,y = 7,z; z = x%y;
Pengendali logik
&& logik DAN menyemak keadaan yang dihubungkan dengan logik DAN
|| logik ATAU menyemak logik ATAU keadaan
Operator Tugasan
= tugasan memberikan nilai yang diberikan kepada pembolehubah atau nilai pembolehubah lain
Pengendali perhubungan
< kurang daripada x
> lebih daripada x>y, x lebih besar daripada y
<= kurang daripada atau sama x<=y, x меньше или равно y
>= lebih besar daripada atau sama x>=y, x lebih besar daripada atau sama dengan y
Pengendali kesetaraan
= = sama x= =y, x sama dengan y
!= tidak sama x!=y, x tidak sama dengan y
, operator penghitungan lakukan tindakan yang dipisahkan pengendali dari kiri ke kanan, contohnya y+=5,x-=4,y+=x;

Perpustakaan fungsi matematik matematik.h

C menyokong banyak fungsi matematik, prototaipnya diterangkan dalam fail matematik.h. Mari kenali sebahagian daripada mereka.

abs(int x) mengembalikan modulus integer x. acos(x berganda) mengembalikan kosinus lengkok suatu nombor x dalam radian . asin(x ganda) mengembalikan arcsine suatu nombor x dalam radian. atan(double x) mengembalikan arctangent suatu nombor x dalam radian. atof(char *s, double x) menukarkan rentetan s kepada nombor nyata x. cos (dua kali x) mengembalikan kosinus suatu nombor x(x diberikan dalam radian) siling (x ganda) membundarkan nombor x ke atas exp(double x) mengembalikan eksponen nombor x. fab(x ganda) mengembalikan modulus nombor nyata x. dosa(x ganda) mengembalikan sinus nombor x(x diberikan dalam radian). sqrt(double x) mengembalikan kuasa dua nombor x. sawo matang (x ganda) mengembalikan tangen suatu nombor x(x diberikan dalam radian). lantai (double x) membundarkan nombor x ke bawah fmod(double x, double y) mengembalikan baki selepas membahagi nombor x setiap nombor y. hipot(ganda x, ganda y) mengembalikan kuasa dua hasil tambah suatu nombor x dan nombor y. log(x ganda) mengembalikan logaritma asli bagi suatu nombor x. log10(ganda x) mengembalikan logaritma perpuluhan nombor x. modf(double x,double& y) mengembalikan bahagian pecahan suatu nombor x, dengan alamat y bahagian integer nombor asal ditulis x. pow(double x, double y) pulangan x ke tahap y.

Untuk menggunakan semua fungsi di atas, sambungkan perpustakaan