সমাধান — 0.3 · Calculus I: Limits, Derivatives, Optimization¶
অধ্যায়:
part-0-foundations/00-03-calculus-1-derivatives.md। নিচে সব ১০টি অনুশীলনীর পূর্ণ সমাধান।
ক · ধারণাগত (Conceptual)¶
Q1 ★ — secant vs tangent, এবং \(h\to 0\)-এর তাৎপর্য¶
Secant line হলো curve-এর দুটো আলাদা বিন্দু \((x, f(x))\) ও \((x+h, f(x+h))\)-এর সংযোগকারী সরলরেখা; এর slope \(\frac{f(x+h)-f(x)}{h}\) দেয় ঐ ব্যবধানে average rate of change (গড় পরিবর্তন)। Tangent line হলো এমন রেখা যা curve-কে একটিমাত্র বিন্দুতে স্পর্শ করে এবং সেই বিন্দুতে curve-এর "তাৎক্ষণিক দিক" ধরে।
\(h\to 0\) নেওয়ার তাৎপর্য: দ্বিতীয় বিন্দুকে প্রথম বিন্দুর দিকে ক্রমশ টেনে আনলে secant line ঘুরতে ঘুরতে গিয়ে tangent line-এ মিলে যায়। ফলে average rate of change → instantaneous rate of change (তাৎক্ষণিক পরিবর্তন), অর্থাৎ derivative। এটি limit বলেই অর্থপূর্ণ: ঠিক \(h=0\) বসালে \(\frac{0}{0}\) অসংজ্ঞায়িত হতো, কিন্তু limit সেই বাধা এড়িয়ে সঠিক slope দেয়।
Q2 ★ — \(f'=0\) অথচ max/min নয়: saddle / inflection¶
এমন বিন্দুকে বলে inflection point (বাঁকবদলের বিন্দু) বা এক-চলকে stationary point of inflection (saddle-সদৃশ)। উদাহরণ: \(f(x)=x^3\)।
এখানে \(f'(x)=3x^2\), তাই \(f'(0)=0\) — কিন্তু \(x=0\)-এর বাঁ-ডান দুপাশেই \(f'(x)=3x^2 > 0\) (function সবসময় বাড়ছে)। চিহ্ন বদলায় না, তাই \(x=0\) max-ও নয় min-ও নয়। (\(f''(0)=0\) হওয়ায় second-derivative test inconclusive — তখন first-derivative test বা উচ্চতর derivative লাগে।)
Q3 ★★ — convex-এ GD কেন global min দেয়, non-convex-এ কেন নয়¶
একটি convex function-এ (\(f''\ge 0\) সর্বত্র) মাত্র এক ধরনের "তলা" থাকে — যেকোনো local minimum আবশ্যিকভাবে global minimum। কারণ convex curve বাটির (\(\smile\)) মতো; একবার নিচে নামতে শুরু করলে আর দ্বিতীয় কোনো আলাদা গর্তে আটকে যাওয়ার সুযোগ নেই। gradient descent negative-gradient দিকে নামে, তাই সেই একমাত্র তলাতেই পৌঁছায় — global minimum-এর নিশ্চয়তা।
Non-convex function-এ একাধিক local minimum, local maximum ও saddle point থাকতে পারে (যেমন ঢেউখেলানো ভূদৃশ্য)। gradient descent শুধু স্থানীয় ঢাল দেখে নামে, তাই যে গর্তের কাছে শুরু করেছে সেই local minimum-এ আটকে যেতে পারে — যেটা global minimum নাও হতে পারে। তাই non-convex-এ global minimum-এর কোনো গ্যারান্টি নেই (শুরুর বিন্দু, learning rate ইত্যাদির উপর নির্ভর করে)।
খ · গণনামূলক (Computational)¶
Q4 ★ — derivatives¶
| function | derivative | যুক্তি | |
|---|---|---|---|
| (a) | \(x^4\) | \(4x^3\) | power rule |
| (b) | \(\sqrt{x}=x^{1/2}\) | \(\dfrac{1}{2}x^{-1/2} = \dfrac{1}{2\sqrt{x}}\) | power rule |
| (c) | \(\dfrac{1}{x}=x^{-1}\) | \(-x^{-2} = -\dfrac{1}{x^2}\) | power rule |
| (d) | \(e^{x}\) | \(e^{x}\) | standard |
| (e) | \(\ln x\) | \(\dfrac{1}{x}\) | standard |
| (f) | \(x^3\sin x\) | \(3x^2\sin x + x^3\cos x\) | product rule: \(u'v+uv'\) |
Q5 ★★ — chain rule, \((3x^2+1)^5\)¶
বাইরের function \(u^5\) (derivative \(5u^4\)), ভেতরের \(u=3x^2+1\) (derivative \(6x\))। chain rule:
Q6 ★★ — \(f(x)=x^3-6x^2+9x+1\) optimize¶
Step 1. \(f'(x) = 3x^2 - 12x + 9 = 3(x^2 - 4x + 3) = 3(x-1)(x-3)\)।
Step 2. critical points: \(f'=0 \Rightarrow x=1\) ও \(x=3\)।
Step 3. \(f''(x) = 6x - 12\)।
Step 4. second-derivative test: - \(x=1\): \(f''(1)=6-12=-6 < 0 \Rightarrow\) local maximum, মান \(f(1)=1-6+9+1=5\)। - \(x=3\): \(f''(3)=18-12=6 > 0 \Rightarrow\) local minimum, মান \(f(3)=27-54+27+1=1\)।
উত্তর: local max \((1, 5)\), local min \((3, 1)\)।
গ · প্রমাণভিত্তিক (Proof-based)¶
Q7 ★★ — limit সংজ্ঞা থেকে \(\dfrac{d}{dx}\dfrac{1}{x} = -\dfrac{1}{x^2}\)¶
লব-এর দুই ভগ্নাংশকে সাধারণ হর \(x(x+h)\)-এ আনি:
তাই difference quotient:
এবার \(h\to 0\) নিই (তখন \(x+h \to x\)):
Q8 ★★★ — quotient rule, product+chain থেকে উৎপাদন¶
\(\dfrac{u}{v} = u\cdot v^{-1}\) লিখি। প্রথমে chain rule দিয়ে \(v^{-1}\)-এর derivative:
এবার product rule প্রয়োগ করি \(u\) ও \(v^{-1}\)-এর উপর:
সাধারণ হর \(v^2\)-এ এনে:
এটাই প্রমিত quotient rule।
ঘ · কোডিং (Coding)¶
Q9 ★★ — central-difference second derivative¶
def second_derivative(f, x, h=1e-4):
"""Central-difference approximation of f''(x)."""
return (f(x + h) - 2*f(x) + f(x - h)) / h**2
f = lambda x: x**3
print("approx f''(2):", second_derivative(f, 2.0)) # ~ 12.0
print("exact f''(2):", 6*2.0) # f''(x)=6x -> 12
আউটপুট (আনুমানিক):
ব্যাখ্যা: \(f(x)=x^3 \Rightarrow f''(x)=6x \Rightarrow f''(2)=12\)। central second-difference সূত্র খুব ছোট error-এ ১২-ই দেয়। (অতি-ছোট \(h\), যেমন \(10^{-8}\), নিলে \(h^2\) অতি-ক্ষুদ্র হয়ে rounding error বাড়ে — তাই \(h\approx 10^{-4}\) ভালো আপস।)
Q10 ★★★ — gradient descent on \(f(x)=x^4-3x^3+2\)¶
def f(x): return x**4 - 3*x**3 + 2
def df(x): return 4*x**3 - 9*x**2 # f'(x)
x = 4.0 # শুরু
lr = 0.01 # learning rate
for _ in range(2000):
x = x - lr * df(x)
print("GD result x:", round(x, 4)) # -> 2.25
print("f at result:", round(f(x), 4)) # -> -6.543
আউটপুট:
বিশ্লেষণ: \(f'(x)=4x^3-9x^2 = x^2(4x-9)=0 \Rightarrow x=0\) অথবা \(x=\tfrac{9}{4}=2.25\)। - \(x=0\): \(f''(0)=12\cdot0^2 - 18\cdot 0 = 0\) — degenerate; আসলে \(x=0\) একটা inflection (চারপাশে \(f'\) চিহ্ন বদলায় না অর্থপূর্ণভাবে min হিসেবে), তাই GD সেখানে থামে না। - \(x=2.25\): \(f''(2.25)=12(2.25)^2 - 18(2.25)=60.75-40.5=20.25>0 \Rightarrow\) local minimum।
\(x_0=4\) থেকে শুরু করে negative-gradient দিকে নামতে নামতে GD ঠিক \(x=2.25\)-এ থামে — বিশ্লেষণাত্মক local (এবং এখানে global, যেহেতু \(x\to\pm\infty\)-এ \(f\to+\infty\)) minimum-এর সাথে নিখুঁত মিল।