View Full Version : چگونه می توان از یک تابع حد گرفت؟
Arman_1367
پنج شنبه 10 خرداد 1386, 22:39 عصر
با سلام.
می خواستم ببینم کسی می دونه چطوری می شه از یه تابع با دلفی حد گرفت؟:متفکر:
فقط تو رو به خدا یه اسم نگید بعد برید توضیح بدهید چگونه باید این کار را انجام داد.
با تشکر...:تشویق:
اَرژنگ
پنج شنبه 10 خرداد 1386, 22:43 عصر
با سلام.
می خواستم ببینم کسی می دونه چطوری می شه از یه تابع با دلفی حد گرفت؟:متفکر:
فقط تو رو به خدا یه اسم نگید بعد برید توضیح بدهید چگونه باید این کار را انجام داد.
با تشکر...:تشویق:
تو رو به خدا یکمی بیشتر توضیحبدید، یک مثال بزنیدکه واضحتر باشه.
Arman_1367
پنج شنبه 10 خرداد 1386, 22:47 عصر
منظورم اینه که مثلاً کاربر تابعی را به شما می دهد به صورت String بعد عددی به شما می دهد بعد برنامه شما برای آن تابع در نقطه مورد نظر حد گرفته حاصل را به دست آورد.
Arman_1367
پنج شنبه 10 خرداد 1386, 22:55 عصر
مثلاً کاربر عبارت Y=Sinx/x را وارد کرده و عدد 0 را نیز به برنامه می دهد حال برنامه باید حاصل حد را به ما نشان بدهد البته بدون استفاده از قضایای ریاضی.
azmoodeh
پنج شنبه 10 خرداد 1386, 23:02 عصر
سلام
روی هر نقطه ای که می خواهید حد بگیرید (مثلا x=11) یک دلتا x ایجاد کنید . مثلا دو مقدار داشته باشید x1=11,x2=11.005 که این .005 رو هم می تونید به عنوان متغیر داشته باشید که بتونید راحت تغییرش بدید تا به مقدار دلخواهتون برسید
حالا مقادیر y2=f(x2), y1=f(x1) را هم حساب کنید . حد تقریبی از فرمول
(y2-y1)/(x2-x1) به دست میاد . حالا توی برنامه مدام متغیری که گفتم برای 0.005 در نظر بگیرید به صفر نزدیک کنید تا جایی که Error رخ نمی ده . با این کار مقدار حد واقعی تر میشه .
موفق باشید
Arman_1367
پنج شنبه 10 خرداد 1386, 23:04 عصر
بله حرف شما درسته این تعریف ریاضی هست اما مشکل من اینه که نمی تونم مقدار تابعی که از قبل معلوم نیست را به دست بیاورم.چگونه باید مقدار تابع را مشخص کرد.
اَرژنگ
پنج شنبه 10 خرداد 1386, 23:14 عصر
اگر کاربر عبارت y=1/x وارد کرده و عدد ۰ را نیز به برنامه دهد ، برنامه حاصل حد را باید چی نمایش بده؟
اَرژنگ
پنج شنبه 10 خرداد 1386, 23:18 عصر
سلام
روی هر نقطه ای که می خواهید حد بگیرید (مثلا x=11) یک دلتا x ایجاد کنید . مثلا دو مقدار داشته باشید x1=11,x2=11.005 که این .005 رو هم می تونید به عنوان متغیر داشته باشید که بتونید راحت تغییرش بدید تا به مقدار دلخواهتون برسید
حالا مقادیر y2=f(x2), y1=f(x1) را هم حساب کنید . حد تقریبی از فرمول
(y2-y1)/(x2-x1) به دست میاد . حالا توی برنامه مدام متغیری که گفتم برای 0.005 در نظر بگیرید به صفر نزدیک کنید تا جایی که Error رخ نمی ده . با این کار مقدار حد واقعی تر میشه .
موفق باشید
اینکه حد را نمیده، این روش ، روش بدست آوردن دیفرانسیل در یک نقطه است.
Arman_1367
پنج شنبه 10 خرداد 1386, 23:20 عصر
حد در واقع به این مفهوم است که شما در صورتی که تابعی داشته باشید که شما از سمت چپ و راست هرکدام روی تابع نشته و به سمت نقطه حرکت کنید در این حالت شما به عددی نزدیک می شوید که آن عدد حد تابع است مثلا مقدار حد برای تابع Y=Sinx/xبرابر 1 می شود چون X و Sinx به هم نزدیک می شوند تقریباً برابرند. اما درباره Y=1/x حد برابر بینهایت می شود.
Arman_1367
پنج شنبه 10 خرداد 1386, 23:31 عصر
فکر کنم مشکل اصلی هنوز هم به دست آوردن مقدار تابع باشه
چون باید دنباله ای از اعداد حاصل از تابع را در نزدیکی نقطه به دست بیاوریم
Arman_1367
پنج شنبه 10 خرداد 1386, 23:40 عصر
دوستان کسی راهی به نظرش نمی رسه یه چیزی بگید خوب
azmoodeh
پنج شنبه 10 خرداد 1386, 23:45 عصر
سلام
ظاهرا مشکل شما چندان مربوط به ریاضی نیست . شما می خواهید که برنامه یک تابع را به صورت پویا دریافت کنه و مقدار آن را به ازای عددی معلوم محاسبه کنه.
بهترین روشی که تا الان برای اینکار ارایه شده و نرم افزارهایی مثل Matlab , MAPLEهم از این روش استفاده می کنند تابع شما یا ساده است یا مرکب . یعنی توابع ساده توابعی مثل چند جمله ای یا توابع مثلثاتی یا توابع نمایی و ... که روش محاسبه خاص خودشون رو دارند یا اینکه ترکیبی از این توابع ساده هستند.
حالا کاری که شما باید انجام بدید اینه که رشته تعریف تابع رو بگیرید و با استفاده از الگوریتم Postfix اون رو به عوامل ساده و ابتدایی تجزیه کنید و حالا شروع به محاسبه کنید .
اگر قرار باشه یه برنامه کامل بشه کار ساده ای نیست
مثلا توابع رو به این صورت تبدیل می کنه
f(x)=(sin(x)/x)---->SIN,X,/
یا
f(x)=(sin(x)/x)*tan(x)---->SIN,X,/,TAN ,*
که حالا شما باید رشته رو از سمت چپ بخونید و محاسبه کنید (مدل لهستانی معروف )
موفق باشید
اَرژنگ
پنج شنبه 10 خرداد 1386, 23:46 عصر
حد در واقع به این مفهوم است که شما در صورتی که تابعی داشته باشید که شما از سمت چپ و راست هرکدام روی تابع نشته و به سمت نقطه حرکت کنید در این حالت شما به عددی نزدیک می شوید که آن عدد حد تابع است مثلا مقدار حد برای تابع Y=Sinx/xبرابر 1 می شود چون X و Sinx به هم نزدیک می شوند تقریباً برابرند. اما درباره Y=1/x حد برابر بینهایت می شود.
پس برنامه باید برایه این حالت چه جوابی بده؟
بدون استفاده از ریاضی فقطمیتونید حد را بصورت تقریبی بدست بیاریداگر مقدار تابع برایه.
(x+d) و (x-d) از یک مقداری که تعیین شده بهم نزدیک باشند ، حد را تقریباً بدست میده.
در ضمن Y=1/x حد برابر بینهایت نمی شود، حد از چپ و راست یکی نیستند و حدی وجو د ندارد.
Arman_1367
پنج شنبه 10 خرداد 1386, 23:54 عصر
خب حالا شما می توانید الگوریتم با سورس کد یا هر چیزی که بتونه کمک کنه معرفی کنید
azmoodeh
جمعه 11 خرداد 1386, 00:02 صبح
دوست عزیز
من یک بار سال اول دانشگاه این برنامه رو نوشتم که با زبان پایتون بود و الان هم سورسش رو ندارم.
برای الگوریتم تبدیل هم می تونید دنبال Postfix به Infix بگردید و به دلفی تبدیل کنید و برای ادامه کار هم خلاقیت شما خیلی مهمه.
ضمن اینکه احساس می کنم راهنماییها به اندازه ای بوده که بتونه به شما برای نوشتن ( یا حتی دونستن اینکه باید دنبال چه چیزی بگردید ) کمک کنه :چشمک:
موفق باشید
اَرژنگ
جمعه 11 خرداد 1386, 00:07 صبح
فکر کنم مشکل اصلی هنوز هم به دست آوردن مقدار تابع باشه
چون باید دنباله ای از اعداد حاصل از تابع را در نزدیکی نقطه به دست بیاوریم
expression parser و یا evaluator را جستجو کنید.
http://www.google.com/search?q=Delphi+EXpression+evaluator&rls=com.microsoft:en-au&ie=UTF-8&oe=UTF-8&startIndex=&startPage=1
Arman_1367
جمعه 11 خرداد 1386, 00:12 صبح
از همه متشکرم
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.