حل معادله درجه دوم با پایتون
برای یافتن ریشه ی معادله درجه دوم، می توانیم از فرمول زیر استفاده کنیم:
x = (-b ± √(b^2 – 4ac)) / 2a یا x = (-b ± √(Δ)) / 2a
که در آن a ، b و c مقادیر ثابت متغیرهائی در معادله هستند.
مادر اینجا یک عبارت واسطه هم بنام دلتا تعریف کردیم که برابر است با : b^2 – 4ac =Δ
میخوایم یک راست بریم سراغ معادله درجه دوم و به کمک کد نویسی در پایتون حلش کنیم.
ساده ترین راه ممکن اینه که ماژول یا پلاگین ریاضیات math که خیلی از توابع ریاضی رو بطور پیشفرض در خودش داره فرخوانی کنیم .
اگر احیانا در بسته پایتونیتون نصب ندارین با همون دستور نصب همیشگی : pip install math نصبش کنید تا بریم سر اصل مطلب.
حالا این کد رو در ژوپیتر نوت بوک می زنیم و وقتی تموم شد دکمه های shift و enter رو با هم فشار میدیم تا اجرا بشه و ریشه های معادله رو بدست بیاره :
import math
def find_roots (a,b,c):
discriminant = b**2 - 4*a*c
if discriminant >0:
root1=(-b + math.sqrt(discriminant))/(2*a)
root2=(-b - math.sqrt(discriminant))/(2*a)
return root1,root2
elif discriminant == 0:
root = -b/(2*a)
return root,
else:
real_part = -b/(2*a)
imaginary_part= mat.sqrt(abs(discriminant))/(2*a)
return (real_part+imaginary_part*1j), (real_part-imaginary_part*1j)
roots = find_roots (a,b,c)
print ("roots are :",roots)
==========================
بعد از نوشتن این کد باید بهش عدد و مقدار بدیم تا ببینیم چجوری کار میکنه روش عدد دادن یا تعریف مقادیر ثابت یا همون ضرایب معادله که قبلا خدمتتون عرض کردم در پایتون به شرح زیره :
بجای a,b,cاعداد دلخواه مورد نظرتون رو بدین و دکمه های شیفت و اینتر رو با هم مجددا فشار بدین
a=2
b=-5
c=2
roots = find_roots (a,b,c)
print ("roots are :",roots)
==========================
جواب اینه: roots are : (2.0, 0.5)
کافیه شما عدد های دلخواه مسئله تون رو قرار بدین وریشه های مورد نظرتون رو بدست میآره و بهتون تحویل میده
حالا بیاین از طریق ماژول sympy که قبلا خدمتتون عرض کردم معادله درجه دوم رو تعریف کنیم :
کد زیر رو تایپ کنید و بازم کلیدهای اجرا رو بزنید دیگه تکرار نمیکنم هر موقع عرض کردم اجرا کنید یعنی کلیدهای shift و Enter رو با هم فشار بدین .
import sympy as sp
a=2
b=-5
c=2
x=sp.symbols ('x')
f=a*x**2+b*x+c
sp.plot(f,(x,-5,+5))
در این حالت ما بجای ماژول math از ماژول sympy استفاده کردیم و میخوایم ریشه های معادله رو ببینیم . یعنی ببینیم که اولا این معادله درجه دومی که میخوایم رسمش کنیم چه شکلی هست و ثانیا منحنی که رسم میشه در چه نقاطی محور x ها رو قطع میکنه … بله درست حدس زدین دقیقا در نقاطی محور xها رو قطع میکنه که ما بهش میگیم ریشه های معادله.
قبل از اینکه تابع رو تعریف کنید حتما باید هر متغیری که دارین رو مثلا در اینجا x رو به عنوان یک symbols ، این شکلی x=sp.symbols (‘x’) تعریف کنید.
بعدش تابع رو تعریف میکنید : f=a*x**2+b*x+c
و در نهایت با دستور sp.plot(f,(x,-5,+5)) از سیمپای میخواین که یک محور مختصات واستون رسم کنه بین اعداد 5- و 5 ، و تابعتون رو رسم کنه
و در نتیجه بصورت کاملا دیدگانی و مشاهده پذیر، ما میتونیم با چند خط کد ساده ریشه های معادله درجه دو رو با چشممون ببینیم و درکشون کنیم . اینم از تصویری که مثالی که من زدم بهمون میده .
یکبار در نقطه 0.5 وبار دیگر در نقطه 2 محور x ها توسط نمودار درجه دویی که تعریف کردیم ، قطع شده .
حالا وظیفه شما اینه که انواع و اقسام معادله درجه دو رو تعریف کنید و به ثابتهای a,b,c عدد بدین و ریشه های معادله تون رو به دو روش بدست بیارین و ببینید که دقیقا در حل معادله درجه دو با چی سرو کار دارین و چی عایدتون میشه.
بنابراین وقتی میخواین تو جلسه امتحان هم یک معادله درجه دوم رو حل کنید دیگه نمیگین ای خدا دلتا چی بود ؟ ریشه چیه ؟ و وقتی ازتون سول بپرسند که محنی درجه دوی فلان معادله در چه نقاطی محورهای x رو قطع میکنند، ناگهان دستپاچه نمیشین و استرس نمیگیرین، بلکه می گین آهان منظور طراح سوال رو میدونم منظورش همون منحنی بود که تو پایتون دیدم و خیلی خوب جواب دقیق رو روی ورقه امتحانیم مینویسم و 20 می گیرم.
آفرین به شما عزیزی که تابحال پای صحبتهای من نشستی و امروز یه مطلب جدید یاد گرفتی که هرگز فراموشش نمیکنی.