PDA

View Full Version : دانلود سورس**محاسبه جذر اعداد از پايه + نسبت هاي مثلثاتي



barnamenevisjavan
پنج شنبه 17 فروردین 1391, 11:19 صبح
سلام من الان پيش دانشگاهي رشته رياضي هستم امروز درس ديفرانسيل داشتيم و به يه مبحث خيلي جالب رسيديم كه برام خيلي جالب بود تا اين كه تصميم گرفتم برنامه شو بنويسم امروز روشي رو ياد گرفتيم كه مبناي حل جذر اعداد يا همون راديكال هست مثلا تا حالا فكر كردين كه ماشين حساب چطوري راديكال عدد 37 رو حساب ميكنه؟يا وقتي شما توي دات نت مينويسي Sqrt(37) چطوري اين عدد 37 محاسبه ميشه؟ جوابش خيلي اسونه اين كار توسط ديفرانسيل انجام ميشه يعني يه سري قواعد كه با ضرب و تقسيم بهش ميرسيم كه علاوه بر حل جذر تمامي اعداد اعم از اعشاري و و گنگ و...ميتونه نسبت هاي مثلثاتي رو هم حل بكنه فرمولش رو من اينجا هم بيان ميكنم توي سورس برنامه هم توضيح دادم لطفا ببينيد و نظر بديد تنها مشكلي كه من داشتم اين بود كه نتونستم يه قاعده كلي تعريف كنم تا هر عددي كه خواستيم به اين روش محاسبه بشه من فقط تونستم عدد 37 رو توي اعداد و عدد 29 رو توي مثلثات محاسبه كنم هركس ميتونه يه قاعده كلي براش بنويسه اينم توضيح كد:

Public Function Sqr37()
Dim sqrtxt As Double
TextBox1.Text = sqrtxt
'√x+∆x=1/2*√x*∆x+√x راديكال(ايكس + دلتا ايكس)برابر است با 1 تقسيم بر 2راديكال ايكس در دلتا ايكس +راديكال ايكس
sqrtxt = (1 / (2 * Sqrt(36))) * 1 + Sqrt(36)
Label1.Text = sqrtxt
End Function
خوب بالا يه متغير اعشاري تعريف كردم و ريختم توي تكست باكس
بعد اومدم يه دستور ضرب و جمع و تقسيم بهش معرفي كردم كه با عدد دريافتي اين كارو بكنه و در اخر ريختم توي ليبل تا نشون بده
----------------------------
براي محاسبه به اين روش بايد ما عبارت كلي رو مثلا همين 37 رو به شكلي در بياريم كه جذرش قابل محاسبه باشه مثلا عدد 37 رو من بايد بصورت 36+1 بنويسم چون به اين طريغ جذر 36 قابل محاسبه هست كه همون 6 ميشه و ميمونه يه 1
√x+∆x --->منظور همون 36+1 هست كه 36 برابر ايكس و 1 برابر دلتا ايكس هست
1/2*√x*∆x+√x ---->اينجا هم عملياتي روي ايكس و دلتا ايكس انجام ميشه تا عدد 37 محاسبه بشه
----------------------------
مثلا براي محاسبه راديكال 81.6 ما بايد 81.6 رو بصورت راديكال 81 + 0.6 بنويسيم و با اعمال اعمال جبري محاسبه بشه
----------------------------
من نتونستم توي برنامه همچين قابليتي قرار بدم كه خودش بتونه بصورت اتومات مثلا عدد 81.6 رو عدد 81+0.6 قراربده و اعمال جبري رو انجام بده
عينا همين روش نسبت هاي مثلثاتي هم حل ميشه كه نمونش رو قرار دادم اگر ميشه در اين باره يكم بحث كنيد تا به يه جايي برسيم
----------------------------
فرمول كلي محاسبه جذر اعداد=√x+∆x=1/2*√x*∆x+√x

barnamenevisjavan
پنج شنبه 17 فروردین 1391, 11:21 صبح
معادله توي اديتور درست نشون نميده ولي توي سورس نوشتم

hakim22
پنج شنبه 17 فروردین 1391, 11:39 صبح
دوست عزیز این روشها مربوط به محاسبات عددی میشود که کتابهای و سورسهای زیادی دارند و میتوانید خیلی از آنها را استفاده کنید
در اینجا هم شما باید از یک حلقه متغیر استفاده کیند .

barnamenevisjavan
پنج شنبه 17 فروردین 1391, 11:44 صبح
منم ميدونم مربوط به محاسبات عددي هست.
ميشه شما برنامه رو تعميم بديد؟

