علوم کامپیوتر بدون ریاضیات همانند بدنی بدون اسکلت است. ریاضیات نهتنها ابزار محاسبه و تحلیل است، بلکه زبان تفکر الگوریتمی و طراحی سیستمهای هوشمند به شمار میآید. از بیتها و گیتهای منطقی در سختافزار گرفته تا مدلهای آماری در یادگیری ماشین، همهچیز در دنیای دیجیتال بر اصول ریاضی بنا شده است.
۱. جبر بولی و منطق دیجیتال
۲. نظریه مجموعهها و ساختار دادهها
۳. جبر خطی و گرافیک کامپیوتری
۴. حساب دیفرانسیل و انتگرال در شبیهسازی و بهینهسازی
۵. نظریه اعداد و رمزنگاری
۶. نظریه گراف و شبکهها
۷. احتمال و آمار در یادگیری ماشین
۸. نظریه محاسبه و پیچیدگی
در ادامه به تعریف و توضیح در مورد هر کدام از موارد زیر خواهیم پرداخت.
۱. جبر بولی و منطق دیجیتال
۱.۱. تعریف و تاریخچه
جبر بولی (Boolean Algebra) شاخهای از ریاضیات است که با مقادیر درست (True) و نادرست (False) یا بهصورت باینری، ۱ و ۰ سروکار دارد.
این نظریه را جرج بول (George Boole) در سال ۱۸۴۷ در کتاب The Mathematical Analysis of Logic مطرح کرد. او نشان داد که منطق استدلال را میتوان بهصورت مجموعهای از قواعد جبری نوشت — درست مانند جمع و ضرب در حساب معمولی.
بعدها، کلود شانون (Claude Shannon) در سال ۱۹۳۷ کشف کرد که این جبر میتواند برای طراحی مدارهای الکتریکی مورد استفاده قرار گیرد. این ایده انقلابی، مبنای منطق دیجیتال و مدارهای الکترونیکی مدرن را بنا نهاد.
۱.۲. اصول پایه جبر بولی
در جبر بولی، بهجای اعداد حقیقی، تنها دو مقدار داریم:
۰⇒”False”,1⇒”True”
عملگرهای اصلی عبارتاند از:
| عملگر | نماد | توصیف | معادل در منطق |
| AND | AND یا ∧ | خروجی ۱ فقط اگر هر دو ورودی ۱ باشند | همزمانی (Conjunction) |
| OR | OR یا + | خروجی ۱ اگر حداقل یکی از ورودیها ۱ باشد | جداسازی (Disjunction) |
| NOT | ¬یا ¬ | خروجی را معکوس میکند | نقیض (Negation) |
مثلاً:
A∧B=1″اگر و فقط اگر” A=1,B=1
۱.۳. قوانین و خواص جبر بولی
برخی از مهمترین قوانین جبر بولی عبارتاند از:
| قانون | فرمول | توضیح |
| جابجایی | A+B=B+A, A⋅B=B⋅A | ترتیب عمل اهمیتی ندارد |
| شرکتپذیری | (A+B)+C=A+(B+C) | گروهبندی آزاد است |
| توزیعپذیری | A⋅(B+C)=(A⋅B)+(A⋅C) | مشابه جبر معمولی |
| مکمل | A+A ˉ=۱, A⋅A ˉ=۰ | متضادها همدیگر را خنثی میکنند |
| قوانین دمورگان | (A⋅B) ‾=A ˉ+B ˉو (A+B) ‾=A ˉ⋅B ˉ | مبنای طراحی گیتهای NOR و NAND |
قوانین دمورگان (De Morgan’s Laws) در طراحی مدارهای دیجیتال اهمیت حیاتی دارند، چون اجازه میدهند مدارهای منطقی با کمترین گیت پیادهسازی شوند.
۱.۴. از جبر بولی تا گیتهای منطقی
هر عبارت بولی را میتوان بهصورت مدار منطقی پیادهسازی کرد. گیتها اجزای فیزیکی (یا ترانزیستورها) هستند که عملیات بولی را انجام میدهند.
| نوع گیت | نماد | عمل بولی | خروجی زمانی که ورودیها … |
| AND | ⋅ | ضرب منطقی | ۱ فقط اگر هر دو ۱ باشند |
| OR | + | جمع منطقی | ۱ اگر یکی از ورودیها ۱ باشد |
| NOT | ¬ | معکوسسازی | خروجی مخالف ورودی |
| NAND | (A·B)¬ | ترکیبی از NOT و AND | معکوس AND |
| NOR | (A+B)¬ | معکوس OR | معکوس OR |
| XOR | A⊕B | جمع مود ۲ | ۱ اگر دقیقاً یکی از ورودیها ۱ باشد |
نکته مهم: گیتهای NAND و NOR جهانی هستند، یعنی هر مدار منطقی را میتوان فقط با یکی از آنها ساخت.
۱.۵. مثال کاربردی: جمعکننده کامل (Full Adder)
یک مدار Full Adder سه ورودی دارد (A, B, Cin) و دو خروجی (Sum, Cout).
روابط بولی آن به صورت زیر است:
S=A⊕B⊕C_in
C_out=(A∧B)∨(B∧C_in)∨(A∧C_in)
هر دو معادله بهوسیلهٔ گیتهای منطقی در CPU پیاده میشوند. میلیونها از این جمعکنندهها کنار هم، عملیات ریاضی پیچیدهتری مانند ضرب، تقسیم و منطق شرطی را در سطح سختافزار اجرا میکنند.
۱.۶. کاربردهای واقعی در مهندسی کامپیوتر
۱. طراحی CPU و ALU (Arithmetic Logic Unit)
– تمام عملیات محاسباتی مانند جمع، تفریق، مقایسه و پرش شرطی با ترکیب گیتهای بولی ساخته میشوند.
– بهینهسازی مدارها با قوانین دمورگان، توان مصرفی و تعداد ترانزیستورها را کاهش میدهد.
2. مدارهای منطقی ترتیبی (Sequential Logic)
– از جبر بولی در طراحی فلیپفلاپها (Flip-Flops)، شمارندهها (Counters) و ماشینهای حالت محدود (FSM) استفاده میشود.
– مثال: در کنترلگرهای سختافزاری یا حافظههای SRAM.
3. مدارهای قابلبرنامهریزی (FPGA)
– طراحان با زبانهایی مثل VHDL یا Verilog روابط بولی را توصیف میکنند تا مدار بهصورت دیجیتال روی تراشه ساخته شود.
4. منطق در نرمافزار و برنامهنویسی
– عملگرهای &&, ||, ! در زبانهایی مثل C++، Java و Python مستقیماً از جبر بولی گرفته شدهاند.
– مثال:
if (user.isAdmin and not user.isBanned):
access = True
۱.۷. پیوند جبر بولی با فناوریهای مدرن
. بهینهسازی مدارها در طراحی VLSI با سادهسازی عبارات بولی انجام میشود.
. در هوش مصنوعی منطقی (Symbolic AI)، قوانین استنتاج بیزه بر پایه منطق گزارهای (Boolean Logic) است.
. در محاسبات کوانتومی نیز، پایهی عملکرد کیوبیتها (qubits) و دروازههای کوانتومی (quantum gates) از منطق بولی کلاسیک الهام گرفتهاند، با این تفاوت که در حالتهای احتمالی (superposition) عمل میکنند.
۲. نظریه مجموعهها و ساختار دادهها
۲.۱. تعریف و اهمیت نظریه مجموعهها
نظریه مجموعهها (Set Theory) شاخهای از ریاضیات است که به بررسی اشیا (عناصر) و روابط میان آنها میپردازد.
مجموعه، به زبان ساده، گروهی از عناصر متمایز است که در کنار هم قرار گرفتهاند.
نماد معمول برای نمایش مجموعه:
A={1,2,3,4}
به معنای مجموعهای شامل اعداد ۱ تا ۴ است.
در علوم کامپیوتر، همین مفهوم پایهای، زیربنای طراحی بسیاری از ساختارهای داده (Data Structures) و پایگاههای داده (Databases) است.
۲.۲. عملیات اصلی مجموعهها
در ریاضیات و برنامهنویسی، چند عملیات کلیدی روی مجموعهها انجام میشود:
| عملیات | نماد | توضیح | مثال |
| اجتماع (Union) | A∪B | ترکیب همه عناصر دو مجموعه بدون تکرار | {۱,۲} ∪ {۲,۳} = {۱,۲,۳} |
| اشتراک (Intersection) | A∩B | عناصر مشترک دو مجموعه | {۱,۲,۳} ∩ {۲,۴} = {۲} |
| تفاضل (Difference) | A-B | عناصری که در A هستند ولی در B نیستند | {۱,۲,۳} − {۲} = {۱,۳} |
| متمم (Complement) | ‘ A | عناصر خارج از A نسبت به جهان کل | اگر U={1,2,3,4}, A={1,2}, آنگاه A’={3,4} |
| زیرمجموعه (Subset) | A⊆B | هر عضو A در B وجود دارد | {۱,۲} ⊆ {۱,۲,۳} |
۲.۳. ارتباط نظریه مجموعهها با علوم کامپیوتر
نظریه مجموعهها نهتنها در منطق ریاضی بلکه در طراحی زبانهای برنامهنویسی، مدل دادهها، الگوریتمها و حتی نظریه پایگاه دادهها نقش بنیادی دارد.
الف) در ساختار دادهها:
. Set / HashSet / TreeSet در زبانهای برنامهنویسی مستقیماً از نظریه مجموعهها گرفته شدهاند.
. این ساختارها از لحاظ پیادهسازی معمولاً بر پایه هشتابل (Hash Table) یا درخت دودویی جستجو (BST) هستند.
مثلاً در پایتون:
A = {1, 2, 3}
B = {3, 4, 5}
print(A | B) اجتماع {۱, ۲, ۳, ۴, ۵}
print (A & B) اشتراک {۳}
print (A – B) تفاضل {۱, ۲}
ب) در پایگاه دادهها:
مدل رابطهای (Relational Model) که توسط ادوارد کاد (E.F. Codd) در سال ۱۹۷۰ معرفی شد، کاملاً بر اساس نظریه مجموعهها است.
هر جدول (Table) در SQL در واقع یک زیرمجموعه از حاصلضرب دکارتی چند مجموعه است.
. JOIN ⇐ اجتماع و اشتراک مجموعهها
. SELECT DISTINCT ⇐ حذف عناصر تکراری (قانون متمایز بودن اعضا)
. UNION / INTERSECT / EXCEPT ⇐عملیات مجموعهای روی دادهها
مثلاً:
SELECT name FROM Students
UNION
;SELECT name FROM Teachers
این دستور اجتماع دو مجموعه از دادهها را بدون تکرار انجام میدهد.
۲.۴. نظریه مجموعهها در طراحی الگوریتمها
الگوریتمها اغلب در چارچوب مجموعهای از عناصر تعریف میشوند. مثلاً:
– الگوریتم جستجو در مجموعهها: یافتن اینکه آیا یک عنصر خاص در مجموعه وجود دارد (در HashSet در زمان O(1)).
– الگوریتمهای مرتبسازی و ادغام: از مفاهیم اجتماع و اشتراک استفاده میکنند.
– الگوریتمهای گرافی: مجموعهای از رأسها (Vertices) و یالها (Edges) تعریف میشوند:
G=(V,E)
که در آن Vمجموعه رأسها و Eمجموعه یالها است.
– الگوریتم PageRank گوگل: هر صفحهٔ وب یک رأس است و لینکها مجموعهای از روابط میان آنها را تشکیل میدهد.
۲.۵. کاربرد در نظریه زبانها و منطق
در نظریهٔ زبانها و کامپایلرها، زبانهای برنامهنویسی با استفاده از مجموعهها تعریف میشوند:
. الفبای زبان (Σ): مجموعهای از نمادها.
. رشته (String): دنبالهای از عناصر مجموعه Σ
. زبان (L): مجموعهای از رشتهها که قواعد خاصی را ارضا میکنند.
برای مثال:
Σ={a,b},L={a^n b^n∣n≥۱}
یعنی مجموعهای از رشتههایی که تعداد aها و bهای برابر دارند، مثل “ab”، “aabb”، “aaabbb” و غیره.
این مفهوم مستقیماً در طراحی کامپایلرها، اتوماسیون (Automata) و تجزیه نحوی (Parsing) استفاده میشود.
۲.۶. در تحلیل داده و کلانداده (Big Data)
در تحلیل دادههای عظیم، بسیاری از عملیات ریاضی و منطقی در سطح مجموعهها انجام میشود.
مثلاً در سیستمهای MapReduce یا Spark :
. دادهها بهصورت مجموعهای از رکوردها مدل میشوند.
. عملیات map, filter, reduce, join، در حقیقت عملیات مجموعهای موازیشده هستند.
rdd1 = {(“user1”, 5), (“user2”, 3)}
rdd2 = {(“user2”, 7), (“user3”, 4)}
rdd1.union(rdd2) اجتماع دو مجموعه داده
۲.۷. مفاهیم پیشرفتهتر مجموعهها در علوم کامپیوتر
۱. مجموعههای توان (Power Sets)
. در منطق ترکیبی و نظریه پیچیدگی برای بررسی همهٔ حالتهای ممکن استفاده میشوند.
. مثال: در الگوریتمهای جستجوی کامل (Brute Force) یا در مسائل NP
۲. حاصلضرب دکارتی (Cartesian Product)
. مبنای طراحی پایگاه دادههای رابطهای است.
. مثال: در SQL، CROSS JOIN حاصلضرب دکارتی دو جدول است.
۳. روابط (Relations)
. زیرمجموعهای از حاصلضرب دکارتی دو مجموعه هستند و پایهٔ طراحی گرافها و دیتابیسها را تشکیل میدهند.
۴. توابع (Functions)
. هر تابع f:A→B نوعی رابطه است که به هر عنصر در A دقیقاً یک عضو در B نسبت میدهد.
. در برنامهنویسی تابعی (Functional Programming) مثل Haskell یا Scala، این تعریف ریاضی بهصورت مستقیم پیاده میشود.
۲.۸. مثال عملی: سیستم توصیهگر (Recommendation System)
فرض کنید مجموعه کاربران U و مجموعه فیلمها Mداریم.
رابطه R⊆U×Mنشان میدهد که کدام کاربر کدام فیلم را تماشا کرده یا پسندیده است.
با استفاده از عملیات مجموعهای، میتوان:
. کاربران مشابه را بر اساس اشتراک تماشای فیلمها پیدا کرد:
“Similarity”(u_i,u_j)=(∣Movies(u_i)∩Movies(u_j)∣)/(∣Movies(u_i)∪Movies(u_j)∣)
فیلمهای جدیدی را پیشنهاد داد که در اجتماع مجموعه فیلمهای کاربران مشابه وجود دارند.
۳. جبر خطی و گرافیک کامپیوتری
۳.۱. مقدمه
جبر خطی (Linear Algebra) علمی است که با بردارها، ماتریسها و تبدیلات خطی سروکار دارد.
در علوم کامپیوتر، این علم در قلب بسیاری از فناوریها قرار دارد:
. گرافیک و انیمیشن سهبعدی
. واقعیت مجازی و افزوده (VR/AR)
. یادگیری ماشین و شبکههای عصبی
. بینایی ماشین، پردازش تصویر و رندرینگ فیزیکی
در واقع، هر زمان که کامپیوتر باید چیزی را در فضا نمایش دهد، تغییر دهد یا از آن یاد بگیرد، از جبر خطی استفاده میکند.
۳.۲. مفاهیم پایه جبر خطی
الف) بردار (Vector)
بردار، کمیتی است که هم مقدار دارد و هم جهت.
در ریاضیات و گرافیک، بردار معمولاً به صورت یک آرایه از اعداد نمایش داده میشود:
v ⃗=[(x@y@z)]
در گرافیک کامپیوتری، بردارها میتوانند موقعیت (Position)، سرعت (Velocity)، یا رنگ (Color Vector) را نمایش دهند.
مثلاً در یک بازی سهبعدی:
p ⃗=[(۲@۱@۵)]
میتواند موقعیت یک شیء در فضا باشد.
ب) ماتریس (Matrix)
ماتریس مجموعهای از اعداد است که برای انجام تبدیلات خطی (Linear Transformations) روی بردارها استفاده میشود.
M=[(a&b&c@d&e&f@g&h&i)]
وقتی ماتریس را در یک بردار ضرب کنیم، نتیجه یک تبدیل خطی از آن بردار است (مثلاً چرخش یا مقیاسدهی).
۳.۳. تبدیلات هندسی در گرافیک سهبعدی
در گرافیک کامپیوتری، برای نمایش اشیاء در فضا باید بتوانیم آنها را جابجا، بچرخانیم و تغییر مقیاس دهیم.
این کار با ضرب ماتریسها در بردارها انجام میشود.
الف) انتقال (Translation)
جابجایی یک شیء در فضا:
(‘ p)=p+t
که t ⃗بردار انتقال است (مثلاً ۵ واحد به راست).
در فضای همگن (Homogeneous Coordinates)، از ماتریس ۴×۴برای ترکیب چرخش، انتقال و مقیاس استفاده میشود:
M_translation=[(1&0&0&t_x@0&1&0&t_y@0&0&1&t_z@0&0&0&1)]
ب) چرخش (Rotation)
برای چرخش حول محور z:
R_z (θ)=[(cosθ&-sinθ&0@sinθ&cosθ&0@0&0&1)]
این ماتریس جهت بردار را تغییر میدهد ولی طول آن را ثابت نگه میدارد.
در بازیها، برای چرخش دوربین یا شخصیتها از همین روابط استفاده میشود.
ج) تغییر مقیاس (Scaling)
برای بزرگ یا کوچک کردن جسم در فضا:
S=[(s_x&0&0@0&s_y&0@0&0&s_z )]
ترکیب تبدیلات
در موتورهای گرافیکی مانند OpenGL، Vulkan و Unity، همه این تبدیلات با هم ترکیب میشوند:
(p’ )=T×R×S×p ⃗
که به آن Transformation Matrix میگویند.
ترتیب ضرب بسیار مهم است، چون ماتریسها خاصیت جابجایی ندارند.
۳.۴. ضرب داخلی و ضرب خارجی در گرافیک
ضرب داخلی (Dot Product)
دو بردار A و B:
A⋅B=∣A∣∣B∣cosθ
. اندازه زاویه بین دو بردار را نشان میدهد.
. در گرافیک، برای نورپردازی (Lighting) استفاده میشود: شدت نوری که به سطح میتابد به زاویه بین نور و سطح بستگی دارد.
مثلاً در مدل Phong:
I=k_d (L⋅N)
که Lبردار نور و Nبردار نرمال سطح است.
ضرب خارجی (Cross Product)
A×B=[(a_y b_z-a_z b_y@a_z b_x-a_x b_z@a_x b_y-a_y b_x )]
برداری عمود بر دو بردار دیگر میسازد.
در گرافیک برای محاسبهی نرمال سطح (Normal Vector) بهکار میرود تا بازتاب نور طبیعیتر شود.
۳.۵. ماتریسهای دید (View) و پرسپکتیو (Projection)
در یک صحنهی سهبعدی، اشیاء باید از دید دوربین به صفحهی دوبعدی نمایشگر نگاشته شوند.
این کار با دو نوع ماتریس انجام میشود:
الف View Matrix
تعیین میکند از کجا و در چه جهتی به صحنه نگاه میکنیم.
ب Projection Matrix
تبدیل مختصات سهبعدی به دوبعدی، بر اساس پرسپکتیو (دورتر → کوچکتر).
در نهایت، هر نقطه از جهان واقعی به مختصات صفحه (Pixel) نگاشت میشود:
(p_screen)=Projection×View×Model×(p_world ) ⃗
این همان چیزی است که در Pipeline گرافیکی GPU اتفاق میافتد.
۳.۶. جبر خطی در یادگیری ماشین
هرچند این بخش بهنام «گرافیک» است، اما جبر خطی در یادگیری عمیق (Deep Learning) هم نقش مشابهی دارد:
. دادههای ورودی (مثل تصویر) به صورت ماتریس هستند.
. وزنهای شبکه عصبی ماتریسهایی هستند که روی ورودی ضرب میشوند.
. عملیات لایهای مثل ضرب ماتریسی، جمع و تابع فعالسازی، همگی مفاهیم جبر خطیاند.
به طور خلاصه:
Y=W×X+b
که Xورودی، Wوزنها و bبایاس است.
در GPU، این محاسبات دقیقاً مانند محاسبات گرافیکی به صورت موازی روی ماتریسها انجام میشود.
۳.۷. مثال عملی از گرافیک بازی
فرض کنید در یک بازی مثل Unity یک مکعب را میخواهیم ۴۵ درجه حول محور y بچرخانیم و ۲ واحد به جلو ببریم:
Matrix4x4 rotation = Matrix4x4.Rotate(Quaternion.Euler(0, 45, 0));
Matrix4x4 translation = Matrix4x4.Translate(new Vector3(0, 0, 2));
Matrix4x4 transform = translation * rotation;
Vector4 position = new Vector4(1, 0, 0, 1);
Vector4 newPos = transform * position;
در اینجا موتور بازی دقیقاً از روابط جبر خطی برای محاسبه موقعیت جدید شیء استفاده میکند.
۳.۸. مفاهیم پیشرفته
. Eigenvalues و: Eigenvectors برای تحلیل حرکات، فشردهسازی تصویر (PCA)، و تشخیص الگو.
. ماتریسهای نرمال و ارتونرمال: در چرخشهای بدون اعوجاج.
. ماتریس معکوس (Inverse Matrix): برای بازگرداندن یک تبدیل (مثلاً بازگشت دوربین).
. تجزیه SVD و: LU در یادگیری ماشین و محاسبات عددی.
۴. حساب دیفرانسیل و انتگرال در شبیهسازی و بهینهسازی
۴.۱. مقدمه
حساب دیفرانسیل و انتگرال (Calculus) شاخهای از ریاضیات است که تغییرات را توصیف میکند.
در علوم کامپیوتر، مخصوصاً در زمینههایی مانند فیزیک بازیها، شبیهسازی سیستمهای پویا، هوش مصنوعی و یادگیری عمیق، این علم به ما امکان میدهد:
حرکت اجسام را پیشبینی کنیم،
انرژی و نیروها را محاسبه کنیم،
خطا را کاهش دهیم و سیستمها را بهینه کنیم.
به زبان سادهتر:
حسابان، ریاضیِ «حرکت» و «تغییر» است — همان چیزی که کامپیوتر باید در فیزیک و یادگیری از دادهها درک کند.
۴.۲. مشتق (Derivative): نرخ تغییر
مشتق یعنی اندازهگیری سرعت تغییر یک کمیت.
اگر موقعیت جسمی تابعی از زمان باشد x(t)، آنگاه مشتق آن یعنی سرعت جسم:
v(t)=dx/dt
و مشتق سرعت، شتاب است:
a(t)=dv/dt=(d^2 x)/(dt^2 )
در برنامهنویسی موتورهای فیزیکی مثل Unity یا Unreal، این روابط به صورت عددی (Numerical) پیادهسازی میشوند.
۴.۳. انتگرال (Integral) جمع تغییرات :
انتگرال برعکس مشتق است — یعنی از نرخ تغییر برای پیدا کردن مقدار کل استفاده میکند.
اگر سرعت جسم را بدانیم، با انتگرال گرفتن موقعیت را به دست میآوریم:
x(t)=∫v(t)dt
در فیزیک بازیها، از انتگرال برای بهروزرسانی موقعیت، سرعت و نیروها در هر فریم بازی استفاده میشود.
۴.۴. کاربرد حسابان در موتورهای فیزیک (Physics Engines)
موتورهای فیزیک مانند Unity Physics، Box2D یا Bullet Engine از حسابان برای شبیهسازی حرکت طبیعی استفاده میکنند.
فرض کنید یک توپ از ارتفاع سقوط میکند. قوانین نیوتن میگویند:
F=ma
که Fنیروی گرانش است (F=mg)
با مشتق و انتگرال، میتوان مسیر حرکت توپ را در زمان پیدا کرد.
محاسبه عددی حرکت در بازیها
از آنجا که کامپیوتر نمیتواند مشتق و انتگرال تحلیلی بگیرد، از روشهای عددی (Numerical Methods) استفاده میشود.
رایجترین آنها:
۱. روش اویلر (Euler Integration)
سادهترین روش عددی برای محاسبه حرکت:
vt+Δt=vt+at⋅Δt
xt+Δt=xt+vt⋅Δt
در Unity :
velocity += gravity * deltaTime;
position += velocity * deltaTime;
این کد دقیقاً انتگرالگیری عددی از معادلهی حرکت است.
۲. روش رانگه-کوتا (Runge-Kutta)
دقیقتر از اویلر است و در شبیهسازیهای دقیقتر (مثل دینامیک سیالات یا حرکت دوربین) استفاده میشود.
بهخصوص در نرمافزارهای مهندسی مانند MATLAB و Blender برای انیمیشنهای فیزیکی.
مثال کاربردی در Unity
اگر جسمی را رها کنیم:
a=g=-9.8〖m/s 〗۲
v(t)=v_0+gt
x(t)=x۰+v۰ t+1/2 gt۲
در موتور بازی، این روابط هر فریم (frame) با Δt ≈ ۱/۶۰ ثانیه محاسبه میشوند.
به این ترتیب سقوط طبیعی بدون نیاز به محاسبات سنگین تحلیلی شبیهسازی میشود.
۴.۵. حسابان در یادگیری ماشین (Optimization)
در یادگیری ماشین، هدف به حداقل رساندن خطا (Loss Function) است.
این کار با استفاده از مشتق (گرادیان) انجام میشود.
گرادیان نزولی (Gradient Descent)
روش اصلی برای آموزش مدلهای هوش مصنوعی.
wnew=wold-η ∂L/∂w
که:
. L: تابع خطا (Loss Function)
. w: پارامترهایی که میخواهیم یاد بگیریم
. η: نرخ یادگیری (Learning Rate)
کامپیوتر با استفاده از مشتق جزئی، جهت کاهش خطا را پیدا میکند و گامبهگام وزنها را اصلاح میکند.
مثال ساده:
فرض کنید تابع خطا:
L(w)=(w-3)۲
مشتق آن:
dL/dw=2(w-3)
اگر w=0و η=۰.۱، داریم:
wnew=۰-۰.۱(۲(۰-۳))=۰.۶
در هر مرحله w به سمت ۳ نزدیکتر میشود تا کمترین خطا را داشته باشد.
در شبکههای عصبی (Neural Networks)
در هر لایه:
y=Wx+b
تابع خطا محاسبه میشود و با مشتقگیری زنجیرهای (Chain Rule) ، گرادیانها از خروجی به ورودی برمیگردند (Backpropagation) این دقیقاً استفاده از حساب دیفرانسیل در عمل است.
۴.۶. کاربرد در بهینهسازی الگوریتمها
در بسیاری از مسائل کامپیوتری، باید چیزی را بهینه کنیم (کمینه یا بیشینه)
مثلاً:
. کمینه کردن زمان اجرای الگوریتم
. کمینه کردن مصرف انرژی در تراشهها
. بیشینه کردن سود در مدلهای اقتصادی
روشهای بهینهسازی (Optimization) مانند:
. Gradient Descent
. Newton’s Method
. Lagrange Multipliers
همگی بر پایه حسابان هستند.
۴.۷. حسابان در گرافیک و انیمیشن
در گرافیک و انیمیشن، از مشتق و انتگرال برای حرکت نرم و طبیعی استفاده میشود:
. محاسبه سرعت و شتاب دوربین
. شبیهسازی مسیر پرتاب اجسام
. انیمیشنهای مبتنی بر منحنی Bezier Curves، Splines
مثلاً منحنی Bézier با معادلهای از انتگرالهای چندجملهای تعریف میشود که به کمک آن، مسیر حرکت کاراکترها یا دوربینها را نرم و زیبا میسازند.
۴.۸. محاسبات عددی و الگوریتمی
کامپیوتر نمیتواند مشتق یا انتگرال واقعی را محاسبه کند، بنابراین از محاسبات عددی (Numerical Calculus) استفاده میکند، مثل:
. مشتق مرکزی (Central Difference)
. انتگرال rapezoidal یا Simpson
. تفاضل محدود (Finite Differences)
این روشها برای شبیهسازی مایعات، جریان هوا، حرکت ذرات و مدلهای سهبعدی فیزیکی ضروریاند
برای مطالعه ادامه این مقاله به مقاله: کاربرد علوم ریاضی در کامپیوتر قسمت دوم مراجعه کنید.