ห้องสมุดฟังก์ชันทางคณิตศาสตร์ math.h. บทช่วยสอน Python แบบโต้ตอบ

กรุณาระงับ AdBlock บนไซต์นี้

การคำนวณทางคณิตศาสตร์ไม่ได้จำกัดอยู่เพียงการดำเนินการทางคณิตศาสตร์เท่านั้น นอกจากนั้น คุณยังสามารถค้นหาราก โมดูล ลอการิทึม ฟังก์ชันตรีโกณมิติ ฯลฯ มาเรียนรู้วิธีใช้กันดีกว่า ฟังก์ชั่นที่คล้ายกันในโปรแกรมของพวกเขา

หากต้องการใช้ฟังก์ชันทางคณิตศาสตร์ คุณต้องรวมไฟล์ส่วนหัว math.h ด้วย มันกำหนดอะไรมากมาย ฟังก์ชั่นต่างๆแต่สำหรับตอนนี้เราจะพิจารณาสิ่งต่อไปนี้:

บาง ฟังก์ชันทางคณิตศาสตร์

fabs(x) โมดูลัสของจำนวน x
ตารางวา(x) รากที่สองจากหมายเลข x
บาป(x) ไซน์ของ x (x เป็นเรเดียน)
cos(x) โคไซน์ของ x (x เป็นเรเดียน)
pow(x, y) การคำนวณ x y
ประสบการณ์ (x) การคำนวณ เช่น x
บันทึก(x) ลอการิทึมธรรมชาติตัวเลข x
log10(x) ลอการิทึมทศนิยมของ x

สองประเด็นสำคัญ

  • ฟังก์ชันทั้งหมดส่งคืนค่าสองเท่า
  • พารามิเตอร์ของฟังก์ชันเป็นจำนวนจริง (สองเท่า) แต่คุณสามารถส่งผ่านจำนวนเต็มได้เช่นกัน สิ่งนี้จะเกิดขึ้น การแปลงประเภทโดยนัย- คอมไพเลอร์จะสร้างจำนวนจริง 3.0 จากจำนวนเต็ม เช่น 3

ตัวอย่าง.
แสดงความยาวของขาของสามเหลี่ยมมุมฉาก คำนวณความยาวของด้านตรงข้ามมุมฉาก. ปัญหาง่ายๆ ในการทดสอบความรู้เกี่ยวกับทฤษฎีบทพีทาโกรัส

รายการ 1.

#รวม #รวม // เชื่อมต่อ math.h int main (เป็นโมฆะ) ( int a, b, c2; scanf("%d",&a); scanf("%d",&b); c2 = a*a + b*b; printf ("c = %.2f\n", sqrt(c2));

คำนวณไซน์ของมุมที่ป้อนจากคีย์บอร์ด มุมถูกป้อนเป็นองศา

รายการ 2.

#รวม #รวม // เชื่อมต่อ math.h int main (โมฆะ) ( double alpha, sin_a, pi = 3.1415926; scanf("%lf",&alpha); alpha = alpha*pi/180; sin_a = sin(alpha); printf("% .2f\n", sin_a); ส่งกลับ 0; )

มีเรื่องให้พูดคุยมากมายในโปรแกรมนี้ ฟังก์ชันตรีโกณมิติซึ่งกำหนดไว้ใน math.h ให้ทำงานกับการวัดมุมเรเดียน ผู้คนคุ้นเคยกับการทำงานในระดับปริญญามากขึ้น ดังนั้นในโปรแกรมนี้เราจึงแปลงค่าจากองศาเป็นเรเดียนก่อน หากไม่ทำเช่นนี้ผลลัพธ์จะไม่ถูกต้อง ตรวจสอบด้วยตัวคุณเอง

การแปลงประเภทโดยนัย

เมื่อแปลงประเภทอย่างชัดเจน เราจะระบุในวงเล็บก่อนค่าประเภทที่เราต้องการแปลง มูลค่าที่กำหนด- ไม่จำเป็นต้องทำเช่นนี้ในการแปลงโดยนัย คอมไพเลอร์จะเลือกประเภทที่ต้องการโดยอัตโนมัติ