tstsst
پنج شنبه 17 فروردین 1391, 12:22 عصر
سلام

خیلی ساده می تونی عدد رو به توان 1/2 یا 0.5 برسونی یا این که از فرمول زیر که به صورت تقریب بدست بیاری : (خیلی نزدیک)

√(x) = e ^ (1/2 * ln(x))
که برابر :
e ^ (1/2 * log(x))

که e یک عدد ثابته (یا عدد اويلر) که تا حالا اینو بدست آوردن :

2.7182818284590452353602874713527

یا اگه برای جذر های تودرتوی بیکران می خوایی استفاده کنی به صورت زیر :


اگر به شکل زیر باشد :
x = √(x + √(x + √(x + √(x + ...))))
x = (1 + √1 + 4n) / 2

و اگر به شکل زیر باشد :
x = √(x - √(x - √(x - √(x - ...))))
x = (-1 + √1 + 4n) / 2


و کلی فرمول طولانی و سخت که این جا جاش نیست ...
موفق باشید

(راستی من هم پیش ریاضییم :لبخند:)

tstsst
پنج شنبه 17 فروردین 1391, 13:21 عصر
سلام..

و برای محاسبه sin,cos,tan(tg)) می تونی از بسط تیلور استفاده کنی ..
تمام x ها بر حسب رادیان یعنی

= x * pi / 180
p = 3.1415926535897932384626433832795

که برای سینوس:

sin x = x - x3/3! + x5/5! - x7/7! + ...
یا به طور کلی :
سیگما x=0 تا بینهایت (((-1)^n) / (2n+1)!) * x ^ 2n+1
sigma n=0 to infinity ((-1^n) / (2n + 1)!) * x^2n+1
که در بینهایت به عدد مورد نظر می رسیم


برای مثال :


sin 90 = 1
x = (90 * pi) / 180
x = 1.5707963267948966192313216916398
x - x3/3! + x5/5! - x7/7! =
0.99984310139949872259538521329828
که می بینی چقدر به 1 نزدیکه !!


برای کسینوس :


1 - (x^2)/2! + (x^4)/4! - ...
sigma n=0 to infinity ((-1^n) / (2n)!) * x^2n


برای تانژانت :


x + (x^3)/3 + (2x^5)/15 + ...
sigma n=1 to infinity (B(2n) * (-4)^n * (1-4^n) / (2n)!)*X^(2n-1)

tstsst
پنج شنبه 17 فروردین 1391, 18:02 عصر
و خود برنامه :
جذر محاسبه شده : 9.81988000945021
جذر با sqrt خود ویژوال استودیو : 9.81988000945022

سینوس محاسبه شده : 0.765622279086554
سینوس با sin خود ویژوال استودیو : 0.70710678118

85277
جذر دقیقه ولی سینوس زیاد دقیق نیست! :لبخند:

barnamenevisjavan
پنج شنبه 17 فروردین 1391, 20:22 عصر
دمت گرم بابا........

kiarashk
پنج شنبه 17 فروردین 1391, 21:55 عصر
و خود برنامه :
جذر محاسبه شده : 9.81988000945021
جذر با sqrt خود ویژوال استودیو : 9.81988000945022

سینوس محاسبه شده : 0.765622279086554
سینوس با sin خود ویژوال استودیو : 0.70710678118

85277
جذر دقیقه ولی سینوس زیاد دقیق نیست! :لبخند:

اگه دقيق نيست پس خود كامپيوتر از چه روشي استفاده مي كنه ؟؟
اخه اون موقع كه به ما درس دادن گفتن ماشين حساب ها هم از همين روش استفاده مي كنن!؟

tstsst
پنج شنبه 17 فروردین 1391, 22:05 عصر
اگه دقيق نيست پس خود كامپيوتر از چه روشي استفاده مي كنه ؟؟
اخه اون موقع كه به ما درس دادن گفتن ماشين حساب ها هم از همين روش استفاده مي كنن!؟
نمی دونم من دو با از بسط تیلور استفاده کردم یک با که نتیجه اش افتزاح شد به این صورت که بسط رو تا مقدار عدد پیش بردم (برای مثال تا 45 یعنی sigma n=0 to 45) که عدد خیلی متفاوت با عدد اصلی شد (sin90 رو 0 نشون می داد) و بار دوم تا 4 رقم پیش رفتم برای اعداد کوچک بهتر از قبلی جواب می داد (نزدیکتر به واقعیت) شایید هم من اشتباه کردم متشکر می شم سورس رو ببینید و اصلاح کنید!!

(شایید هم بروک تیلور اشتباه کرده :لبخند:)