SymPy (Symbolic Python) হলো পাইথনের জন্য একটি সিম্বোলিক ম্যাথেম্যাটিক্স লাইব্রেরি। এটি কম্পিউটার অ্যালজেব্রা সিস্টেম (CAS) হিসেবে কাজ করে—অর্থাৎ সংখ্যা দিয়ে ক্যালকুলেশন না করে সিম্বোলিক এক্সপ্রেশন ম্যানিপুলেট করে। এটি ক্যালকুলাস, অ্যালজেব্রা, ডিফারেনশিয়াল ইকুয়েশন, লিনিয়ার অ্যালজেব্রা ইত্যাদিতে ব্যাপকভাবে ব্যবহৃত হয়।
ইনস্টলেশন
pip install sympy
সিম্বোলিক নাম্বার টাইপস
- Integer: পূর্ণসংখ্যা (সিম্বোলিক)
- Rational: ভগ্নাংশ (হর এবং লব আলাদা সংরক্ষণ) —
Rational(1, 2)= ½ - Float: আর্বিট্রারি প্রিসিশন ফ্লোটিং পয়েন্ট
বেসিক উদাহরণ
from sympy import *
# সিম্বোলিক কনস্ট্যান্ট
p = pi**3
print("p =", p) # pi**3 (সিম্বোলিক)
print("p.evalf() =", p.evalf()) # 31.0062766802998 (নিউমেরিক)
# evalf() দিয়ে নিউমেরিক ভ্যালু
q = pi.evalf()
print("pi =", q) # 3.14159265358979
r = exp(1).evalf()
print("e =", r) # 2.71828182845905
s = (pi + exp(1)).evalf()
print("pi + e =", s) # 5.85987448204884
# Infinity
print("oo + 10000 =", oo + 10000) # oo
print("oo > 9999999:", oo > 9999999) # True
সিম্বোলিক ভেরিয়েবল এবং এক্সপ্রেশন
from sympy import symbols, expand, factor, simplify
# ভেরিয়েবল ডিক্লেয়ার
x, y, z = symbols('x y z')
# এক্সপ্রেশন
expr = (x + y)**2
print("Expression:", expr) # (x + y)**2
# এক্সপ্যান্ড
expanded = expand(expr)
print("Expanded:", expanded) # x**2 + 2*x*y + y**2
# ফ্যাক্টর
factored = factor(expanded)
print("Factored:", factored) # (x + y)**2
# সিম্প্লিফাই
expr2 = (x**2 - y**2) / (x - y)
simplified = simplify(expr2)
print("Simplified:", simplified) # x + y
ক্যালকুলাস: ডিফারেনশিয়েশন এবং ইন্টিগ্রেশন
from sympy import diff, integrate, limit, oo
x = symbols('x')
f = x**3 * sin(x)
# ডেরিভেটিভ
df = diff(f, x)
print("Derivative:", df) # x**3*cos(x) + 3*x**2*sin(x)
# হাইয়ার অর্ডার ডেরিভেটিভ
d2f = diff(f, x, 2)
print("2nd Derivative:", d2f)
# ইনডিফিনিট ইন্টিগ্রাল
integral = integrate(f, x)
print("Integral:", integral)
# ডিফিনিট ইন্টিগ্রাল
def_integral = integrate(f, (x, 0, pi))
print("Definite Integral [0, π]:", def_integral)
# লিমিট
l = limit(sin(x)/x, x, 0)
print("lim(x→0) sin(x)/x =", l) # 1
ইকুয়েশন সলভিং
from sympy import solve, Eq
x, y = symbols('x y')
# একক ভেরিয়েবল ইকুয়েশন
sol = solve(Eq(x**2 - 5*x + 6, 0), x)
print("Roots:", sol) # [2, 3]
# সিস্টেম অফ ইকুয়েশন
eq1 = Eq(2*x + 3*y, 6)
eq2 = Eq(3*x - y, 4)
sol = solve((eq1, eq2), (x, y))
print("System solution:", sol) # {x: 18/11, y: 10/11}
ম্যাট্রিক্স এবং লিনিয়ার অ্যালজেব্রা
from sympy import Matrix
A = Matrix([[1, 2], [3, 4]])
B = Matrix([[5, 6], [7, 8]])
print("A * B:", A * B)
print("A.det():", A.det()) # -2
print("A.inv():", A.inv()) # ইনভার্স
print("A.eigenvals():", A.eigenvals()) # আইগেনভ্যালু
# লিনিয়ার সিস্টেম: A*x = b
b = Matrix([5, 11])
x = A.gauss_jordan_solve(b)
print("Solution:", x)
সিরিজ এক্সপ্যানশন
from sympy import series
x = symbols('x')
# টেলর সিরিজ: sin(x) at x=0
print(series(sin(x), x, 0, 6))
# x - x**3/6 + x**5/120 + O(x**6)
ল্যাম্বডিফাই: সিম্বোলিক → নিউমেরিক ফাংশন
from sympy import lambdify
import numpy as np
x = symbols('x')
expr = sin(x) / x
# সিম্বোলিক এক্সপ্রেশনকে নামপাই-কম্প্যাটিবল ফাংশনে রূপান্তর
f = lambdify(x, expr, 'numpy')
# এখন নামপাই অ্যারে দিয়ে ফাস্ট ইভ্যালুয়েশন
xs = np.linspace(0.1, 10, 100)
ys = f(xs) # ভেক্টরাইজড, খুব দ্রুত
সেরা অনুশীলন
from sympy import *এড়িয়ে নির্দিষ্ট ইমপোর্ট করুন (নেমস্পেস পলিউশন এড়াতে)।- সিম্বোলিক ক্যালকুলেশন ধীর—নিউমেরিক ইভ্যালুয়েশনের জন্য
lambdifyব্যবহার করুন। - অসিম্পটোটিক অ্যানালাইসিস, প্রুফ ভেরিফিকেশন, ফর্মুলা ডেরিভেশনে SymPy বেস্ট।
- নামপাই/সাইপাইর সাথে কম্বাইন করুন: SymPy ফর্মুলা ডেরাইভ করুন, তারপর lambdify দিয়ে প্রোডাকশন কোডে ব্যবহার করুন।