การแปลงประเภทโดยนัยจะดำเนินการในกรณีต่อไปนี้:

  1. ก่อนที่จะส่งอาร์กิวเมนต์ไปยังฟังก์ชัน (ดังในตัวอย่างรูตของเรา รายการ 1)
  2. การดำเนินการทางคณิตศาสตร์ด้วย ประเภทต่างๆข้อโต้แย้ง
  3. ก่อนปฏิบัติงาน

กฎการแปลงประเภทโดยนัย

  • หากบรรลุผลแล้ว การดำเนินการทางคณิตศาสตร์ด้วยข้อโต้แย้งประเภทต่างๆ อาร์กิวเมนต์ทั้งสองถูกส่งไปยังประเภทที่ใหญ่กว่า
    พิมพ์คำสั่ง: int< float < double
  • เมื่อได้รับมอบหมาย ค่าทางด้านขวาของตัวดำเนินการกำหนดจะถูกแปลงเป็นประเภทของตัวแปรทางด้านซ้ายของตัวดำเนินการกำหนด ในขณะเดียวกันหาก ประเภทที่ใหญ่กว่าถูกกำหนดให้เป็นค่าที่น้อยลง อาจเกิดการสูญเสียความแม่นยำได้

int+float จะถูกแปลงเป็น float+float โดยอัตโนมัติ
float/int จะถูกแปลงเป็น float/float โดยอัตโนมัติ
double*float จะถูกแปลงเป็น double*double
int = double double จะถูกแปลงเป็น int โดยสูญเสียเศษส่วนไป
float = int int จะถูกแปลงเป็น float

คณิตศาสตร- ไฟล์ส่วนหัว ห้องสมุดมาตรฐานภาษา C ออกแบบมาให้ใช้งานง่าย การดำเนินการทางคณิตศาสตร์- เนื่องจาก C ++ ใช้ฟังก์ชันเหล่านี้เพื่อความเข้ากันได้ (ทั้งหมดมีอยู่ในไฟล์ส่วนหัว cmath) เราจะพิจารณาภาษาเหล่านี้ร่วมกัน ภายใต้ Linux และ FreeBSD ฟังก์ชันทางคณิตศาสตร์จะถูกจัดเก็บแยกต่างหากใน ห้องสมุดคณิตศาสตร์ลิบม์ ดังนั้น หากใช้คำสั่งใดๆ เหล่านี้ ตัวเลือก -lm จะต้องถูกส่งผ่านไปยังตัวเชื่อมโยงเมื่อสร้าง เนื่องจากผลลัพธ์ของการดำเนินการทางคณิตศาสตร์ส่วนใหญ่ก็คือ ตัวเลขเศษส่วนฟังก์ชั่นไลบรารีทั้งหมดยอมรับสองเท่า ที่จะทำงานร่วมกับ ประเภทลอยและฟังก์ชัน long double ใช้กับ postfix f และ l ตามลำดับ

คอมเพล็กซ์.เอช- ไฟล์ส่วนหัวของไลบรารีมาตรฐานของภาษาการเขียนโปรแกรม C ซึ่งประกาศฟังก์ชันสำหรับเลขคณิตที่ซับซ้อน ฟังก์ชันเหล่านี้ใช้ประเภทที่ซับซ้อนในตัว ซึ่งเปิดตัวในมาตรฐาน C99 ฟังก์ชั่นในไฟล์ส่วนหัว complex.h มีไว้เพื่อ สามประเภท— double, float และ long double (ค่าแสดงเป็นเรเดียน): สำหรับการคำนวณ ค่าตรีโกณมิติไซน์ โคไซน์ แทนเจนต์และโคแทนเจนต์สำหรับจำนวนเชิงซ้อน ลอการิทึมและเลขชี้กำลัง ราก

