آموزش حل معادله در پایتون – به زبان ساده با مثال و کد
زبان برنامه نویسی پایتون ابزاری قوی و چندمنظوره برای حل کردن طیف وسیعی از معادلات ریاضی است. حل معادله در پایتون با کمک ماژولها و ابزار فراوان و متنوعی که فراهم شده، به صورت بسیار سادهای ممکن میشود. از برنامههای شبیهسازی آزمایشگاه در فضاهای عملی و دانشگاهها گرفته تا محاسبات پیچیده مربوط به هوش مصنوعی همگی از وجود پایتون سود میبرند. از عبارتهای جبری ساده در ریاضی گرفته تا معادلات پیچیده دیفرانسیل را میتوان به آسانی با کمک پایتون و ابزارهای اختصاصی حل کرد.
در این مطلب از مجله فرادرس، به بررسی چند مورد از پرکاربردترین روشها و ماژولهای پایتون برای حل معادلات ریاضی پرداختهایم. در ابتدا نگاه کلی به حل معادله در پایتون انداختیم و بعد از آن چند مورد از رویکردهای رایج برای حل مسئله با کمک زبان برنامه نویسی پایتون را همراه با مثالهای کدنویسی شدهای مورد بررسی قرار دادهایم.
آموزش حل معادله در پایتون
توانایی بالای پایتون در انجام وظایف گوناگون و خوانایی بالای کدهای آن باعث شده که به ابزار ایدهآلی برای حل کردن معادلات ریاضی تبدیل شود. فرقی نمیکند که دانشآموزی در حال تلاش برای حل مسائل جبر مدرسه هستید یا مهندسی که باید محاسبات پیشرفتهای را حل کند، پایتون تعداد زیادی از ابزار متنوع را ارائه داده که میتوانید برای حل مسائل خود از آنها بهره ببرید.
در فهرست زیر چند مورد از رایجترین رویکردهای مورد استفاده برای حل کردن معادلات ریاضی در پایتون را نامبردهایم.
- استفاده از تکنیک «ریاضیات نمادین» (Symbolic Mathematics) با کتابخانه SymPy
- استفاده از «محاسبات عددی» (Numerical Solver) با کتابخانه SciPy
- استفاده از کتابخانه Numpy برای بدست آوردن «ریشههای عبارات چندجملهای» (Roots of Polynomials)
- استفاده از «روشهای تکرارپذیر» (Iterative Methods) مانند «روش نیوتن» (Newton’s Method)
در ادامه مطلب برای حل معادلات ریاضی با استفاده از رویکردهای بالا توضیحات بیشتری را ارائه کردهایم.
فراگیری مهارت برنامه نویسی پایتون
تلاش برای یادگیری مهارتهای برنامهنویسی باید به صورت همیشگی و ادامه دار باشد، مخصوصا برای اشخاص علاقهمند یا افرادی که آینده شغلی خود را در این مسیر انتخاب کردهاند. به مرور زمان، یادگیری زبانهای برنامهنویسی همزمان با افزایش مهارت، جذابتر و کاربردیتر نیز میشود. روشهای متنوعی، برای یادگیری بیشتر وجود دارند که با توجه به شرایط خود، میتوان از بین آنها انتخاب کرد. یکی از گزینههای خوب در بین این روشها استفاده از فیلمهای آموزشی است. زیرا فیلمهای آموزشی دارای امتیازات فراوانی هستند. به عنوان مثال، میتوان آنها را به صورت چندباره تماشا کرد. این فیلمها معمولا با کیفیت خوبی تولید میشوند و از لحاظ هزینه هم برای دانشجویان مقرون به صرفهتر هستند.
سایت آموزشی فرادرس، فیلمهایی بسیار خوب و با کیفیت عالی در باره آموزش مطالب مختلف تولید کرده است. برای کمک به دانشجویان با سطوح مهارتی مختلف تلاش شده که فیلمهای آموزشی متناسب با همه سطوح دانش تولید شوند. فرادرس تلاش کرده که همه فیلمهای آموزشی به طور کلی، با دقت و حساسیت بالا درباره اساتید و روشهای تدریس و حتی کیفیت مطالب مورد بحث تولید شوند. بنابراین، در صورت علاقهمندی به افزایش مهارت کار با زبان برنامهنویسی پایتون، فیلمهای آموزشی زیر گزینه خوبی برای شروع هستند. برای دیدن مجموعه فیلمهای آموزشی فرادرس در حوزه پایتون با کلیک بر روی تصویر بالا میتوانید به صفحه اصلی این مجموعه آموزشی مراجعه کنید.
- فیلم آموزش مقدماتی کار با پایگاه های داده در پایتون فرادرس
- فیلم رایگان آموزش پایتون، برنامه نویسی سریع و آسان در ۱۴۰ دقیقه فرادرس
- فیلم آموزش برنامه نویسی شی گرا در پایتون فرادرس
- فیلم آموزش برنامه نویسی ترفندهای پیشرفته پایتون در فرادرس
روش های مختلف حل معادله در پایتون
در این بخش تکنیکهای مختلف و چند ابزار مهم پایتون را برای حل کردن معادلات بررسی میکنیم. برای هر رویکرد از مثال و کدنویسی متناسب آن نیز کمک گرفتهایم.
معادلات پایه جبری
بهترین کار، شروع از معادلات ساده است. پایتون به آسانی میتواند معادلات ساده جبری را حل کند. به عنوان مثال، معادله زیر را در نظر بگیرید.
2x + 5 = 11
در پایتون با استفاده از عملیات پایه ریاضی میتوان این نوع از معادلات را حل کرد.
1# Solving the equation 2x + 5 = 11
2x = (11 - 5) / 2
3print("Solution for x is:", x)
بعد از اجرای کد بالا، خروجی به صورت Solution for x is: 3.0 نشان داده میشود.
حل انواع معادلات با استفاده از کتابخانه SymPy و تکنیک ریاضیات نمادین
SymPy یکی از کتابخانههای پایتون است که برای حل معادلات شامل نمادهای کاراکتری به کار میرود. این کتابخانه به برنامه نویسان کمک میکند که معادلات جبری را با هر تعداد کاراکتر نمادین اجرا کنند. کاراکترهای نمادین، همان مجهولهای ریاضی هستند. در این بخش دو سطح متفاوت از مسائل قابل حل توسط کتابخانه SymPy را نمایش دادهایم.
استفاده از کتابخانه SymPy برای حل معادلات ساده
در کادر زیر کدهای مربوط به حل مثال مربوط به بخش قبل را با استفاده از کتابخانه SymPy نمایش داده شدهاند.
1from sympy import symbols, Eq, solve
2
3# Define the symbol
4x = symbols('x')
5
6# Define the equation
7equation = Eq(2*x + 5, 11)
8
9# Solve the equation
10solution = solve(equation, x)
11print("Solution for x is:", solution[0])
بعد از اجرای کدهای بالا هم دوباره همان خروجی Solution for x is: 3 به کاربر نمایش داده میشود.
استفاده از کتابخانه SymPy برای حل معادلات درجه دو
در این بخش فرض گرفتهایم که مسئله z**2 + 1 = 0 داده شده و باید حل شود. در کادر زیر کدهای مربوط به حل این معادله درجه دو و یک مجهولی را با استفاده از کتابخانه SymPy نمایش دادهایم. در ابتدا متغیر z را تعریف کردهایم. سپس معادله را تنظیم میکنیم و بعد از آن از کتابخانه SymPy برای حل تابع ساخته شده و پیدا کردن مقدار جواب استفاده کردهایم. در خطوط نهایی کد زیر هم جوابها را بر روی خروجی چاپ میکنیم.
در این مثال، راه حلهای معادله را پیدا کردهایم که نوعی عدد مرکب است.
1# importing from sympy library
2from sympy import symbols, Eq, solve, I
3
4# defining the symbolic variable 'z'
5z = symbols('z')
6
7# setting up the complex equation z^2 + 1 = 0
8equation = Eq(z**2 + 1, 0)
9
10# solving the equation symbolically to find complex solutions
11solutions = solve(equation, z)
12
13# printing solutions
14print("Solutions:", solutions)
خروجی حاصل از اجرای کد بالا به صورت زیر به کاربر نمایش داده میشود.
Solutions: [-I, I]
حل انواع معادلات با استفاده از کتابخانه SciPy و تکنیک محاسبات عددی
کتابخانه SciPy یکی از کتابخانههای قدرتمند و محبوب در زبان پایتون است. این کتابخانه به توسعهدهندگان و محققان در زمینه مهندسی و علوم محاسباتی کمک میکند. SciPy ابزارهای پیشرفتهای را برای تجزیه و تحلیل دادههای علمی، محاسبات عددی، بهینهسازی و پردازش سیگنال و تصویر فراهم کرده است. برای آموزش کار با کتابخانه SciPy میتوانید فیلم آموزش آموزش کتابخانه SciPy برای محاسبات علمی در پایتون، بخش یکم و فیلم آموزش کتابخانه SciPy برای محاسبات علمی در پایتون، بخش دوم را از فرادرس مشاهده کنید. برای کمک به مخاطبان مجله، لینک مربوط به بخش اول این فیلم را در پایین قرار دادهایم.
کتابخانه SciPy در پایتون برای حل مسائل علمی، ابزارهای قدرتمند و مفیدی را ارائه میدهد. بنابراین با کمک این کتابخانه میتوانیم مسائل دیفرانسیل را نیز به سادگی حل کنیم. در این بخش برای نمایش کارایی کتابخانه SciPy به حل «معادله دیفرانسیل معمولی» (Ordinary Differential Equation | ODE) یا همان درجه دو پرداختهایم.
مثال اول برای حل معادله درجه دو
در این مثال میخواهیم روش حل معادله دیفرانسیل را با کمک پایتون تمرین کنیم. معادلات دیفرانسیل از قبیل محاسبات پیچیده و پیشرفته ریاضی هستند که البته سطوح مختلفی دارند. به صورت مختصر و مفید میتوان گفت که معادله دیفرانسیل، رابطهای میان تابع، مشتقات آن و متغیرهای مستقلاش است. اما در صورت نیاز به آشنایی بیشتر و بهتر با این نوع از معادلات میتوانید مطلب معادلات دیفرانسیل به زبان ساده از مجله فرادرس را مطالعه کنید.
فرض کنیم معادله دیفرانسیلی به صورت زیر در دست داریم.
dy/dx = x^2
برای حل این مسئله با استفاده از کتابخانه SciPy، میتوانیم از کدهای زیر استفاده کنیم.
1from scipy.integrate import odeint
2import numpy as np
3import matplotlib.pyplot as plt
4
5# Define the function representing the differential equation
6def model(y, x):
7 return x**2
8
9# Define the initial condition
10y0 = 0
11
12# Define the range of x values
13x_values = np.linspace(0, 5, 100)
14
15# Solve the ODE
16solution = odeint(model, y0, x_values)
17
18# Plot the solution
19plt.plot(x_values, solution)
20plt.xlabel('x')
21plt.ylabel('y')
22plt.title('Solution of dy/dx = x^2')
23plt.grid(True)
24plt.show()
بر اثر اجرای کد بالا، صفحه مختصاتی رسم میشود که بر روی آن جواب معادله دیفرانسیل ترسیم شده است.
مثال دوم برای حل معادله درجه دو
در مثال بعدی و کد زیر از تابع fsolve در کتابخانه SciPy برای پیدا کردن ریشه معادلات پیچیدهای استفاده کردهایم که شامل اعداد مرکب میشوند. تابع complex_equation_to_solve برای تعریف معادله بهکار میرود. همینطور مقدار دلخواهی هم به عنوان بخشهای حقیقی و موهومی عدد به این تابع به عنوان پارامتر ارسال شده است. در این رویکرد هم راه حلی مخصوص کار با اعداد مرکب ارائه شده و در نهایت در بخش انتهایی کدهای زیر همه جوابها برای نمایش به کاربر چاپ میشوند.
1# import necessary functions from scipy library
2from scipy.optimize import fsolve
3import numpy as np
4
5# define the function representing the system of equations for the complex problem
6def complex_equation_to_solve(z):
7 return [z[0]**2 + z[1]**2 - 1, 2*z[0] + z[1] - 2]
8
9# set an initial guess with real and imaginary parts
10initial_guess = np.array([0.0, 1.0])
11
12# use fsolve to find the root of the complex equation
13complex_root = fsolve(complex_equation_to_solve, initial_guess)
14
15# create a complex number from the obtained root
16complex_solution = complex(complex_root[0], complex_root[1])
17
18# print the result
19print("SciPy Complex Solution:", complex_solution)
خروجی حاصل از اجرای کد بالا به صورت زیر است.
SciPy Complex Solution: (0.6+0.7999999999999999j)
کشف ریشه های عبارات چند جمله ای با استفاده از کتابخانه Numpy
در این بخش از مطلب میخواهیم که با استفاده از کتابخانه Numpy به حل معادلات چندجملهای بپردازیم. کتابخانه NumPy یا Numerical Python نیز یکی دیگر از کتابخانههای پرکاربرد و قدرتمند در زمینه محاسبات علمی و اجرای عملیات ریاضی پایتون است. این کتابخانه به عنوان پایهای برای بسیاری دیگر از کتابخانهها و ابزارهای علمی در پایتون، مانند SciPy ،Pandas و Matplotlib استفاده میشود. برای آشنایی با این کتابخانه میتوانید از فیلم رایگان آموزش کتابخانه NumPy برای محاسبات علمی در پایتون در فرادرس استفاده کنید. لینک مربوط به این فیلم را نیز در پایین قرار دادهایم.
در کد نمایش داده شده پایین از تابع np.roots کتابخانه Numpy به منظور پیدا کردن ریشههایی از جنس عدد مرکب برای عبارت درجه دو استفاده کردهایم. این عبارت با استفاده از ضرایب [1, 0, 1] در لیست coefficients نمایش داده شده است. در نهایت هم ریشههای بدست آمده به عنوان جواب در خروجی چاپ شدهاند.
1import numpy as np
2
3# defining the coefficients of the complex polynomial equation
4coefficients = [1, 0, 1]
5
6# finding the roots of the polynomial equation
7complex_roots = np.roots(coefficients)
8
9# printing output
10print("NumPy Complex Roots:", complex_roots)
بر اثر اجرای کد بالا خروجی زیر به کاربر نمایش داده میشود.
NumPy Complex Roots: [-0.+1.j 0.-1.j]
حل معادلات مرکب با استفاده از روش های تکرارپذیر
در تکنیک بهکار برده شده در کدهای زیر از روش نیوتون استفاده کردهایم. باز هم از معادله استفاده کردیم. هدف پیدا کردن ریشههای مرکب این معادله درجه دو است. در ابتدا کار را با حدس اولیه 0.0+1.0j شروع میکنیم. بعد از ۱۰۰ بار تکرار عملیات، نتیجه نهایی که از نوع اعداد مرکب است به عنوان جواب در خروجی چاپ میشود. در صورت نیاز برای استفاده در سایر مسائل مربوط به اعداد مرکب، میتوانید معادله و مقدار عدد حدس اولیه را تنظیم کنید.
1import numpy as np
2
3# defining the complex equation to solve
4def complex_equation_to_solve(z):
5 return z**2 + 1
6
7# defining the derivative of the equation for Newton's method
8def complex_equation_derivative(z):
9 return 2 * z
10
11# setting an initial guess with a complex number
12initial_guess = complex(0.0, 1.0)
13
14# setting the maximum number of iterations
15max_iterations = 100
16
17# Newton's method iteratively
18for _ in range(max_iterations):
19 initial_guess -= complex_equation_to_solve(
20 initial_guess) / complex_equation_derivative(initial_guess)
21
22complex_solution = initial_guess
23
24# printing output
25print("Newton's Method Complex Solution:", complex_solution)
بر اثر اجرای کد بالا خروجی زیر به عنوان جواب برای نمایش به کاربر بر روی مانیتور چاپ میشود.
Newton's Method Complex Solution: 1j
فیلم آموزش های پروژه محور پایتون در فرادرس
یکی از بهترین راهها برای تمرین و آموزش نکات بسیار مهم در برنامهنویسی کار بر روی تمرینات پروژه محور است. استفاده از تکنیکها و متدهای آموخته شده پایتون در پیادهسازی پروژههای عملی باعث نهادینه شدن دانش مربوط به آن تکنیک در ذهن افراد میشود. بنابراین، بهترین روش برای تقویت تواناییها و آموزش روش ترکیب تکنولوژیهای مختلف، بررسی و انجام پروژههای مربوط به سناریوهای واقعی است. به این دلیل، فرادرس، فیلمهایی بسیار خوب، درباره آموزش پروژه محور پایتون تولید و ارائه کرده است. در این بخش از مطلب پنج مورد از این فیلمها را در ارتباط با پروژههای واقعی زبان برنامهنویسی پایتون معرفی کردهایم.
- فیلم آموزش بهینه سازی سبد سهام در پایتون با روش های هوشمند، پورتفولیو مالی در فرادرس
- فیلم آموزش پروژه محور پایتون درباره طراحی گرافیکی با PyQt و بدون کدنویسی با QT Designe از فرادرس
- فیلم آموزش طراحی سایت و وب اپلیکیشن با فریمورک Django فرادرس
- فیلم آموزش امنیت اطلاعات و رمزنگاری با فرادرس
- فیلم آموزش پروژه محور پایتون درباره ساخت دستیار صوتی، از طراحی توابع تا اجرای برنامه در فرادرس
در صورت تمایل به دیدن فیلمهای بیشتر با کلیک بر روی تصویر زیر به صفحه اصلی این مجموعه آموزشی رفته و گزینههای متنوع موجود را مشاهده کنید.
جمعبندی
در این مطلب از مجله فرادرس درباره حل معاده در پایتون بحث کردهایم. زبان برنامهنویسی پایتون، دارای اکوسیستم غنی از کتابخانهها و ابزار متنوع برای حل مسائل ریاضی است. از مسائل پیشپا افتاده جبری گرفته تا معادلات پیچیده حسابان و دیفرانسیل را میتوان با کمک پایتون حل کرد. چه دانشآموز باشید یا محقق یا حتی مهندس حرفهای که تمام تلاشتان حل مسائل پیچیده است. پایتون زیربنای محکمی را برای کمک به حل مسائل ریاضی به صورت سریع و موثر فراهم کرده است. با استفاده از کتابخانههایی مانند SymPy و SciPy میتوانید به سادگی دایره وسیعی از انواع معادلات ریاضی را درک، آنالیز و حل کنید.
برای خلاصه کردن مبحث، لازم است اشاره کنیم که ابزار پایتون برای حل مسائل ریاضی میتوانند درک معادلات پیچیده را نیز برای برنامهنویسان سادهتر کنند. تفاوتی نمیکند که به تازگی کار خود را با پایتون شروع کردهاید یا با ریاضی آشنایی مناسبی دارید و در کار با پایتون متخصص هستید، با کمک امکانات پایتون میتوانید زیبایی و پیچیدگی مفاهیم ریاضی را بسیار سادهتر درک کرده و راحتتر به روشهای حل معادله در پایتون فکر کنید.