<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های medProgAyat</title><link>https://virgool.ir/feed/@hosseinmehriyari1383</link><description></description><language>fa</language><pubDate>2026-11-11 16:02:37</pubDate><image><url>https://virgool.ir/images/default-avatar.jpg</url><title>medProgAyat</title><link>https://virgool.ir/@hosseinmehriyari1383</link></image><item><title>چطور با پایتون استاد بیوشیمی را مجبور به ۲۰ دادن کردم!</title><link>https://virgool.ir/@hosseinmehriyari1383/how-python-helped-me-in-biochemistry-titration-lab-z6utraiyscit</link><description>شاید خیلی ها، مخصوصا نسل z به بعد، در دوران ابتدایی تجربه جروبحث با استاد برای فهمیدن اینکه چرا نباید از گوشی(برای سرچ زدن) و ماشین حساب برای حل سوالات استفاده کرد رو داشته باشن!!! برنامه نویسی پایتون و هوشمصنوعی تو رشتههای بهداشت از جمله پزشکی همین حکم رو داره. قراره بهتون پایتون رو معرفی کنم و بگم چطور در بیوشیمی باعث شد نمره خوبی از استاد بیوشیمی عملی بگیرم.یه ذره درمورد منشاید اون موقع که برنامه نویسی رو استارت زدم بهترین زبان برنامه نویسی python و Java بود( دور و ور سالهای 2015 تا 2016 بود)، اما به کتابخانه که میرفتم کلی کتاب برنامه نویسی دست بچه های کارشناسی بود روش نوشته بود c++ و همین باعث شد که منم برم کتاب سی شارپ (فکر می کردم همون c++ ورژن مایکروسافته) رو از کتابخونه قرض بگیرم هیچی نفهمم و مثل آدم برم کتاب رو از بیرون تهیه کنم. (هیچ وقت کتابهای کتابخانههای کوچک را برای یادگیری استفاده نکنید چون انقد داغون بودن، که صاحباشون دادنشون به کتابخانه)و بعد خوندن اون کتاب زبان های دیگه مثل C99، java، php، sql، javascript، TypeScript، NASM, lua, python, ... رو یاد گرفتم و البته کار خاصی هم نیست، اگر کسی از یک زبان، خود برنامه نویسی را درک کند دیگر هر زبان دیگری را درک میکند.البته خوندن زبان c++ از کتاب دست دوم دوست پدرم اونم 2006 در محیط DOSBOX (من متولد 2004 ام و کتابه مال 2006 بود) باعث شد من درک خیلی خوبی از خود کامپیوتر و سیستم های عامل و برنامه نویسی و ... پیدا کنم.خلاصه بعدشم که رفتیم کنکور دادیم و پزشکی قبول شدیم، چرا؟ خوب مادر و پدر گرامی!!!یک توصیه به همکارانبگذریم از گفتن درباره خودم؛بعد کلی تجربه، باید بگم پایتون زبون باحال و دلنشینی برای دوستان سلامت هست و به عنوان همکاربهتون توصیه اش می کنم، الان که ۵ شهریور ۱۴۰۵ هست و من دارم متن رو آماده می کنم پایتون، جامعهی بزرگی داره و باعث میشه هرکاری رو بخواید انجام بدید بتونید باهاش انجام بدید. البته اگر هدفتون فقط کار آماری هست زبان R پیچیدگی کمتری توی آمار و آنالیز و نمودار کشیدن داره، ولی تو هوش مصنوعی پایتون و c++ حرف اول رو میزنن.چرا پایتون برای دانشجویان پزشکی: جامعه پایتوناینکه میگم پایتون جامعه بزرگی داره ینی آدمای زیادی استفادهاش میکنن، مثلا یه بابایی اومده هوش مصنوعی نوشته برای تشخیص گذاشتن روی نوار قلب(EKG) بعد میری کد رو میبینی با پایتون هست، یا میری مثلا از pubmed خروجی بگیری میبینه نوشته برای پایتون کتابخونه داره و فقط با پایتون میشه راحت اینکارو کرد. (البته خودم دوست داشتم زبونایی مثل lua یا ruby الان جای python بودن چون زبونای واقعا قشنگتر و باحالتر و راحتتری ان ولی چه کنیم که مایکروسافت و بعضی جوامع دیگر خیلی بی سلیقه. و خشکن)شروع داستان بیوشیمیاما داستان استاد بیوشیمی. سرکلاس تیتراسیون بودیم. بخوام راحت بگم تیتراسیون چیه، قطره قطره یک ماده ای که در اصطلاح خاصیت بازی داره رو داشتیم تو یه محلولی که نمی شناختیم اضافه می کردیم تا ببینیم چی میشه! و حتی نوع ماده حل شده رو با مفاهیمی مثل pka و رابطه هندرسون-هاسلباخ و این چرتو پرتا میشد تشخیص بدیم. عکس نمودار واقعی تیتراسیون که کمک می کنه نوع اسید رو تشخیص بدیم:نمودار چرت و پرت تیتراسیون اسید و باز NaOHنمودار تیتراسیون، یک نموداری که توش اصطلاحا کفه داره یعنی تا یه جایی منحنی میره بعد یهو یه جایی صاف میشه و بعد دوباره منحنی میره. خیلی مهمه که شکل دقیقی ازش در بیاد. الان تو نموداری که گذاشتم اگر ببینید توی 30ml  (عکس پایینو ببینید) یهویی تبدیل به یک خط صاف میشه. میدونی معنی خط صاف چیه؟ یعنی این بیمروت تو کل اضافه کردنا مثل آدم زیادمیشه مثلا در ۵ هست ۱ در ۱۰ هست ۲ در ۱۵ هست ۳ در ۳۰ هست ۴، ... تا یهو به ۳۰ میرسه هست ۵ بعد روی ۳۰.۲۵ میشه ۸ بعد روی ۳۰.۵ میشه ۱۲ بعد ازونجا به بعد دوباره مثل آدم ادامه میده. تو اونجایی که قبل این بالا رفته هست، یک جایی بین ۲۰ تا ۳۰ اگر دقت کنید خیلی کند پیش رفته و pH یک دهم یک دهم اضافه میشه. اونجا همون جایی هست که pKa قرار داره و خیلی مهمه!!توضیحات این فاجعهبعد هنر دوستان این بود که برن و 3 میلی لیتر، ۳ میلی لیتر، محلولی به اسم محلول NaOH اضافه کنن و هی pH رو اندازه بگیرن تو یه جدولی بنویسن. نتیجه آزمایش ما جدولی بود که ما بدست آورده بودیم از ۱۰ عدد نه نمودار خوشگلی که بالا دیدید، خوب برای کسی که این درسا رو خونده باشه محاسبه pka و در آوردن نوع ماده کاری نداره اما مشکل اصلی میدونید کجا بود؟ استاد گفت باید نمودار بکشید. خوب با ۱۰ تا نقطه که نمیشه نمودار خوشگل و تمیز و علمی کشید!جدول بدست آمدهاینجا بود که من یاد جرو بحث های دوران ابتدایی افتادم و ناگهان گفتم بچه ها نمودار با من، اونام گفتن حاجی ما از اول نمی خواستیم کاری کنیم تو عملیت از هممون بهتره!!. القصه VSCode، شهر زیبای برنامه نویس، رو باز کردم، و شروع کردم به کد زدنی که می خوام الان بهتون یادش بدم.ماجراجویی در دل جنگ پر رمز و راز پایتون!اول از همه میدونستم برای کشیدن نمودار در python باید از کتابخانه matplotlib استفاده کنم. میدونی اول میری و کتابخانه هایی که می خوای رو به پایتون میگی برات دانلود کنه و بعدم اول کدت می نویس که من میخوام از فلان کتابخانه استفاده کنم، کد اینکه به پایتون در ترمینال vscode یا اگر با ادیتور دیگری کار میکنید باید این کد در پوشه پروژه تان در cmd(برای ویندوزی ها) یا terminal(برای مک کار ها) و یا هر terminal emulator ای که ادیتورتون پیشنهاد میده اجرا کنید:python -m pip install matplotlib # in windows&#xA;python3 -m pip install matplotlib # in linux and macosکد گفتن اینکه از چه کتابخانه ای استفاده میکنی در اول فایل پایتونت:import matplotlib.pyplot as pltاینا رو نوشتم و حالا یک نفس راحت کشیدم چون بخش اعظم کار به نظرم همین بود کدنویسیش ازینم راحت تره. اول باید داده های جدولمون که بچه ها با هم اندازه گیری کرده بودیم رو به زبان پایتون مینوشتم، تصمیم گرفتم اونو به صورت آرایه ای بنویسم و یک آرایه دو بعدی برای هر مقدار بنویسم اما به خاطر ساختار خاص matplotlib تصمیمم این شد که دو تا آرایه تک بعدی بنویسم اولی به نام pH( پی اچ ها) و دومی به نام volume (حجم ها). اگر می خواستم بگم آرایه چیه آرایه هامون توی پایتون باید اینطوری میبود:pH  = [ ] # ما ده تا مقدار اندازه گیری کردیم&#xA;volume = [ ] # پس هر دو آرایه باید ده تایی باشننامپای غول محاسباتیاما اگر کار علمی میکنید برید کتابخانه محاسباتی numpy رو یاد بگیرید، میتونه با سرعت بالا کارای عجیب غریب براتون بکنه و با ماتریس ها و آرایه ها کار کنید، محاسباتی که تو پایتون رسما قفله (مثلا باید برای مشتق گرفتن یا جمع دو آرایه یا حتی دترمینان گرفتن کلی کد بزنید ولی نامپای همرو داره و تازه به کتابخانه های علمی دیگر میتونید وصلش کنید و خودش براتون pValue و regression و ... حساب کنه)، برای دانلودش تو ترمینال بنویسید(اگر نامپای رو ندارید):python -m pip install numpy # برای ویندوزی ها&#xA;python3 -m pip install numpy # برای لینوکس یا macosحالا آرایه های کدتون اینطوری میشه:import numpy as np&#xA;&#xA;pH  = np.array([ ]) # همونه فقط باید بگید که آرایه است&#xA;volume = np.array([ ]) # و مال نامپای هست نه مال پایتونهمین فقط دورش یه یک np.array نوشتیم اما کلی کارمون رو راحت میکنه برای مثال تو همین کدی که داریم میزنیم در ادامه میبینید برای میانگین گرفتن تو بخش pKa من اومدم و volume رو یکی کشیدم عقب و دیگری را یک کشیدم جلو و جمع زده و تقسیم بر دو کردم، و با اینکار نامپای میانگین تک تک عناصر رو حساب میکنه:import numpy as np&#xA;volume = np.array([0.0,3.0, 6.0, 9.0, 12.0, 15.0, 18.0, 21.0, 23.0, 25.0, 28.0])&#xA;print(&#34;حجم ها:\t\t&#34;,volume)&#xA;&#xA;a1 = volume[1:]  # حذف اولین عنصر&#xA;a2 = volume[:-1] # حذف آخرین عنصر&#xA;&#xA;mean = (a1+a2)/2 # و میانگین گیری&#xA;&#xA;print (&#34;یک به عقب:\t&#34;,a1)&#xA;print (&#34;یک به جلو:\t&#34;,a2)&#xA;print (&#34;میانگین ها:\t&#34;,mean)&#xA;&#xA;# output:&#xA;# volumes&#x9;      [ 0.  3.  6.  9. 12. 15. 18. 21. 23. 25. 28.]&#xA;# one del forward:    [ 3.  6.  9. 12. 15. 18. 21. 23. 25. 28.]&#xA;# one del backward:   [ 0.  3.  6.  9. 12. 15. 18. 21. 23. 25.]&#xA;# means:&#x9;      [ 1.5  4.5  7.5 10.5 13.5 16.5 19.5 22.  24.  26.5]حالا اگر همین کار رو میخواستیم بدون نامپای انجام بدیم اینطوری میشد:volume = [0.0, 3.0, 6.0, 9.0, 12.0, 15.0, 18.0, 21.0, 23.0, 25.0, 28.0]&#xA;print(&#34;حجم ها:\t\t&#34;, volume)&#xA;&#xA;a1 = volume[1:]&#xA;a2 = volume[:-1]&#xA;&#xA;mean = [(x + y) / 2 for x, y in zip(a1, a2)] # به جای اون عبارت راحت نامپای&#xA;# &#39;mean = (a1+a2)/2&#39; in numpy&#xA;&#xA;print(&#34;یک به عقب:\t&#34;, a1)&#xA;print(&#34;یک به جلو:\t&#34;, a2)&#xA;print(&#34;میانگین ها:\t&#34;, mean)&#xA;&#xA;# output:&#xA;# volumes&#x9;      [ 0.  3.  6.  9. 12. 15. 18. 21. 23. 25. 28.]&#xA;# one del forward:    [ 3.  6.  9. 12. 15. 18. 21. 23. 25. 28.]&#xA;# one del backward:   [ 0.  3.  6.  9. 12. 15. 18. 21. 23. 25.]&#xA;# means:&#x9;      [ 1.5  4.5  7.5 10.5 13.5 16.5 19.5 22.  24.  26.5]که باید اونوقت مفاهیم عمیقی مثل zip ، for و ... رو بهتون یاد میدادم که کلی حفظیجات، خلاقیت و زمان میخواد، درصورتی که با نامپای بیشتر شبیه ریاضی حل کردنه تا برنامه نویسی.نمایش داده ها با matplotlibحالا تا اینجا کار بگذارید فقط نقطه ها رو بهتون نشون بدم، ببینید اگر نقطه گزاری کنید به چه چیز داغونی میرسید، ولی چطوری قراره با پایتون بهتون نمودار بدم؟ با matplotlib، به پروژه تون اضافه می کنید و بهش میگید که عکس میخواید، نحوه دانلود کتابخانه:python -m pip install matplotlib # in windows&#xA;python3 -m pip install matplotlib # in mac os and linuxو حالا صدا زدن pyplot از کتابخانه matplotlib برای کشیدن نمودار (من برای راحتی اسمشو میزارم plt):import matplotlib.pyplot as pltحالا که قبلا volume و ph را تعریف کرده ایم کافی است با plt.plot آنرا نمایش دهیم.plt.plot(volume, pH) و تغییر اسم محور ها با plt.xlabel و plt.ylabel و بعد نمایش با plt.show :import numpy as np&#xA;import matplotlib.pyplot as plt&#xA;&#xA;volume = np.array([0.0,3.0, 6.0, 9.0, 12.0, 15.0, 18.0, 21.0, 23.0, 25.0, 28.0])&#xA;pH = np.array([2.96,3.81, 4.15, 4.38, 4.60, 4.80, 5.02, 5.33, 5.76, 10.32, 11.39])&#xA;&#xA;plt.plot(volume, pH) # نمایش روی نمودار&#xA;&#xA;plt.xlabel(&#34;NaOH&#34;) # اسم محور x ها&#xA;plt.ylabel(&#34;pH&#34;) # تغییر اسم محور y ها&#xA;&#xA;plt.show() # نمایش دادنکه نتیجه اش اینه:نمودار داغون تولیدیمیدونی تا همینجا نمودار خوبی بود ولی دوست داشتم نمودار دقیق تر و نرم تر بود؛ بیشتر شبیه نمودار تیتراسیون واقعی بود تازه کفه ی بین ۱۰ تا ۱۵ خیلی مشخص نیست، نمودار کلا ۱۰ تا نقطه داره و صرفا با خط به هم وصل شده و نیازه که منحنی بین نقاط شبیه سازی بشه، درصورتی که انسان هنر مندی هستید و تصور کردن و رسم کردنتون خیلی خوبه، بسم الله اما من روش های ریاضیاتی و برنامه نویسی رو ترجیح میهدم.قبل رفتن سراغ اینکه نمودار را ریاضیاتی بهتر کنیم و برایش pKa رو هم محاسبه کنیم، بیاید یک راهنمای نمودار را به سادگی صدا زدن plt.legend و بعد با تنظیم کردن صفت رنگ و اندازه قلم و رنگ قلم و نام برای نقاط رسم شده آنرا مفهوم تر کرده، و پشت نمودار را برای زیبایی و خوانایی، با plt.grid شطرنجی کنیم:import numpy as np&#xA;import matplotlib.pyplot as plt&#xA;&#xA;volume = np.array([0.0,3.0, 6.0, 9.0, 12.0, 15.0, 18.0, 21.0, 23.0, 25.0, 28.0])&#xA;pH = np.array([2.96,3.81, 4.15, 4.38, 4.60, 4.80, 5.02, 5.33, 5.76, 10.32, 11.39])&#xA;&#xA;plt.plot(volume, pH, &#34;-o&#34;, color=&#34;blue&#34;, markersize=6, label=&#34;داده های تیتراسیون&#34;)&#xA;&#xA;plt.xlabel(&#34;NaOH&#34;)&#xA;plt.ylabel(&#34;pH&#34;)&#xA;&#xA;plt.grid(True, linestyle=&#34;--&#34;, alpha=0.6) # شطرنجی کردن&#xA;&#xA;plt.legend()&#xA;plt.show()که نتیجه اش اینه:نمودار خوشگل ترمحاسبه تقریبی pKa توسط پایتون قبل منحنی کردن نمودارحالا وقت اون شده که pka رو بدیم پایتون خوشگل حساب کنه، pka طبق تعریف جاییکه اسید ضعیف در برابر تغییرات pH بیشترین مقاومت را نشان می دهد و دقیقا نصف اسید ها یونیزه اند، وقتی که بحث تغییراته کافیه مشتق بگیریم و کمترین مقدار نمودار مشتق میشه همون pka البته تو داده ی ده تایی ما نیاز به اینکار نیست چون با نگاه به جدول، مشخصه که تغییرات در کجا کمترینه ولی برای خفنی کار کدشو میزارم که خود پایتون اتومات pka حساب کنه.خوب کافیه با np.diff مشتق لحظه ای گرفته و به قولی برای هر نقطه شیب رو حساب کنیم. بعد میانگین ها رو حساب کنیم و بعد کمترین شیب رو پیدا کرده و میانگین حجم متناظرش رو هم پیدا کنیم. حالا کافیه با np.interp به صورت خطی بین دو pH میانگین بگیریم. با این کار وسط دو نقطه پیدا شده و همون نقطه pKa تقریبی ما خواهد بود. همین برای کار دانشگاه کافیه اما اگر می خواستیم دقیق تر باشه باید از توابع درونیابی دقیق تر و نه خطی استفاده میکردیم.import numpy as np&#xA;import matplotlib.pyplot as plt&#xA;&#xA;volume = np.array([0.0,3.0, 6.0, 9.0, 12.0, 15.0, 18.0, 21.0, 23.0, 25.0, 28.0])&#xA;pH = np.array([2.96,3.81, 4.15, 4.38, 4.60, 4.80, 5.02, 5.33, 5.76, 10.32, 11.39])&#xA;&#xA;plt.plot(volume, pH, &#34;-o&#34;, color=&#34;blue&#34;, markersize=6, label=&#34;داده های تیتراسیون&#34;)&#xA;plt.xlabel(&#34;NaOH&#34;)&#xA;plt.ylabel(&#34;pH&#34;)&#xA;&#xA;# محل محاسبه&#xA;dpH_dV = np.diff(pH) / np.diff(volume)&#xA;v_mid = (volume[:-1] + volume[1:]) / 2&#xA;minimum_slope_index = np.argmin(dpH_dV)&#xA;v_buffer_center = v_mid[minimum_slope_index]&#xA;pKa_direct = np.interp(v_buffer_center, volume, pH)&#xA;&#xA;# رسم خطوط عمودی و افقی برای مشخص کردن نقطه&#xA;plt.axhline(y=pKa_direct, color=&#34;red&#34;, linestyle=&#34;:&#34;, alpha=0.7)&#xA;plt.axvline(x=v_buffer_center, color=&#34;red&#34;, linestyle=&#34;:&#34;, alpha=0.7)&#xA;&#xA;# رسم نقطه pKa&#xA;plt.plot(v_buffer_center,pKa_direct,&#34;o&#34;,color=&#34;red&#34;, label=f&#34;pKa ≈ {pKa_direct:.2}&#34;)&#xA;&#xA;&#xA;plt.grid(True, linestyle=&#34;--&#34;, alpha=0.6)&#xA;plt.legend()&#xA;plt.show()  که اینم عکسش:نموداری که در آن pKa نشان داده شدهتوابع درونیابی دقیق برای رسم منحنیحالا باید از یک کتابخونه دیگه استفاده کنیم تا بین هر دو نقطه از نمودارمون یک نقطه جدید حدس بزنیم که اصطلاحا بهش میگن interpolation یا نقطه گذاری بین دو نقطه یا همان درونیابی. باید scipy رو برای همین موضوع بگیریم همونطور که از اسمشم معلومه یعنی پایتون علمی، scientific python = scipy خوب تو این پایتون علمی یه تابعی داری که براتون میاد و بین دو نقطه با توابع مختلف نقاط بیشتری بگذارید تا از ۱۰ تا نقطه بدردنخور به یک نمودار نرم و خفن برسید.اول scipy رو نصب میکنیم:python -m pip install scipy  # for windows&#xA;python3 -m pip install scipy # for macos and linuxحالا کافیه با scipy بیایم و interpolate اش کنیم، برای اینکار چندین تابع ریاضیاتی مختلف هست، درون یابی خطی فرض می کنه بین دو نقطه یک خط مستقیم هست که قیافه اش با نمودار کنونی فرقی نمی کنه، درون یابی دیگر cubic هست یا مکعبی یعنی فرض میکنه نقاط ما بخش از یک تابع درجه ۳ هست و با این حساب بین هر دو نقطه منحنی رسم میکنه که کافی از کلاس CubicSpline استفاده کنیم:import numpy as np&#xA;import matplotlib.pyplot as plt&#xA;from scipy.interpolate import CubicSpline&#xA;&#xA;volume = np.array([0.0,3.0, 6.0, 9.0, 12.0, 15.0, 18.0, 21.0, 23.0, 25.0, 28.0])&#xA;pH = np.array([2.96,3.81, 4.15, 4.38, 4.60, 4.80, 5.02, 5.33, 5.76, 10.32, 11.39])&#xA;&#xA;plt.plot(volume, pH, &#34;o&#34;, color=&#34;orange&#34;, markersize=6, label=&#34;داده های تیتراسیون&#34;)&#xA;plt.xlabel(&#34;NaOH&#34;)&#xA;plt.ylabel(&#34;pH&#34;)&#xA;&#xA;&#xA;cs = CubicSpline(volume,pH)&#xA;x_fine = np.linspace(volume.min(), volume.max(),200)&#xA;y_fine = cs(x_fine)&#xA;&#xA;plt.plot(x_fine, y_fine, color=&#34;blue&#34;, markersize=6, label=&#34;نمودار جدید&#34;)&#xA;&#xA;&#xA;dpH_dV = np.diff(pH) / np.diff(volume)&#xA;v_mid = (volume[:-1] + volume[1:]) / 2&#xA;minimum_slope_index = np.argmin(dpH_dV)&#xA;v_buffer_center = v_mid[minimum_slope_index]&#xA;pKa_direct = np.interp(v_buffer_center, volume, pH)&#xA;&#xA;plt.axhline(y=pKa_direct, color=&#34;red&#34;, linestyle=&#34;:&#34;, alpha=0.7)&#xA;plt.axvline(x=v_buffer_center, color=&#34;red&#34;, linestyle=&#34;:&#34;, alpha=0.7)&#xA;&#xA;plt.plot(v_buffer_center,pKa_direct,&#34;o&#34;,color=&#34;red&#34;, label=f&#34;pKa ≈ {pKa_direct:.2}&#34;)&#xA;&#xA;&#xA;plt.grid(True, linestyle=&#34;--&#34;, alpha=0.6)&#xA;plt.legend()&#xA;plt.show()خوب حالا توانستیم با شبیه سازی درجه ۳ مدل سازی کنیم اما داغون تر شد:نمودار داغون تر شدهعلتش ام اینه که نمودار ما کاملا درجه سه نیست و مثلا در آخرش یه منحنی عجیب و غیر علمی داریم چون با کم شدن شیب در انتها تنها یک درجه سه با شیب منفی توجیه پذیره و منحنی اینطوری و گوشه دار میشه، حالا یک درونیابی دیگه هست که کارش بهتره و شکل داده رو عوض نمی کنه به اسم PchipInterpolator ، این درونیابی هم مثل درونیابی مکعبی یک درونیابی درجه سوم را انجام میدهد اما با این تفاوت که با تکنیک پیچیده تر به نام درونیابی تکهای چندجملهای هرمیتی مکعبی  یا PCHIP: Piecewise Cubic Hermite Interpolating Polynomial درونیابی می کند که باعث میشود شکل داده عوض نشده، یک نواختی آن حفظ شده و دچار نوسانات اضافی نشود. در واقع برای استفاده از آن باید بدانید که به جای اینکه این درونیاب تابع باشد، در واقع مثل CubicSpline نوعی کلاس است. ما باید اول از این کلاس شیء ایجاد کنیم و من اسم شیء درونیاب را  pchip می گذارم. دو تا آرایه محورها (ph , volume) را گرفته و یک شی نقطهگذار یا pchip را به ما دهد، نکته این است که pchip یک شیء قابل فراخوانی است؛ یعنی در آن متدی به نام __call__ تعریف کرده اند که باعث میشود بتوان مستقیم خود شیء را مثل تابع صدا زد، کافی است نقاط x جدید را  (مثلا اگر قبلا volume ها ۱۰ تا عدد بودن حالا ۱۰۰ تا عدد میدهیم) از درون pchip رد میکنیم و خروجی تابع pH هایی است که با درونیابی دقیق پیدا شده اند و نموداری دقیق و بسیار نرم بدست میاید. اینم کدش:import numpy as np&#xA;import matplotlib.pyplot as plt&#xA;from scipy.interpolate import PchipInterpolator&#xA;&#xA;volume = np.array([0.0,3.0, 6.0, 9.0, 12.0, 15.0, 18.0, 21.0, 23.0, 25.0, 28.0])&#xA;pH = np.array([2.96,3.81, 4.15, 4.38, 4.60, 4.80, 5.02, 5.33, 5.76, 10.32, 11.39])&#xA;&#xA;plt.plot(volume, pH, &#34;o&#34;, color=&#34;orange&#34;, markersize=6, label=&#34;داده های تیتراسیون&#34;)&#xA;plt.xlabel(&#34;NaOH&#34;)&#xA;plt.ylabel(&#34;pH&#34;)&#xA;&#xA;&#xA;pchip = PchipInterpolator(volume,pH)&#xA;x_fine = np.linspace(volume.min(),volume.max(),200)&#xA;y_fine = pchip(x_fine)&#xA;&#xA;plt.plot(x_fine, y_fine, color=&#34;blue&#34;, markersize=6, label=&#34;نمودار اصلاح شده با PCHIP&#34;)&#xA;&#xA;&#xA;dpH_dV = np.diff(pH) / np.diff(volume)&#xA;v_mid = (volume[:-1] + volume[1:]) / 2&#xA;minimum_slope_index = np.argmin(dpH_dV)&#xA;v_buffer_center = v_mid[minimum_slope_index]&#xA;pKa_direct = np.interp(v_buffer_center, volume, pH)&#xA;&#xA;plt.axhline(y=pKa_direct, color=&#34;red&#34;, linestyle=&#34;:&#34;, alpha=0.7)&#xA;plt.axvline(x=v_buffer_center, color=&#34;red&#34;, linestyle=&#34;:&#34;, alpha=0.7)&#xA;&#xA;plt.plot(v_buffer_center,pKa_direct,&#34;o&#34;,color=&#34;red&#34;, label=f&#34;pKa ≈ {pKa_direct:.2}&#34;)&#xA;&#xA;&#xA;plt.grid(True, linestyle=&#34;--&#34;, alpha=0.6)&#xA;plt.legend()&#xA;plt.show()اینم عکسش:نمودار جدید با تکنیک PCHIPو حالا یک نمودار تمیز داشتم،چاپ کردم و عکسشو در گزارشکار گذاشتیم، استاد نسخه چاپی رو قبول داشت و کمی هم حال کرد، شرط میبندم بیشتر از ظاهرش حال کرد و ترم رو کلی بهم ارفاق کرد!نتیجه گیریامروزه که تکنولوژی پیشرفت کرده و به خصوص با رشد هوش مصنوعی، ای کاش همه افراد باسواد جامعه، برنامه نویسی را نه به عنوان یک کار جانبی بلکه به عنوان یک سواد در همان ابتدایی یاد بگیرند تا بتوانند در هر تحقیق و مرحله ای از آن استفاده کنند. امروزه کد نویسی با هوش مصنوعی حتی راحت تر از آن زمانی است که من این کد ها را مینوشتم، کافی است به هوش مصنوعی بگویید به شما کد نویسی یاد دهد یا حتی بهتر، کد بزند و شما فقط داده های استادتان را بدهید و بگویید یک کد پایتون با PchipInterpolator به من تحویل بده و دیگر نیاز نیست این همه پیچیدگی را بلد باشید. البته درک سطحی از پایتون لازم است تا بتوانید ایرادات هوش مصنوعی را فهمیده و موثر تر کد بزنید. این همان ماشین حسابی است که نمیگذاشتند سر کلاس ببریم!!!ممنون که تا اینجا همراهمون بودید، امیدوارم مطلب مفیدی بوده باشه.</description><category>medProgAyat</category><author>medProgAyat</author><pubDate>Fri, 28 Aug 2026 15:33:36 +0330</pubDate></item></channel></rss>