กนู (GSL)- ได้ฟรี ซอฟต์แวร์ภายใต้ ใบอนุญาตกนูใบอนุญาตสาธารณะทั่วไป ห้องสมุดมีรูทีนทางคณิตศาสตร์ที่หลากหลาย เช่น เครื่องกำเนิดไฟฟ้า ตัวเลขสุ่ม, ฟังก์ชั่นพิเศษและสี่เหลี่ยมจัตุรัสน้อยที่สุด มีฟีเจอร์ทั้งหมดมากกว่า 1,000 รายการพร้อมชุดทดสอบที่ครอบคลุม ต่างจากใบอนุญาตสำหรับไลบรารีตัวเลขที่เป็นกรรมสิทธิ์ GSL ไม่ได้จำกัดความร่วมมือทางวิทยาศาสตร์ หากต้องการรวมไลบรารี คุณต้องเขียน: $\# include - เพื่อใช้การจัดการข้อยกเว้น C++ ภายในกรอบงาน ฟังก์ชั่นที่กำหนดเองส่งผ่านไปยังไลบรารีเป็นพารามิเตอร์ ไลบรารีต้องถูกสร้างด้วยตัวเลือกการคอมไพล์ -feExceptions สามารถใช้ห้องสมุดได้ โปรแกรมแบบมัลติเธรด- ฟังก์ชันทั้งหมดเป็นแบบเธรดในแง่ที่ว่าไม่ได้ใช้ตัวแปรคงที่ หน่วยความจำจะเชื่อมโยงกับวัตถุเสมอ ไม่ใช่ฟังก์ชัน สำหรับฟังก์ชันที่อ็อบเจ็กต์ใช้ พื้นที่ทำงานในฐานะที่เป็นพื้นที่จัดเก็บชั่วคราว พื้นที่ทำงานจะต้องได้รับการจัดสรรตามเธรด สำหรับฟังก์ชั่นที่ใช้งาน วัตถุตารางหน่วยความจำสามารถใช้งานได้หลายเธรดในเวลาเดียวกัน ตารางอาร์กิวเมนต์จะประกาศค่าคงที่เสมอในฟังก์ชันต้นแบบเพื่อระบุว่าสามารถเข้าถึงได้อย่างปลอดภัยจากเธรดต่างๆ

ที่นี่ โปรแกรมตัวอย่างใน C ++ โดยใช้ไลบรารีทางคณิตศาสตร์:

ค้นหาไซน์และโคไซน์ของ A

#รวม // ห้องสมุดคณิตศาสตร์

ใช้เนมสเปซมาตรฐาน;

ศาล<< «Input A = »; cin>>ก; //ใส่ก

ข=คอส(ก); //การกำหนดค่า

ศาล<< «Cos A = „<

ผลลัพธ์ของโปรแกรม:

ค้นหาประสบการณ์จากหมายเลข A

#include // ไลบรารี I/O

#รวม // ห้องสมุดคณิตศาสตร์

#รวม

#รวม

ใช้เนมสเปซมาตรฐาน;

SetConsoleOutputCP (1251);

ดับเบิ้ลเอ,บี,ซี; // ตัวแปรประเภทคู่

ศาล<< “Input A = »; cin>>ก; //ใส่ก

ข=เพดาน(ก); //การมอบหมายมูลค่า

ศาล<< «Большее целое число A = „<

ผลลัพธ์ของโปรแกรม:

เพิ่มตัวเลขเป็นค่าที่กำหนดกำลัง

#include // ไลบรารี I/O

#รวม // ห้องสมุดคณิตศาสตร์

#รวม

#รวม

ใช้เนมสเปซมาตรฐาน;

SetConsoleOutputCP (1251);

ดับเบิ้ลเอ,บี; // ตัวแปรประเภทคู่

ศาล<< “Введите число = »; cin>>ก;

ศาล<< «Введите степень = »; cin>>ข;

ศาล<< «Число в степени = „<

ผลลัพธ์ของโปรแกรม:

การแก้สมการกำลังสอง

#รวม

#รวม#รวม

ใช้เนมสเปซมาตรฐาน;

สองเท่า a = 1, b = 2, c = 1;

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

ถ้า (i == 2) ศาล<< “x0 =»<< x0 << " x1 ="<< x1 << endl;

