جذر گرفتن اعداد در mmb

ubuntu

Member
راستش شايد سوالم خنده‌دار باشه! ولي هر کاري کردم جوابي براش پيدا نکردم. چجوري مي‌شه از يه عدد تو mmb جذر گرفت؟ توان داره ولي جذر رو پيدا نکردم. خواستم از روش رسوندن به توان 0.5 استفاده کنم که mmb فقط عدد اول يعني 0 رو در نضر مي‌گيره و 1 تحويل مي‌ده.
 

splinter cell

Well-Known Member
منم یکی دو سال پیش دقیقاً همین مشکل رو پیدا کردم و همون راههایی که گفتین رو هم آزمایش کردم ولی نشد.آخر سر مجبور شدم از پلاگین MathEx استفاده کنم.
 
سلام
یه راه خیلی دور از ذهن که البته می تونه ایده خوبی باشه !
اول عدد مورد نظر رو توی یه فایلی بنویسی . بعد از این فایل به عنوان ورودی در یک زبان برنامه نویسی مثل ++C استفاده کرده و جذر عدد را در همان فایل ذخیره کنی . بعد دوباره از این فایل به عنوان ورودی در ام ام بی استفاده کنی . فایل اجرایی رو هم که خیلی کم حجمه پیوست برنامت کنی . البته می تونی چیزای دیگه هم اضافه کنی :
چی ؟ مثلا برا خودت قانون درست کنی که اگه فلان کاراکتر رو با یه عدد ذخیره کردم " آ های برنامه ی نوشته شده با سی (مثلا) فلان کار رو بکن "
مثلا تو فایلت می نویسی

sqrt 16

و بعد به سی دستور می دی هرگاه عبارت sqrt رو دیدی جذر عدد بعدیش رو حساب کن و توی یه فایل به من تحویل بده.
 

the_king

مدیرکل انجمن
کار ساده رو پیچیده نکنید، نیازی به پلاگین نیست :
برای محاسبه جذر متغیر x (مثلا عدد 46) :

کد:
x=46
r=1.0
For i=1 To 100
    r=(r+x/r)/2.0
Next i

عدد r جذر تقریبی x خواهد بود (6.7823299) که اگر به توان 2 برسد برابر است با 45.99999887243401
هر چه حلقه for طولانی تر باشه (مقدار 100 بیشتر بشه) دقت در محاسبه اعشاری بالاتر میره
ولی چون دقت محاسبه اعشاری MMB چندان تعریفی نداره همین مقدار 100 عدد کاملا مناسبی است و نیازی به تغییر آن
ندارید.

برای نوشتن این کد ساده که الگوریتمش رو از حفظ بودم، نیم ساعت با راهنمای MMB کشتی گرفتم.
 

ubuntu

Member
سلام
یه راه خیلی دور از ذهن که البته می تونه ایده خوبی باشه !
اول عدد مورد نظر رو توی یه فایلی بنویسی . بعد از این فایل به عنوان ورودی در یک زبان برنامه نویسی مثل ++c استفاده کرده و جذر عدد را در همان فایل ذخیره کنی . بعد دوباره از این فایل به عنوان ورودی در ام ام بی استفاده کنی . فایل اجرایی رو هم که خیلی کم حجمه پیوست برنامت کنی . البته می تونی چیزای دیگه هم اضافه کنی :
چی ؟ مثلا برا خودت قانون درست کنی که اگه فلان کاراکتر رو با یه عدد ذخیره کردم " آ های برنامه ی نوشته شده با سی (مثلا) فلان کار رو بکن "
مثلا تو فایلت می نویسی

sqrt 16

و بعد به سی دستور می دی هرگاه عبارت sqrt رو دیدی جذر عدد بعدیش رو حساب کن و توی یه فایل به من تحویل بده.
ممنون که جواب دادي، ولي کي مي‌ره اين همه راهو!!!
منم یکی دو سال پیش دقیقاً همین مشکل رو پیدا کردم و همون راههایی که گفتین رو هم آزمایش کردم ولی نشد.آخر سر مجبور شدم از پلاگین mathex استفاده کنم.
من تو اين پلاگ اين گشتم ولي چيزي پيدا نکردم. مي‌شه بگين چه راهي رو بايد برم؟؟؟
کار ساده رو پیچیده نکنید، نیازی به پلاگین نیست :
برای محاسبه جذر متغیر x (مثلا عدد 46) :

کد:
X=46
r=1.0
for i=1 to 100
r=(r+x/r)/2.0
next i
عدد r جذر تقریبی x خواهد بود (6.7823299) که اگر به توان 2 برسد برابر است با 45.99999887243401
هر چه حلقه for طولانی تر باشه (مقدار 100 بیشتر بشه) دقت در محاسبه اعشاری بالاتر میره
ولی چون دقت محاسبه اعشاری mmb چندان تعریفی نداره همین مقدار 100 عدد کاملا مناسبی است و نیازی به تغییر آن
ندارید.

برای نوشتن این کد ساده که الگوریتمش رو از حفظ بودم، نیم ساعت با راهنمای mmb کشتی گرفتم.
ايوول! درست کار کرد. ممنون. گرچه براي گرفتن جذر يه کم عجيب به نظر مي‌رسه ولي باز خوب کار مي‌کنه! تازه براي من 2 رقم اعشار هم بسه!
 

