خانه / fd (صفحه 30)

fd

انتگرال توابع هیپربولیک — از صفر تا صد

در آموزش‌های قبلی از مجموعه آموزش‌های ریاضیات مجله فرادرس، توابع هذلولوی یا هیپربولیک و مشتق آن‌ها را بررسی کردیم. در این آموزش، انتگرال توابع هیپربولیک را با ارائه چند مثال توضیح می‌دهیم. همان‌گونه که در آموزش‌های قبلی دیدیم، شش تابع اصلی هیپربولیک به‌صورت زیر تعریف می‌شوند: $$large cosh x = largefrac{{{e^x} + {e^{ – x}}}}{2}normalsize$$ $$large sinh x = largefrac{{{e^x} – {e^{ – x}}}}{2}normalsize$$ $$large coth x = largefrac{{cosh x}}{{sinh x}}normalsize = largefrac{{{e^x} + {e^{ – x}}}}{{{e^x} – {e^{ – x}}}}normalsize$$ $$large tanh x = largefrac{{sinh x}}{{cosh x}}normalsize = largefrac{{{e^x} – {e^{ – x}}}}{{{e^x} + {e^{ – x}}}}normalsize$$ $$large text{csch},x = largefrac{1}{{sinh x}}normalsize = largefrac{2}{{{e^x} – {e^{ – x}}}}normalsize$$ $$large text{sech},x = largefrac{1}{{cosh x}}normalsize = largefrac{2}{{{e^x} + {e^{ – x}}}}normalsize$$ فرمول‌های مشتق و انتگرال توابع هیپربولیک در جدول زیر آورده شده است: انتگرال مشتق $..

توضیحات بیشتر »

مقایسه ۵ الگوریتم برتر مرتب سازی در پایتون — صفر تا صد

مرتب سازی یکی از مهارت‌هایی است که هر مهندس نرم‌افزار و توسعه‌دهنده‌ای باید از آن مطلع باشد. این مهارت نه تنها جهت موفقیت در مصاحبه‌های شغلی بلکه به عنوان یک دانش عمومی برنامه‌نویسی همواره مورد نیاز است. الگوریتم‌های مرتب‌سازی مختلف به خوبی نشان می‌دهند که چگونه یک طراحی مناسب می‌تواند چنان تأثیر شگرفی روی پیچیدگی، سرعت و کارایی برنامه داشته باشند. پیچیدگی الگوریتم‌های مرتب‌سازی در این نوشته به مقایسه 5 الگوریتم برتر مرتب‌سازی می‌پردازیم و شیوه پیاده‌سازی آن‌ها در پایتون را بررسی می‌کنیم. مرتب‌سازی حبابی (Bubble Sort) مرتب‌سازی حبابی یکی از الگوریتم‌هایی است که معمولاً در دوره‌های مقدماتی کلاس‌های علوم رایانه ارائه می‌شود، چون به روشنی طرز کار مرتب‌سازی را نشان می‌دهد و همزمان درک آن نیز ساده و آسان است. مراحل مرتب‌سازی حبابی از طریق یک لیست و مقایسه عناصر مجاور صورت می‌گیرد. در این فرایند وقتی عناصر در ترتیب نادرستی باشند، با هم دیگر تعویض می‌شوند. این عملیات روی آرایه‌ها تا زمانی که هیچ دو عنصر مجاوری در ترتیب نادرست نباشند، ادامه می‌یابد. از آنجا که مرتب‌سازی حبابی به طور مکرر روی..

توضیحات بیشتر »

محاسبات ریاضی با استفاده از تابع های داخلی PHP — به زبان ساده