ถ้า (i == 1) ศาล<< «x0 = » << x0 << endl;

ถ้า (i == 0) ศาล<< «No solve » << endl;

ผลลัพธ์ของโปรแกรม:

วิธีใช้ฟังก์ชันทางสถิติ

#รวม

#รวม

ข้อมูลสองเท่า = (17.2, 18.1, 16.5, 18.3, 12.6);

ค่าเฉลี่ยสองเท่า, ความแปรปรวน, ใหญ่ที่สุด, เล็กที่สุด;

ค่าเฉลี่ย = gsl_stats_mean (ข้อมูล 1, 5);

ความแปรปรวน = gsl_stats_variance (ข้อมูล, 1, 5);

ใหญ่ที่สุด = gsl_stats_max (ข้อมูล, 1, 5);

เล็กที่สุด = gsl_stats_min (ข้อมูล, 1, 5);

printf("ชุดข้อมูลคือ \%g, \%g, \%g,\%g, \%g\n",

ข้อมูล ข้อมูล ข้อมูล ข้อมูล ข้อมูล);

printf("ค่าเฉลี่ยตัวอย่างคือ \%g\ n", ค่าเฉลี่ย);

printf("ความแปรปรวนโดยประมาณคือ \%g\ n", ความแปรปรวน);

printf("ค่าที่ใหญ่ที่สุดคือ \%g\n", ใหญ่ที่สุด);

printf("ค่าที่น้อยที่สุดคือ \%g\n", น้อยที่สุด);

ฟังก์ชันทางคณิตศาสตร์ทั้งหมดถูกนำมาใช้เป็นวิธีการของคลาสคณิตศาสตร์ ซึ่งหลักๆ จะแสดงไว้ในตารางที่ 4.1

ตารางที่ 4.1 – สาขาหลักและวิธีการของชั้นเรียนคณิตศาสตร์

ชื่อวิธีการ

คำอธิบาย

คำอธิบาย

|x| เขียนเป็น Abs(x)

โคไซน์ส่วนโค้ง

Acos(double x) มุมระบุเป็นเรเดียน

อาร์คซีน

อาร์คแทนเจนต์

อาร์คแทนเจนต์

Atan2(double x,double y) – มุมที่แทนเจนต์เป็นผลจากการหาร y ด้วย x

งาน

บิ๊กมัล(int x,int y)

ปัดเศษขึ้น

เพดาน (x สองเท่า)

โคไซน์ไฮเปอร์โบลิก

การหารและเศษเหลือ

2,71828182845905

ผู้แสดงสินค้า

ปัดเศษลง

ชั้น(xคู่)

ส่วนที่เหลือของการแบ่ง

IEEERemainder(x สองเท่า, y สองเท่า)

ลอการิทึมธรรมชาติ

ลอการิทึมทศนิยม

สูงสุด 2 หมายเลข

ความต่อเนื่องของตาราง 4.1

ชื่อวิธีการ

คำอธิบาย

คำอธิบาย

อย่างน้อย 2 หมายเลข

ค่าของพาย

3,14159265358979

การยกกำลัง

ธาร(x,y) – x ยกกำลัง y

การปัดเศษ

รอบ(3.1)=3 รอบ(3.8)=4

ป้ายหมายเลข

ไฮเปอร์โบลิกไซน์

รากที่สอง

ไฮเพอร์โบลิกแทนเจนต์

ตัวอย่างโปรแกรมคำนวณเชิงเส้นโดยใช้สูตรที่กำหนด

แอปพลิเคชันคอนโซลเนมสเปซ