splinter cell

Well-Known Member
King عزیز توی این الگوریتمی که نوشتین عدد آر چیه؟ چون با تغییر اون جواب جذر فرق نمیکنه! فقط نباید صفر باشه.
اینو از این جهت میپرسم که میخوام به چند نفر از اساتید نشونش بدم تا صحت کارش رو بررسی کنند و باید بدونم که این r چیه؟ چون اگر ثابت باشه که با تغییرش باید جذر خراب بشه در حالیکه تغییری نمیکنه.ممنون میشم اگر جواب دقیقش رو برامون گیر بیارید یا اسم الگوریتمش رو.
من تو اين پلاگ اين گشتم ولي چيزي پيدا نکردم. مي‌شه بگين چه راهي رو بايد برم؟؟؟

در مورد پلاگین من برای محاسبه دلتا در ریشه یک معادله درجه دو از این کد استفاده کردم

کد:
set$=CHAR(delta)
PluginSet("MathEx++","set$")
PluginRun("MathEx++","Get_Sqrt")
PluginGet("MathEx++","get1$")
DisplayValue("delta","get1$")
 

the_king

مدیرکل انجمن
King عزیز توی این الگوریتمی که نوشتین عدد آر چیه؟ چون با تغییر اون جواب جذر فرق نمیکنه! فقط نباید صفر باشه.
اینو از این جهت میپرسم که میخوام به چند نفر از اساتید نشونش بدم تا صحت کارش رو بررسی کنند و باید بدونم که این r چیه؟ چون اگر ثابت باشه که با تغییرش باید جذر خراب بشه در حالیکه تغییری نمیکنه.ممنون میشم اگر جواب دقیقش رو برامون گیر بیارید یا اسم الگوریتمش رو.
r همون عددی است که قراره مرحله به مرحله به جذر x نزدیک بشه تا در انتها به خود جذر x برسه.
مثل حدس زدن جذر عمل می کنه، یک عدد رو برای جذر x فرض می کنه، اگر از جذر x بزرگتر باشه، در مرحله بعدی
کوچکتر میشه و اگر از جذر x کوچکتر باشه، در مرحله بعدی بزرگتر میشه، هر چه که به جذر x نزدیکتر میشه، مقدار تغییرات
هم کمتر میشه.

اینکه مقدار اولیه r چقدر باشد اهمیت چندانی ندارد، فرضا اگر ما بخواهیم جذر عدد 10000 را حساب کنیم و مقدار اولیه r
را 1 بگیریم، در همان مرحله اول r از 1 به مقدار 5000 صعود می کند و در مرحله 10 ام به مقدار 100 می رسیم.

در مورد صحت اش که مطمئن باشید. روش کار ساده است، فرض کنیم x یک عدد مثبت و m جذر x باشه، پس x/m بایستی
برابر m باشه. x/m و m دو مقداری هستند که بایستی با هم برابر باشند تا مقدار دقیق جذر x بدست آید.
در مورد متغیر r ما یک مقدار اولیه لازم داریم (هر مقدار اولیه مثبتی) و فرض می کنیم که این عدد به جذر x
نزدیک است. به هر حال یا از جذر x بزرگتر است و یا کوچکتر. اگر r از جذر x بزرگتر باشد، x/r از جذر x کوچکتر می شود و
برعکس اگر r از جذر x کوچکتر باشد، x/r از جذر x بزرگتر می شود.

در هر مرحله ما از جمع این دو مقدار r و x/r میانگین می گیریم، (یکی از ایندو از جذر x بزرگتر و یکی از جذر x کوچکتر است)
در نتیجه در هر مرحله ما به جذر x نزدیکتر می شویم. هر چه فاصله r از جذر x کمتر می شود، دقت اعشاری نیز بالاتر می رود.
اینکار اصولا بایستی آنقدر ادامه پیدا کند که دقت اعشاری به حد مطلوب برسد.

الگوریتمی که نوشتم یکی از چندین فرمول ریاضی برای محاسبه جذر است، در منابعی مانند ویکیپدیا هم به این فرمول
اشاره شده :

کد:
1) Start with an arbitrary positive start value r 
   (the closer to the square root of x, the better).
2) Replace r by the average between r and x/r, that is:
   (It is sufficient to take an approximate value of 
   the average in order to ensure convergence.)
3) Repeat step 2 until r and x/r are as close as desired.

Square root - Wikipedia, the free encyclopedia
 

sadeghza

Member
x=46r=1.0For i=1 To 100 r=(r+x/r)/2.0Next iبسیار عالیه و فن خوبی هس فک نمی کردم اصن بهش خیلی خوشم اومد مثل ذهن ادم حدس میزنه و جلو میره
 

Oghianus

Member
اینم بهترین راه حل برای جذر گرفتن




[PHPS]
num=256

res=div=num

If (num>0) Then

For i=1 To Infinity

div=(num/div+div)/2

If (res>div) Then

res=div

Else

Break()

End

Next i

End

Message(“Answer”,”res”)
[/PHPS]
 

جدیدترین ارسال ها

بالا