عملیات مختلف ریاضیات مقدماتی به صورت مکرر در زمان برنامه‌نویسی مورد نیاز هستند. در این موارد، هنگام نوشتن کد باید به طور مکرر مقادیر مختلف را مقایسه، جمع، ضرب، تفریق و تقسیم بکنیم. برخی اوقات عملیات ریاضی مورد نیاز در یک برنامه بسیار پیچیده‌تر از این است. در این موارد باید بتوانید با لگاریتم‌ها، مثلثات یا تابع‌های نمایی کار بکنید. در این راهنما به بررسی شیوه استفاده از هر یک از تابع های داخلی PHP به همراه ارائه مثال‌ها می‌پردازیم. این راهنما به معرفی تابع‌های داخلی ریاضیاتی PHP برای اجرای محاسبات مثلثاتی، نمایی و لگاریتمی اختصاص دارد. همچنین به بررسی روش گرد کردن اعداد و ایجاد اعداد تصادفی می‌پردازیم. تابع‌های مثلثاتی در PHP در زبان برنامه‌نویسی PHP با استفاده از تابع‌های (sin($angle)، cos($angle و (tan($angle می‌توان به ترتیب سینوس، کسینوس و تانژانت زوایای مختلف را که بر اساس رادیان بیان شده‌اند پیدا کرد. همه این تابع‌ها مقادیر float بازمی‌گردانند و مقدار دریافتی آن‌ها باید زاویه بر مبنای رادیان باشد. این بدان معنی است که وقتی مقدار (tan(45 را محاسبه کنیم، مقدار 1 به دست می‌آید، زی..

توضیحات بیشتر »

کاهش مرتبه معادلات دیفرانسیل — از صفر تا صد

در آموزش‌های پیشین مجله فرادرس، درباره معادلات دیفرانسیل بحث کردیم و با روش‌های حل معادلات دیفرانسیل مرتبه اول و مرتبه دوم آشنا شدیم. در این آموزش، ابزار کاهش مرتبه معادلات دیفرانسیل را بررسی می‌کنیم. یک معادله دیفرانسیل مرتبه دوم به‌فرم عمومی زیر نوشته می‌شود: $$Fleft( {x,y,y’,y^{primeprime}} right) = 0$$ که در آن، $$F$$ تابعی از آرگومان‌های داده‌ شده است. اگر معادله دیفرانسیل برای مشتق دوم $$y^{primeprime}$$ قابل تجزیه باشد، می‌توان آن را به‌فرم صریح زیر نمایش داد: $$y^{primeprime} = fleft( {x,y,y’} right).$$ در حالت‌های خاص، ممکن است تابع $$f$$ فقط شامل یک یا دو متغیر باشد. این معادلات ناکامل یا ناقص، پنج نوع مختلف دارند: $${y^{primeprime} = fleft( x right),;;}kern-0.3pt {y^{primeprime} = fleft( y right),;;}kern-0.3pt {y^{primeprime} = fleft( {y’} right),;;}kern-0.3pt {y^{primeprime} = fleft( {x,y’} right),;;}kern-0.3pt {y^{primeprime} = fleft( {y,y’} right).}$$ با استفاده از تغییر متغیرهای مشخص، می‌توان معادلات فوق را به معادلات مرت..

توضیحات بیشتر »

قضیه هلمهولتز در مهندسی برق — به زبان ساده

در آموزش‌های قبلی مجله فرادرس به تفصیل درباره کرل و دیورژانس یک تابع برداری صحبت کردیم. در این آموزش قصد داریم به بررسی «قضیه هلمهولتز» (Helmholtz’s Theorem) بپردازیم. از قضیه هلمهولتز هنگام تعریف توابع پتانسیل در الکترومغناطیس استفاده می‌شود. قبل از بیان قضیه هلمهولتز، بیان دو تعریف زیر بسیار مهم است. اگر کرل یک میدان برداری صفر باشد، آن میدان برداری را به نام «میدان برداری پایستار» (Conservative Vector Field) یا «غیر چرخشی» (Irrotational) می‌شناسیم. مفهوم پایستار بودن یک میدان برداری این است که انتگرال‌گیری روی یک مسیر بین دو نقطه به مسیر حرکت بستگی نداشته باشد، مانند محاسبه کار انجام شده وقتی جسمی را با وجود جاذبه زمین جابجا می‌کنیم. در این حالت، کار مستقل از مسیر جابجایی جسم است و فقط به نقطه آغازین و پایانی بستگی دارد. همچنین اگر دیورژانس یک میدان برداری برابر صفر باشد، آن میدان به اصطلاح بدون دیورژانس (Divergenceless) یا سلونوئیدی (Solenoidal) است. در یک میدان الکترومغناطیسیِ سلونوئیدی، خطوط شار بسته می‌شوند و منبع یا چاه مغناطیسی وجود ندارد. قبل از آنکه به بیان ریاضی قضیه هل..

توضیحات بیشتر »

چگونه یک سیستم عامل طراحی کنیم؟ — به زبان ساده

اگر تاکنون با رایانه کار کرده باشید، احتمالاً در مورد طرز کار سیستم عامل در سطوح پایین کنجکاو شده‌اید و یا حتی ممکن است خواسته باشید در مورد این که چگونه می‌توان یک سیستم عامل ایجاد کرد سؤالاتی به ذهنتان رسیده باشد. این که گفته شود توسعه کرنل کار دشواری است، به هیچ وجه حق مطلب را ادا نمی‌کند. در واقع این کار اوج برنامه‌نویسی محسوب می‌شود. در این راهنما ابزارهای پایه‌ای مورد نیاز برای این منظور را معرفی کردیم و یک سیستم عامل ساده را در C و x86 Assembly پیاده‌سازی خواهیم کرد. این تصویری از صفحه سیستم عامل Basilica است که در این نوشته قصد داریم آن را ایجاد کنیم. سیستمی که قصد داریم توسعه دهیم، به افتخار Terry Davis، توسعه‌دهنده تازه درگذشته TempleOS به صورت Basilica OS نامگذاری شده است. این سیستم بسیار ساده خواهد بود و به عنوان یک مقدمه برای توسعه سیستم عامل محسوب می‌شود. از این رو قصد نداریم هیچ موضوع مرتبط با نظریه سیستم عامل مانند قالب‌های اجرایی، ارتباط سریال و غیره را مطرح کنیم. ما پشتیبانی از کیبورد را در سیستم خود نخواهیم داشت؛ با این حال، یک سیستم عامل اولیه می‌سازیم. شروع به پیا..

توضیحات بیشتر »

تقلب نامه (Cheat Sheet) دستورات گیت

تقلب نامه (Cheat Sheet)، متنی کوتاه اما جامع پیرامون یک موضوع مشخص است. هدف اصلی ارائه تقلب‌نامه، انتقال مفاهیمِ مرتبط با یک موضوع به صورت کامل، در کمترین زمان ممکن است. با استفاده از تقلب‌نامه می‌توان چکیده مفاهیم بیان شده در کلاس‌های درس را در مدت زمانی بسیار اندک فرا گرفت. بنابراین در هنگام تمرین، حل سوالات و یا شب امتحان به جای ورق زدن کتابی چند صد صفحه‌ای می‌توانید با مراجعه به تقلب‌نامه به مقصود خود دست یابید. از تقلب‌نامه‌های زبان‌های برنامه‌نویسی و مباحث مرتبط با آن‌ها می‌توان برای آگاهی از دستورهای مورد نیاز برای انجام امور گوناگون و قابلیت‌های مختلف موجود در حوزه برنامه‌نویسی استفاده کرد. همچنین، تقلب‌نامه‌هایی که پیرامون یک کتابخانه خاص از یک زبان هستند، حجم زیادی از اطلاعات مفید و مهم را به صورت یک جا و یکپارچه در بر می‌گیرند. با توجه به اهمیت بیان شده، وبلاگ فرادرس اقدام به انتشار تقلب‌نامه‌هایی در حوزه‌های گوناگون از جمله زبان‌های برنامه‌نویسی کرده است. به منظور دسترسی به کلیه تقلب‌نامه‌های منتشر شده در وبلاگ فرادرس، می‌توانید از این لینک استفاده کنید. نوشته حاضر در برگی..

توضیحات بیشتر »

دوگانگی موج و ذره — به زبان ساده

در آموزش‌های قبلی مجله فرادرس، به بررسی طیف اتمی پرداختیم. در این آموزش، مفاهیم مربوط به «دوگانگی موج و ذره» (Wave-Particle Duality) را بیان می‌کنیم. دوگانگی موج و ذره نیوتن و بیشتر دانشمندان هم دوره او، نور را به فرم ذره می‌دیدند. از نظر نیوتن، نور، به صورت گوی‌ها یا ذرات کوچکی بود. به بیان نیوتن، ذرات، پس از برخورد به بعضی اجسام منحرف می‌شوند، اما از برخی اجسام دیگر عبور می‌کنند. این رفتار، از قانون مکانیک نیوتن تبعیت می‌کند و به نام «نظریه ذره‌ای نور» (Corpuscular Theory) شناخته می‌شود. نور تنها در خط مستقیم حرکت می‌کند، بنابراین برای نیوتن طبیعی بود نور را به صورت ذره‌های بسیار کوچک در نظر بگیرد که از یک منبع نوری منتشر و از اشیا مختلف منعکس می‌شدند. اما یک گروه از فیزیکدان‌ها، از جمله هویگنس تصمیم گرفتند که مدل را پیچیده‌تر کنند. این گروه بیان کردند که بیان کلاسیک نور (که «نور هندسی» (Geometrical Optics) نامیده می‌شد) نمی‌تواند پدیده‌هایی مثل انعکاس یا تداخل را توضیح دهد. از طرف دیگر، تئوری موجی نور، نمی‌تواند توضیح دهد که چرا نور در برخورد با فلز از خود فوتون آزاد می‌کند. این پ..

توضیحات بیشتر »

مقدمه‌ای بر برنامه نویسی پروتکل-محور — به زبان ساده

برنامه نویسی پروتکل-محور (Protocol Oriented Programming) در طی سال‌های اخیر در جامعه توسعه‌دهندگان سوئیفت (Swift) توجه زیادی را برانگیخته و به یک ترند تبدیل شده است. برخی افراد عاشق آن هستند و برخی دیگر از آن متنفرند؛ اما شاید از خود بپرسید برنامه‌نویسی پروتکل-محور واقعاً چیست؟ قرار است چه مسائلی را حل کند؟ و چه ارتباطی با مفهوم جاافتاده برنامه‌نویسی شیءگرا دارد؟ برنامه‌نویسی پروتکل-محور چیست؟ ابتدا باید اشاره کنیم که برنامه‌نویسی پروتکل محور، رقیب یا جایگزینی برای برنامه‌نویسی شیءگرا محسوب نمی‌شود. این رویکرد برنامه‌نویسی در واقع روشی برای تفکر در مورد یک مجموعه مسائل خاص است که به ایجاد یک کد انعطاف‌پذیر، قابل نگهداری و با خوانایی آسان کمک می‌کند. برنامه‌نویسی پروتکل –محور را بیشتر می‌توان یک مکمل برای رویکرد شیءگرایی تصور کرد. در واقع برنامه‌نویسی شیءگرا هم اینک شامل چندین مورد از ایده‌های اصلی برنامه‌نویسی پروتکل-محور است. کار خود را با بررسی روش کمک پروتکل‌ها (یا چنان که در اغلب زبان‌های دیگر برنامه‌نویسی نامیده می‌شوند، اینترفیس‌ها) به کپسوله‌سازی و پنهان‌سازی اطلاعات شروع می‌..

توضیحات بیشتر »

Dagger 2 در اندروید (بخش دوم) — راهنمای رسمی

اگر از موضوعات منفی که پیرامون Dagger همواره مطرح بوده‌اند، تأثیر نپذیرفته‌اید و می‌خواهید از آن استفاده کنید؛ احتمالاً به عملکرد آن اهمیت می‌دهید و می‌خواهید بیشترین بازدهی را از آن بگیرید. در این صورت توصیه می‌کنیم این مقاله را تا به انتها مطالعه کنید. این مقاله در واقع بخش دوم مقابله «Dagger 2 در اندروید (بخش اول) — راهنمای پیشرفته» است. هدف ما در این مقاله دیگر این نیست که داگر را ساده‌تر کنیم. در این نوشته می‌خواهیم مطمئن شویم که از داگر به همان ترتیبی که انتظار می‌رود استفاده می‌کنیم. برای نمونه این وضعیت در اغلب موارد منتهی به بهبود عملکرد می‌شود. نکته خوب این است که مواردی که در این راهنما ارائه می‌شوند کاملاً ساده هستند و جای هیچ نگرانی نیست. مواردی که در این مقاله ارائه خواهند شد را می‌توان در فهرست زیر جمع‌بندی کرد: از حیطه‌بندی غیرضروری اجتناب کرده و به وهله‌های [email protected] اهمیت بدهید. همواره تلاش کنید از متدهای استاتیک استفاده کنید. چارچوب اپلیکیشن را به جای ماژولی با «آرگومان سازنده» (constructor argument)‌؛ از طریق «کامپوننت ساز» (‌component builder) ‌عرضه کنید. در تست..

توضیحات بیشتر »