( โมฆะคงที่ Main()

Console.WriteLine("ป้อน x");

buf=คอนโซล.ReadLine();

double x=Convert.ToDouble(buf);

Console.WriteLine("ป้อนอัลฟ่า");

buf=คอนโซล.ReadLine();

ดับเบิล a = double.Parse (buf);

สองเท่า y=Math.Sqrt(Math.PI*x)-

Math.Exp(0.2*Math.Sqrt(a))+

2*คณิตตัน(2*ก)+

1.6e3*Math.Log10(คณิตศาสตร์.พาว(x,2));

Console.WriteLine (“สำหรับ x= (0) และอัลฟ่า =(1)”, x,a);

Console.WriteLine("ผลลัพธ์ =" +y); -

การบรรยายครั้งที่ 5 ตัวดำเนินการภาษา C#

องค์ประกอบของตัวดำเนินการภาษา C# ไวยากรณ์และความหมายนั้นสืบทอดมาจากภาษา C++ นิพจน์ใดๆ ที่ลงท้ายด้วยเครื่องหมายอัฒภาคถือเป็นคำสั่ง

คำสั่งบล็อกหรือแบบผสม

การใช้เครื่องหมายปีกกา คำสั่งหลายภาษา (อาจสลับกับการประกาศ) สามารถนำมารวมกันเป็นโครงสร้างวากยสัมพันธ์เดียวที่เรียกว่าคำสั่งบล็อกหรือคำสั่งผสม:

โอเปอเรเตอร์_1

ตัวดำเนินการ_N

ในทางวากยสัมพันธ์ บล็อกจะถือเป็นคำสั่งเดียวและสามารถใช้ที่ใดก็ได้ในโครงสร้างที่ไวยากรณ์ต้องการคำสั่งเดียว เนื้อความของลูปและกิ่งก้านของคำสั่ง if มักจะแสดงเป็นบล็อก

โอเปอเรเตอร์ว่างเปล่า

คำสั่งว่างคือ "ว่าง" ที่สิ้นสุดด้วยเครื่องหมายอัฒภาค มันถูกใช้เมื่อไวยากรณ์ต้องการตัวดำเนินการ แต่ไม่ต้องการความหมาย บางครั้งก็เป็นประโยชน์ที่จะถือว่าคำสั่งที่หายไปเป็นคำสั่งว่างที่มีอยู่ เป็นที่ยอมรับทางวากยสัมพันธ์ในการแทรกอัฒภาคเพิ่มเติม โดยสมมติว่ามีการแทรกคำสั่งว่าง ตัวอย่างเช่น โครงสร้างต่อไปนี้ถูกต้องตามหลักไวยากรณ์:

สำหรับ (int j=1; j<5; j++) //оператор цикла

- //ตัวดำเนินการว่าง

ถือได้ว่าเป็นการหน่วงเวลาการทำงานที่ไม่ได้ใช้งาน

อัปเดตล่าสุด: 31/10/2558

คลาส Math ใช้เพื่อดำเนินการทางคณิตศาสตร์ต่างๆ ในไลบรารีคลาส .NET มันเป็นแบบคงที่ ดังนั้นวิธีการทั้งหมดจึงเป็นแบบคงที่เช่นกัน

ลองดูวิธีการของชั้นเรียนคณิตศาสตร์:

    Abs(double value) : ส่งกลับค่าสัมบูรณ์สำหรับอาร์กิวเมนต์ value

    ผลลัพธ์สองเท่า = Math.Abs(-12.4); // 12.4

    Acos(double value) : ส่งกลับค่าโคไซน์ส่วนโค้งของค่า พารามิเตอร์ค่าจะต้องมีค่าระหว่าง -1 ถึง 1

    ผลลัพธ์สองเท่า = Math.Acos(1); // 0

    Asin(double value) : ส่งกลับค่าส่วนโค้งไซน์ของค่า พารามิเตอร์ค่าจะต้องมีค่าระหว่าง -1 ถึง 1

    Atan(double value) : ส่งกลับค่าอาร์กแทนเจนต์ของค่า

    BigMul(int x, int y) : ส่งคืนผลคูณ x * y เป็นวัตถุขนาดยาว

    ผลลัพธ์สองเท่า = Math.BigMul(100, 9340); // 934000

    Ceiling(double value) : ส่งกลับจำนวนเต็มทศนิยมที่เล็กที่สุดซึ่งไม่น้อยกว่าค่า

    ผลลัพธ์สองเท่า = Math.Ceiling (2.34); // 3

    Cos(double d) : ส่งคืนค่าโคไซน์ของมุม d

    Cosh(double d) : ส่งกลับค่าไฮเปอร์โบลิกโคไซน์ของมุม d

    DivRem(int a, int b, out int result) : ส่งคืนผลลัพธ์ของการหาร a/b และส่วนที่เหลือจะถูกวางไว้ในพารามิเตอร์ผลลัพธ์

    ผลลัพธ์ภายใน; int div = Math.DivRem (14, 5, ผลลัพธ์ออก); //ผลลัพธ์ = 4 // div = 2

    Exp(double d) : ส่งกลับฐานของลอการิทึมธรรมชาติที่ยกกำลัง d

    Floor(decimal d) : ส่งคืนจำนวนเต็มที่มากที่สุดซึ่งไม่เกิน d

    ผลลัพธ์สองเท่า = Math.Floor(2.56); // 2

    IEEERemainder(double a, double b) : ส่งคืนค่าส่วนที่เหลือของการหารด้วย b

    ผลลัพธ์สองเท่า = Math.IEEERemainder(26, 4); // 2 = 26-24

    Log(double d) : ส่งกลับค่าลอการิทึมธรรมชาติของ d

    Log(double a, double newBase) : ส่งคืนลอการิทึมของตัวเลขโดยยึดตาม newBase

    Log10(double d) : ส่งกลับค่าลอการิทึมฐานสิบของ d

    Max(double a, double b) : ส่งกลับจำนวนสูงสุดระหว่าง a และ b

    Min(double a, double b) : ส่งกลับจำนวนขั้นต่ำระหว่าง a และ b

    Pow(double a, double b) : ส่งคืนค่าตัวเลข a ยกกำลังของ b

    Round(double d) : ส่งกลับ d ปัดเศษเป็นจำนวนเต็มที่ใกล้ที่สุด

    ผลลัพธ์คู่ 1 = คณิตรอบ (20.56); // 21 double result2 = Math.Round(20.46); //20

    Round(double a, round b) : ส่งกลับตัวเลข a ที่ปัดเศษเป็นจำนวนตำแหน่งทศนิยมที่ระบุซึ่งแสดงด้วย b

    ผลลัพธ์คู่ 1 = คณิตศาสตร์รอบ (20.567, 2); // 20.57 double result2 = Math.Round(20.463, 1); //20.5

    เครื่องหมาย(ค่าสองเท่า) : ส่งคืน 1 หากค่าเป็นบวก และ -1 หากค่าเป็นลบ ถ้าค่าเป็น 0 จะส่งกลับ 0

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

    Sin(double value) : ส่งคืนค่าไซน์ของค่ามุม

    Sinh(double value) : ส่งกลับค่าไฮเปอร์โบลิกไซน์ของค่ามุม

    Sqrt(double value) : ส่งคืนค่ารากที่สองของค่า

    ผลลัพธ์สองเท่า1 = Math.Sqrt(16); // 4

    Tan(double value) : ส่งคืนค่าแทนเจนต์ของค่ามุม

    Tanh(double value) : ส่งกลับค่าไฮเปอร์โบลิกแทนเจนต์ของค่ามุม

    Truncate(double value) : ละทิ้งส่วนที่เป็นเศษส่วนของค่า โดยส่งคืนเฉพาะค่าจำนวนเต็ม

    ผลลัพธ์สองเท่า = Math.Truncate(16.89); // 16

คลาสคณิตศาสตร์ยังกำหนดค่าคงที่สองค่า: Math.E และ Math.PI ตัวอย่างเช่น ลองคำนวณพื้นที่ของวงกลม:

Console.WriteLine("ระบุรัศมีของวงกลม"); รัศมีสองเท่า = Double.Parse(Console.ReadLine()); พื้นที่สองเท่า = Math.PI * Math.Pow(รัศมี, 2); Console.WriteLine("พื้นที่ของวงกลมที่มีรัศมี (0) คือ (1)", รัศมี, พื้นที่);

เอาต์พุตคอนโซล:

ใส่รัศมีวงกลม 20 พื้นที่ของวงกลมที่มีรัศมี 20 คือ 1256.63706143592