🔵نامگذاری تابع🔵
پیش نیاز: ندارد
سطح پیچیدگی:🌑🌑🌑🌑🌑
برای: همه
📝هدف از این پست: یادگیری یک گام دیگر برای نوشتن برنامه ای اصولی تر
برای اینکه نامی که برای تابع انتخاب می کنید هم نام با تابعی دیگر نباشد که بعدها موجب یک کانفلیکت شود، می توانید با استفاده از دستور which از این رخداد جلوگیری کنید:
در این فرمان functionname اسم تابع شماست و -all باعث میشود که دستور which تمام مسیرهای ممکن را جستجو کند.
#Programming , #For_all
@MatlabTips
پیش نیاز: ندارد
سطح پیچیدگی:🌑🌑🌑🌑🌑
برای: همه
📝هدف از این پست: یادگیری یک گام دیگر برای نوشتن برنامه ای اصولی تر
برای اینکه نامی که برای تابع انتخاب می کنید هم نام با تابعی دیگر نباشد که بعدها موجب یک کانفلیکت شود، می توانید با استفاده از دستور which از این رخداد جلوگیری کنید:
which -all functionname
در این فرمان functionname اسم تابع شماست و -all باعث میشود که دستور which تمام مسیرهای ممکن را جستجو کند.
#Programming , #For_all
@MatlabTips
🔵تفاوت Accuracy و Precision🔵
برای: همه
پیش نیاز: ندارد
سطح پیچیدگی: 🌓🌑🌑🌑🌑
شهید بهشتی با دکتر مهرشاهی محاسبات عددی داشتیم. دکتر واقعا کارش درست بود. برعکس دکترای الان که همه چی رو حفظ میکنن، دکتر ما همه چی رو فهمیده بود. همش میگفت: زبان فارسی زبان شعر و شاعریه. زبان علمی نیست. اصرار داشت که حتما کتاب زبان اصلی بگیریم.
الان که خواستم این پست رو بزارم و نتونستم معادل فارسی برای دو کمله accuracy و precision پیدا کنم، یاد اون استاد شریف افتادم.
🖊تعریف Accuracy:
اینه که مقدار اندازه گیریمون چقد به مقدار واقعی نزدیک باشه.
🖊تعریف Precision:
اینه که مقادیر اندازه گیری چقد نسبت به همدیگه دقیق باشن.
صفحه دارت رو در نظر بگیرید که شما به سمت اون چند تیر پرتاب میکنید. اگر همه تیرها به مرکز بخوره این یعنی هم accuracy و هم precisionشما عالیه.
اگر همه تیرها مثلا در زاویه 30درجه و شعاع rمتری از مرکز بخورن، این یعنی accuracyشما پایینه ولی precisionتون خوبه.
اگر هر تیر در یک زاویه و شعاع برخورد کند این یعنی نباید دارت بازی کنید.
در حقیقت precision یک بایاس دارد. بایاس چیست؟
مثال هایی از بایاس
1⃣ترازویی که بدون آنکه چیزی رویش گذاشته باشید 1کیلوگرم را نشان میدهد.
2⃣همواره قد خودتان را در حالی اندازه گیری کنید که کفشی پاشنه بلند پوشیده اید.
3⃣کرونومتری که زمان را اندازه گیری میکند، اما مقداری زمان صرف این میشود که شما کلیک کنید.
در همه موارد بالا اندازه گیری های شما به یک اندازه خطا دارد. اگر همه اینها را به همان اندازه شیفت دهیم درست میشود.
نکته اخر اینکه Accuracy وابسته به سیستم اندازه گیری شماست.
پی نوشت: عزیزم همه اینا به متلب ربط داره. همه اینا به محاسبات عددی ربط داره. همش.
#For_all ,#accuracy, #precision
@MatlabTips
برای: همه
پیش نیاز: ندارد
سطح پیچیدگی: 🌓🌑🌑🌑🌑
شهید بهشتی با دکتر مهرشاهی محاسبات عددی داشتیم. دکتر واقعا کارش درست بود. برعکس دکترای الان که همه چی رو حفظ میکنن، دکتر ما همه چی رو فهمیده بود. همش میگفت: زبان فارسی زبان شعر و شاعریه. زبان علمی نیست. اصرار داشت که حتما کتاب زبان اصلی بگیریم.
الان که خواستم این پست رو بزارم و نتونستم معادل فارسی برای دو کمله accuracy و precision پیدا کنم، یاد اون استاد شریف افتادم.
🖊تعریف Accuracy:
اینه که مقدار اندازه گیریمون چقد به مقدار واقعی نزدیک باشه.
🖊تعریف Precision:
اینه که مقادیر اندازه گیری چقد نسبت به همدیگه دقیق باشن.
صفحه دارت رو در نظر بگیرید که شما به سمت اون چند تیر پرتاب میکنید. اگر همه تیرها به مرکز بخوره این یعنی هم accuracy و هم precisionشما عالیه.
اگر همه تیرها مثلا در زاویه 30درجه و شعاع rمتری از مرکز بخورن، این یعنی accuracyشما پایینه ولی precisionتون خوبه.
اگر هر تیر در یک زاویه و شعاع برخورد کند این یعنی نباید دارت بازی کنید.
در حقیقت precision یک بایاس دارد. بایاس چیست؟
مثال هایی از بایاس
1⃣ترازویی که بدون آنکه چیزی رویش گذاشته باشید 1کیلوگرم را نشان میدهد.
2⃣همواره قد خودتان را در حالی اندازه گیری کنید که کفشی پاشنه بلند پوشیده اید.
3⃣کرونومتری که زمان را اندازه گیری میکند، اما مقداری زمان صرف این میشود که شما کلیک کنید.
در همه موارد بالا اندازه گیری های شما به یک اندازه خطا دارد. اگر همه اینها را به همان اندازه شیفت دهیم درست میشود.
نکته اخر اینکه Accuracy وابسته به سیستم اندازه گیری شماست.
پی نوشت: عزیزم همه اینا به متلب ربط داره. همه اینا به محاسبات عددی ربط داره. همش.
#For_all ,#accuracy, #precision
@MatlabTips
🔵شیپور گابریل🔵
پیشنیاز: گذراندن ریاضیات 1 و آشنایی با کتابخانه سیمبولیک
سطح پیچیدگی: 🌕🌑🌑🌑🌑
📝هدف از این پست: بررسی پارادوکس شیپور گابریل
شیپور گابریل یا(ترومپت توریچلی) یک تصویر هندسی با سطح بی نهایت و حجم محدود است. نامگذاری این شکل برمیگردد به یک اتفاق معهود سنتی که گابریل به عنوان یک فرشته بر شیپوری میدمد تا همگان را خبر کند که روز قضاوت فرا رسیده است، با وسیله ای محدود جهانی نامحدود را اطلاع رسانی میکند.(در فرهنگ اسلامی صور اسرافیل).
مشخصات این شکل برای اولین بار توسط فیزیکدان و ریاضیدان ایتالیایی توریچلی در قرن 17 بررسی شد.
شکلی با سطح بی نهایت و حجمی متناهی به سان داشتن سطلی است که می توانید آن را از رنگ پر کنید ولی نمیتوانید سطح آن را رنگ آمیزی کنید که منجر به یک پارادوکس میشود. ز این دست پارادوکس ها میتوان به برفدانه کخ نیز اشاره کرد که محیطی بی نهایت دارد اما سطحی محدود.
شیپور گابریل با دوران دادن تابغ y=1/x حول محور xها بدست میآید.(بازه انتگرالگیری را از 1 تا بی نهایت در نظر بگیرید). به برکت کتابخانه سیمبولیک متلب می توانیم به شکلی نمادین این انتگرالگیری را انجام دهیم.
و با استفاد از دستور ezplot که باز از کتابخانه سیمبولیک متلب است داریم:
پیشنیاز: گذراندن ریاضیات 1 و آشنایی با کتابخانه سیمبولیک
سطح پیچیدگی: 🌕🌑🌑🌑🌑
📝هدف از این پست: بررسی پارادوکس شیپور گابریل
شیپور گابریل یا(ترومپت توریچلی) یک تصویر هندسی با سطح بی نهایت و حجم محدود است. نامگذاری این شکل برمیگردد به یک اتفاق معهود سنتی که گابریل به عنوان یک فرشته بر شیپوری میدمد تا همگان را خبر کند که روز قضاوت فرا رسیده است، با وسیله ای محدود جهانی نامحدود را اطلاع رسانی میکند.(در فرهنگ اسلامی صور اسرافیل).
مشخصات این شکل برای اولین بار توسط فیزیکدان و ریاضیدان ایتالیایی توریچلی در قرن 17 بررسی شد.
شکلی با سطح بی نهایت و حجمی متناهی به سان داشتن سطلی است که می توانید آن را از رنگ پر کنید ولی نمیتوانید سطح آن را رنگ آمیزی کنید که منجر به یک پارادوکس میشود. ز این دست پارادوکس ها میتوان به برفدانه کخ نیز اشاره کرد که محیطی بی نهایت دارد اما سطحی محدود.
شیپور گابریل با دوران دادن تابغ y=1/x حول محور xها بدست میآید.(بازه انتگرالگیری را از 1 تا بی نهایت در نظر بگیرید). به برکت کتابخانه سیمبولیک متلب می توانیم به شکلی نمادین این انتگرالگیری را انجام دهیم.
>> syms x
>> A = int(1/x,1,inf) % calculate area from 1 to inf
A =
Inf
و با استفاد از دستور ezplot که باز از کتابخانه سیمبولیک متلب است داریم:
ezplot(1/x,1,10)
اگر این نمودار را حول محور x دوران دهید، میتوانید حجم آن رابه صورت مجموع حجم دیسک های دیفرانسیلی در نظر بگیرید. حجم هر دیسک دیفرانسیلی برابر است با مساحت سطح دیسک(دایره ای به شعاع y یا 1 بخش بر x) در ارتفاع آن(dx).
با استفاده از دستور cylinder که یک استوانه رسم میکند، میتوان با ورودی دادن نمودار بالا، آن را دوران دهد تا چیزی شبیه شیپور گابریل بدست آید.
با استفاده از دستور cylinder که یک استوانه رسم میکند، میتوان با ورودی دادن نمودار بالا، آن را دوران دهد تا چیزی شبیه شیپور گابریل بدست آید.
x = 1:0.01:20;
[X,Y,Z]=cylinder(1./x);
mesh(Z,Y,X)
xlabel('x')
ylabel('y')
zlabel('z')
view(-90,90)
اگر نیک بنگریم، تابع حجم این شیپور دارای یک ترم درجه دو از x در مخرج که ناشی از به توان دو رساندن شعاع دایره میشود می باشد. همین باعث میشود که انتگرال محدود شود. دوباره در متلب داریم:
بیشینه حجم برابر pi میباشد.
اگر به رابطه ریاضی این انتگرال هم نگاه کنیم، مهم نیست کران بالای انتگرال چقدر بزرگ باشد، به هر حال مقدار انتگرال به یک عدد متناهی میل میکند.
>> syms x
>> V = pi * int(1/x^2,1,inf) %calculate volume of Gabriel horn
V =
pi
بیشینه حجم برابر pi میباشد.
اگر به رابطه ریاضی این انتگرال هم نگاه کنیم، مهم نیست کران بالای انتگرال چقدر بزرگ باشد، به هر حال مقدار انتگرال به یک عدد متناهی میل میکند.
این پارادوکس در ریاضیات و هنگامی که از بی نهایت صحبت میکنیم باید معتبر باشد. در عمل همچین چیزی امکان پذیر نیست.
شما نمیتوانید سطلی بسازید که بیرون آن نشود رنگ کرد اما بتوان آن را از رنگ پر کرد، چرا که نیاز است سطل را تا بی نهایت امتداد داد. چطور میتوانید در بی نهایت رنگ بزنید؟ لبه سطل در بی نهایت خیلی خیلی ریز شده است، اینقدر ریز شده است که در عمل هیچ مولکولی از رنگ از آن کوچکتر نیست.
پی نوشت: هیچ مسئولیتی در مورد استدلال آخر به عهده نمیگیریم، صرفا یک ریزالویشن بود.
#Gabriel, #Paradox
@MatlabTips
شما نمیتوانید سطلی بسازید که بیرون آن نشود رنگ کرد اما بتوان آن را از رنگ پر کرد، چرا که نیاز است سطل را تا بی نهایت امتداد داد. چطور میتوانید در بی نهایت رنگ بزنید؟ لبه سطل در بی نهایت خیلی خیلی ریز شده است، اینقدر ریز شده است که در عمل هیچ مولکولی از رنگ از آن کوچکتر نیست.
پی نوشت: هیچ مسئولیتی در مورد استدلال آخر به عهده نمیگیریم، صرفا یک ریزالویشن بود.
#Gabriel, #Paradox
@MatlabTips
🔵دستور ezplot🔵
پیش نیاز: آشنایی مقدماتی
برای: همه
سطح پیچیدگی: 🌓🌑🌑🌑🌑
📝هدف از این پست: تشریح دستورات بکار رفته در پست شیپور گابریل
در پست بالا (شیپور گابریل)از این دستور استفاده کردیم که یک تابع با متغیرهای سیمبولیک را رسم کند.
دو حرف اول این دستور که تلفظی شبیه easy به معنی آسان دارد، این مفهوم را منتقل میکند که شما میتوانید به راحتی یک نمودار را رسم کنید بدون اینکه درگیر تعریف بازه و ... شوید.
ورودی ها:
1⃣می توانید یک تابع بی نام تعریف کنید و با این دستور رسم کنید:
2⃣می توانید یک تابع سیمبولیک تعریف کنید و با این دستور رسم کنید:
3⃣می توانید تابع را درون یک رشته به این دستور ورودی دهید:
البته یه نکته خیلی خوب در مورد این تابع رسم توابع ضمنی هستش.
اگر به شکل ها دقت کنید متوجه میشوید که برای پی بردن به این نکته که بازه رسم در این دستور از منفی 2pi تا 2pi است به کسی مدال افتخار تعلق نمیگیرد. در صورتی که میخواهید بازه غیر این باشد میتوانید به صورت زیر بازه را تغییر دهید.
#For_all, #plot
@MatlabTips
پیش نیاز: آشنایی مقدماتی
برای: همه
سطح پیچیدگی: 🌓🌑🌑🌑🌑
📝هدف از این پست: تشریح دستورات بکار رفته در پست شیپور گابریل
در پست بالا (شیپور گابریل)از این دستور استفاده کردیم که یک تابع با متغیرهای سیمبولیک را رسم کند.
دو حرف اول این دستور که تلفظی شبیه easy به معنی آسان دارد، این مفهوم را منتقل میکند که شما میتوانید به راحتی یک نمودار را رسم کنید بدون اینکه درگیر تعریف بازه و ... شوید.
ورودی ها:
1⃣می توانید یک تابع بی نام تعریف کنید و با این دستور رسم کنید:
f = @(x) sin(x);
ezplot(f)
2⃣می توانید یک تابع سیمبولیک تعریف کنید و با این دستور رسم کنید:
syms x
f = sin(x);
ezplot(f)
3⃣می توانید تابع را درون یک رشته به این دستور ورودی دهید:
ezplot('sin(x)')
البته یه نکته خیلی خوب در مورد این تابع رسم توابع ضمنی هستش.
ezplot('sin(x)+cos(y)')
اگر به شکل ها دقت کنید متوجه میشوید که برای پی بردن به این نکته که بازه رسم در این دستور از منفی 2pi تا 2pi است به کسی مدال افتخار تعلق نمیگیرد. در صورتی که میخواهید بازه غیر این باشد میتوانید به صورت زیر بازه را تغییر دهید.
ezplot('sin(x)',[1,10])
#For_all, #plot
@MatlabTips
🔵برنامه نویسی سمبلیک🔵
سطح پیچیدگی:🌕🌕🌕🌑🌑
پیشنیاز: برنامه نویسی مقدماتی
برای: متوسط و پیشرفته
شاید خیلی از افراد مانند من که سابقه حل مساله روی کاغذ در ریاضی را دارند وقتی برای اولین بار با یک زبان برنامه نویسی مواجه می شوند تجربه ناخوشآیندی را داشته باشند. دلیل آن هم ساده است. بسیاری از چیز هایی که شما قبلا در ریاضی خوانده اید معادل های به کلی متفاوتی در کامپیوتر دارند. به طور مثال متغیر دیگر آن معنای سابق خود را ندارد. یا علامت تساوی معنای دیگری را دارد. همه چیز گسسته است و وقتی یک متغیر را تعریف می کنید همیشه باید در ذهن داشته باشید که این فضایی در حافظه من را گرفته است و قس علی هذا.
شاید اولین ایده ساخت زبان برنامه نویسی سمبلیک را استفان ولفرام در بسته نرم افزاری Mathematica پیاده سازی کرد. شاید تجربه او از فیزیک نظری با ریاضیات محض او را به این نتیجه رساند. به هر روی ایده او به زبان های برنامه سازی دیگر مانند متلب هم راه پیدا کرد و در این زبان ها هم میبینیم که می توان به دنیای تخیلی ریاضیات باز هم برگردیم (تخیلی به معنای وجود بی نهایت واقعی و دیگر ایده هاست). تابع sym و syms به ما کمک می کند که متغیر به معنای ریاضیاتی آن داشته باشیم. همانطور که در ریاضیات خوانده ایم اعداد حقیقی، طبیعی و غیره هستند (بر خلاف کامیپیوتر که مجبور هستیم از float، int و امثالهم استفاده کنیم) بنابراین شما قادر خواهید بود نوع عددتان را هم تعریف کنید. قطعه کد زیر سه متغیر را تعریف می کنند:
یا به طور خلاصه تر:
وقتی نوعی بیان نمی شود (که معمولا هم همین کار را می کنیم) نوع را حقیقی در نظر می گیرد. می توان به صورت دلخواه هم تعریف کرد:
حتی اعداد اعشاری را هم می توان به این طریق به صورت فرم کسری آشناتر تبدیل کرد:
می توان با توابع هم آن ها را ترکیب کرد و مقدار تابع را محاسبه نمود:
و می توان معادلات را به صورت زیر حل کرد:
باید توجه کنید آنچه در داخل solve می آید یک رشته است و نباید خود متغیر را به صورت مستقیم استفاده کرد. آنچه در داخل این رشته نوشته می شود بسیار مشابه با آن چیزی است که در حل معادله های ریاضی مورد استفاده قرار می دادیم. مثلا دستگاه معادلات را به صورت زیر داریم:
اما قضیه زمانی جالب تر می شود که شما بتوانید به صورت پارامتری معادله را حل کنید یعنی زمانی که معادلات از متغیر ها کمتر باشند. در این حالات جواب های شما عدد نیستند بلکه متغیر هم دارند:
در قسمت بعدی بیشتر از این ابزار جالب استفاده می کنیم. مثلا مشتق گرفتن یا انتگرال گیری نامعین را مورد بررسی قرار می دهیم.
@MatlabTips
#Symbolic_Programming , #Symbolic_math
سطح پیچیدگی:🌕🌕🌕🌑🌑
پیشنیاز: برنامه نویسی مقدماتی
برای: متوسط و پیشرفته
شاید خیلی از افراد مانند من که سابقه حل مساله روی کاغذ در ریاضی را دارند وقتی برای اولین بار با یک زبان برنامه نویسی مواجه می شوند تجربه ناخوشآیندی را داشته باشند. دلیل آن هم ساده است. بسیاری از چیز هایی که شما قبلا در ریاضی خوانده اید معادل های به کلی متفاوتی در کامپیوتر دارند. به طور مثال متغیر دیگر آن معنای سابق خود را ندارد. یا علامت تساوی معنای دیگری را دارد. همه چیز گسسته است و وقتی یک متغیر را تعریف می کنید همیشه باید در ذهن داشته باشید که این فضایی در حافظه من را گرفته است و قس علی هذا.
شاید اولین ایده ساخت زبان برنامه نویسی سمبلیک را استفان ولفرام در بسته نرم افزاری Mathematica پیاده سازی کرد. شاید تجربه او از فیزیک نظری با ریاضیات محض او را به این نتیجه رساند. به هر روی ایده او به زبان های برنامه سازی دیگر مانند متلب هم راه پیدا کرد و در این زبان ها هم میبینیم که می توان به دنیای تخیلی ریاضیات باز هم برگردیم (تخیلی به معنای وجود بی نهایت واقعی و دیگر ایده هاست). تابع sym و syms به ما کمک می کند که متغیر به معنای ریاضیاتی آن داشته باشیم. همانطور که در ریاضیات خوانده ایم اعداد حقیقی، طبیعی و غیره هستند (بر خلاف کامیپیوتر که مجبور هستیم از float، int و امثالهم استفاده کنیم) بنابراین شما قادر خواهید بود نوع عددتان را هم تعریف کنید. قطعه کد زیر سه متغیر را تعریف می کنند:
>> x = sym('x');
>> y = sym('y');
>> z = sym('z');
یا به طور خلاصه تر:
>> syms x y z;
وقتی نوعی بیان نمی شود (که معمولا هم همین کار را می کنیم) نوع را حقیقی در نظر می گیرد. می توان به صورت دلخواه هم تعریف کرد:
syms x y integer
حتی اعداد اعشاری را هم می توان به این طریق به صورت فرم کسری آشناتر تبدیل کرد:
>> a = sym(4.12)
a =
103/25
می توان با توابع هم آن ها را ترکیب کرد و مقدار تابع را محاسبه نمود:
>> f = x + y - z;
>> subs(f,{x y z},{1 2 3})
ans =
0
و می توان معادلات را به صورت زیر حل کرد:
>> solve('sin(x) = 1')
ans =
pi/2
>> x = solve('2*x-8 = 10')
x =
9
باید توجه کنید آنچه در داخل solve می آید یک رشته است و نباید خود متغیر را به صورت مستقیم استفاده کرد. آنچه در داخل این رشته نوشته می شود بسیار مشابه با آن چیزی است که در حل معادله های ریاضی مورد استفاده قرار می دادیم. مثلا دستگاه معادلات را به صورت زیر داریم:
>> [x y z] = solve('x+y-z=4','x-2*y+3*z=-6','2*x+3*y+z=7')
x =
1
y =
2
z =
-1
اما قضیه زمانی جالب تر می شود که شما بتوانید به صورت پارامتری معادله را حل کنید یعنی زمانی که معادلات از متغیر ها کمتر باشند. در این حالات جواب های شما عدد نیستند بلکه متغیر هم دارند:
>> [x y] = solve('x+y-z=4','x-2*y+3*z=-6','x,y')
x =
2/3 - z/3
y =
(4*z)/3 + 10/3
>> [x z] = solve('x+y-z=4','x-2*y+3*z=-6','x,z')
x =
3/2 - y/4
z =
(3*y)/4 - 5/2
در قسمت بعدی بیشتر از این ابزار جالب استفاده می کنیم. مثلا مشتق گرفتن یا انتگرال گیری نامعین را مورد بررسی قرار می دهیم.
@MatlabTips
#Symbolic_Programming , #Symbolic_math
🔵کپی کردن از پنجره figure🔵
برای: همه
سطح پیچیدگی:🌑🌑🌑🌑🌑
شاید خیلی مبتدی به نظر برسد، ولی کپی کردن از پنجره figure یک سری آپشن دارد که عناوین خود توضیح دهنده هستند. همین آپشن های ساده ممکن است به زیباسازی گزارش شما کمک کند. به جای استفاده از پرینت اسکرین یا snipping tool میتوانید از منوی edit گزینه copy figure را انتخاب کنید، تصویر در clip board کپی شده است و می توانید در word با فشردن ctr+v نمودار را پیست کنید.
به تصویر بالا نگاه کنید👆👆👆
#Copy_figure
@MatlabTips
برای: همه
سطح پیچیدگی:🌑🌑🌑🌑🌑
شاید خیلی مبتدی به نظر برسد، ولی کپی کردن از پنجره figure یک سری آپشن دارد که عناوین خود توضیح دهنده هستند. همین آپشن های ساده ممکن است به زیباسازی گزارش شما کمک کند. به جای استفاده از پرینت اسکرین یا snipping tool میتوانید از منوی edit گزینه copy figure را انتخاب کنید، تصویر در clip board کپی شده است و می توانید در word با فشردن ctr+v نمودار را پیست کنید.
به تصویر بالا نگاه کنید👆👆👆
#Copy_figure
@MatlabTips
خرم آن نغمه که مردم بسپارند به یاد...
از دیرباز افراد زیادی به دنبال اکسیر حیات ابدی انواع روش های عجیب و خطرناک را پیش می گرفتند البته آرزوی جاودانگی را خاکیان همه به گور می بردند در این میان آنچه می ماند اثر و کار افراد بود که البته باز هم تعداد کمی این شانس را داشتند که کارشان در طول زمان رنگ نبازد و از اعتبارش کاسته نشود. شاید یکی از عجیب ترین موارد اقلیدس باشد که کارهای او تا مدت ها پر تاثیر بود. سخت است تصور این که ایده ای 300 سال پیش از آنکه حتی مسیح به دنیا آمده باشد امروز همچنان یکه تاز باشد و در قلب پیچیده ترین سیستم های رمز نگاری ای قرار بگیرد که مسئول انتقال میلیون ها دلار به صورت امن در بستر اینترنت است. الگوریتم بزرگترین مقسوم علیه مشترک (ب.م.م) یا GCD (که در مدرسه به نام روش نردبانی میشناختیم) اولین بار توسط اقلیدس ارائه شد و در طول چند صد سال اخیر تمام دانش آموزان دنیا آن را فرا گرفته اند (و خواهند گرفت)، الگوریتم ساده ای است که در طول این 2000 سال با وجود تلاش بسیار زیاد ریاضیدانان و دانشمندان علوم کامپیوتر رقیب جدی ای از لحاظ کارایی و زیبایی برایش یافته نشده است. به این ترتیب این الگوریتم اکسیر جاودانگی اقلیدس شد!
@MatlabTips
از دیرباز افراد زیادی به دنبال اکسیر حیات ابدی انواع روش های عجیب و خطرناک را پیش می گرفتند البته آرزوی جاودانگی را خاکیان همه به گور می بردند در این میان آنچه می ماند اثر و کار افراد بود که البته باز هم تعداد کمی این شانس را داشتند که کارشان در طول زمان رنگ نبازد و از اعتبارش کاسته نشود. شاید یکی از عجیب ترین موارد اقلیدس باشد که کارهای او تا مدت ها پر تاثیر بود. سخت است تصور این که ایده ای 300 سال پیش از آنکه حتی مسیح به دنیا آمده باشد امروز همچنان یکه تاز باشد و در قلب پیچیده ترین سیستم های رمز نگاری ای قرار بگیرد که مسئول انتقال میلیون ها دلار به صورت امن در بستر اینترنت است. الگوریتم بزرگترین مقسوم علیه مشترک (ب.م.م) یا GCD (که در مدرسه به نام روش نردبانی میشناختیم) اولین بار توسط اقلیدس ارائه شد و در طول چند صد سال اخیر تمام دانش آموزان دنیا آن را فرا گرفته اند (و خواهند گرفت)، الگوریتم ساده ای است که در طول این 2000 سال با وجود تلاش بسیار زیاد ریاضیدانان و دانشمندان علوم کامپیوتر رقیب جدی ای از لحاظ کارایی و زیبایی برایش یافته نشده است. به این ترتیب این الگوریتم اکسیر جاودانگی اقلیدس شد!
@MatlabTips
🔵در راستای پست قبلی🔵
پست قبلی که آقای زندیه گذاشت مثل الباقی پست ها برای علاقه مندان به ریاضیات جذاب بود. باعث افتخاره که یک متخصص data mining از شریف در کنار ما فعالیت دارند.
اما بد نیست که در راستای پست قبلی، برنامه ای هم برای محاسبه ب.م.م بنویسیم.
اگرچه الگوریتم بسیار پرکاربرد و کارآمد است، اما با روابط ساده ای بیان میشود. خیلی از شاهکارهای تاریخ به این صورت بوده است. فرمول معروف جرم به انرژی انشتاین، مجموعه مندلبرات، ژولیا و ... .
فلوچارت این الگوریتم در زیر آورده شده است.
پست قبلی که آقای زندیه گذاشت مثل الباقی پست ها برای علاقه مندان به ریاضیات جذاب بود. باعث افتخاره که یک متخصص data mining از شریف در کنار ما فعالیت دارند.
اما بد نیست که در راستای پست قبلی، برنامه ای هم برای محاسبه ب.م.م بنویسیم.
اگرچه الگوریتم بسیار پرکاربرد و کارآمد است، اما با روابط ساده ای بیان میشود. خیلی از شاهکارهای تاریخ به این صورت بوده است. فرمول معروف جرم به انرژی انشتاین، مجموعه مندلبرات، ژولیا و ... .
فلوچارت این الگوریتم در زیر آورده شده است.
به راحتی این فلوچارت به کد تبدیل میشود.
% Clears screen and deletes all the variables in the workspace
clear; clc
% Asks the user for input and takes only positive numbers into account
a = input('First number: ');
b = input('Second number: ');
a = abs(a);
b = abs(b);
% This is the real trick, normally performed a number of times
r = mod(a,b);
% Repeats the operation until updates of a equal updates of b
while r ~= 0
a = b;
b = r;
r = mod(a,b);
end
% Displays the result
GCD = b
البته خود متلب هم تابعی به نام gcd دارد که همین کار را انجام میدهد. جالب است بدانید که مهندسی که این تابع را برای مث ورک نوشته است، رفرنس به مقاله آقای "کنوث" داده است. همان شخصی که آن جمله قصار در مورد دانشمند شهیر اقلیدس گفته است(در پست قبل).
رفرنس مقاله:
[1] Knuth, D. "Algorithms A and X." The Art of Computer Programming, Vol. 2, Section 4.5.2. Reading, MA: Addison-Wesley, 1973.
#Gcd, # Euclidian_algorithm
@MatlabTips
% Clears screen and deletes all the variables in the workspace
clear; clc
% Asks the user for input and takes only positive numbers into account
a = input('First number: ');
b = input('Second number: ');
a = abs(a);
b = abs(b);
% This is the real trick, normally performed a number of times
r = mod(a,b);
% Repeats the operation until updates of a equal updates of b
while r ~= 0
a = b;
b = r;
r = mod(a,b);
end
% Displays the result
GCD = b
البته خود متلب هم تابعی به نام gcd دارد که همین کار را انجام میدهد. جالب است بدانید که مهندسی که این تابع را برای مث ورک نوشته است، رفرنس به مقاله آقای "کنوث" داده است. همان شخصی که آن جمله قصار در مورد دانشمند شهیر اقلیدس گفته است(در پست قبل).
رفرنس مقاله:
[1] Knuth, D. "Algorithms A and X." The Art of Computer Programming, Vol. 2, Section 4.5.2. Reading, MA: Addison-Wesley, 1973.
#Gcd, # Euclidian_algorithm
@MatlabTips
🔵برنامه نویسی سمبلیک(ادامه)🔵
سطح پیچیدگی:🌕🌕🌕🌑🌑
پیشنیاز: برنامه نویسی مقدماتی
برای: متوسط و پیشرفته
همانطور که دیدیم برنامه نویسی سمبلیک به اندازه برنامه نویسی عددی جالب و جذاب است. در این قسمت چند مثال دیگر می آوریم. مثال هایی که می آوریم ممکن است برای بسیاری از شما تازگی داشته باشد. چون قبلا تصور نمی کردید می توانید با کامپیوتر نه تنها تمرینهای محاسبات عددی بلکه بقیه کارها را هم انجام دهید!
ساده کردن عبارات جبری کاری است که چند سال از تحصیل ریاضی ما را به خود مشغول کرد.
⚠️توصیه می شود این ابزار به دوستانی که هنوز در حال آموزش هستند یاد داده نشود⚠️
متلب می تواند این کار را برای شما انجام دهد. مثلا :
یا اینکه عبارت های مثلثاتی را ساده کنید:
همچنین تجزیه برایش کاری ندارد!
همچنین می توانید مشتق گیری کنید:
حد گیری:
یا محاسبه بسط تیلور:
این ها تنها شمه ای از قدرت این ابزار هستند. شما می توانید تعداد بیشتری از این قابلیت ها را در help متلب جستجو کنید. به این شیوه برنامه سازی computational mathematics هم می گویند که شاخه ای به شدت در حال رشد است. نتایج ریاضی و فلسفی زیادی بر این نگرش به "محاسبه" مترتب است که در پست های بعدی در قالب خلاصه کتاب آورده می شود.
@MatlabTips
#Symbolic_Programming #Computational_Mathematics
سطح پیچیدگی:🌕🌕🌕🌑🌑
پیشنیاز: برنامه نویسی مقدماتی
برای: متوسط و پیشرفته
همانطور که دیدیم برنامه نویسی سمبلیک به اندازه برنامه نویسی عددی جالب و جذاب است. در این قسمت چند مثال دیگر می آوریم. مثال هایی که می آوریم ممکن است برای بسیاری از شما تازگی داشته باشد. چون قبلا تصور نمی کردید می توانید با کامپیوتر نه تنها تمرینهای محاسبات عددی بلکه بقیه کارها را هم انجام دهید!
ساده کردن عبارات جبری کاری است که چند سال از تحصیل ریاضی ما را به خود مشغول کرد.
⚠️توصیه می شود این ابزار به دوستانی که هنوز در حال آموزش هستند یاد داده نشود⚠️
متلب می تواند این کار را برای شما انجام دهد. مثلا :
simplify((x - 1)*(x + 1)*(x^2 + x + 1)*(x^2 + 1)*(x^2 - x + 1)*(x^4 - x^2 + 1))
>>
ans =x^12-1
یا اینکه عبارت های مثلثاتی را ساده کنید:
combine(2*sin(x)*cos(x) + (1- cos(2*x))/2 + cos(x)^2,'sincos')
>>
ans =sin(2 x)+1
همچنین تجزیه برایش کاری ندارد!
factor(y^6-x^6)
>>
ans = (-1 x-y x+y x^2+xy+y^2 x^2-xy+y^2 )
همچنین می توانید مشتق گیری کنید:
diff(sin(x))
ans = cos(x)
حد گیری:
limit(tan(x),x,pi/2,'left')
ans = ∞
یا محاسبه بسط تیلور:
syms x
T = taylor(sin(x)/x)
>>
T =
x^4/120-x^2/6+1
این ها تنها شمه ای از قدرت این ابزار هستند. شما می توانید تعداد بیشتری از این قابلیت ها را در help متلب جستجو کنید. به این شیوه برنامه سازی computational mathematics هم می گویند که شاخه ای به شدت در حال رشد است. نتایج ریاضی و فلسفی زیادی بر این نگرش به "محاسبه" مترتب است که در پست های بعدی در قالب خلاصه کتاب آورده می شود.
@MatlabTips
#Symbolic_Programming #Computational_Mathematics
بحثی که در قسمت قبل در مورد برنامه نویسی سمبولیک آغاز کردیم توجهات زیادی را به خود جلب کرد. در چند پست بعدی در مورد شاخه ی نسبتا جدید و کمتر شناخته شده ای از علوم کامپیوتر به نام "ریاضیات محاسباتی" بحث می کنیم. خواندن آن را به همه علاقه مندان علم توصیه می کنیم 👇🏻👇🏻👇🏻