PDA

View Full Version : مبتدی: فرمول های ریاضی در اکسس



majidosmani
یک شنبه 17 آبان 1394, 15:48 عصر
سلام میگم کسی از بچه ها میتونه این معادله را در اکسس بنویسه 136555

Abbas Amiri
یک شنبه 17 آبان 1394, 23:17 عصر
سلام میگم کسی از بچه ها میتونه این معادله را در اکسس بنویسه 136555

سلام

تابع MyFunc و ACos را در یک ماژول کپی کنید و از آن استفاده کنید:
Public Function MyFunc(r, d, h) As Double
MyFunc = d * (ACos(r - h) - Sqr(-h ^ 2 + 2 * h) * (r - h))
End Function

Public Function ACos(val As Single, Optional Radian As Boolean = True) As Double
Dim PI As Double
PI = 4 * Atn(1)
If Round(val, 8) = 1 Then
ACos = 0
Exit Function
End If
If Round(val, 8) = -1 Then
ACos = IIf(Radian, PI, 180)
Exit Function
End If
ACos = (Atn(-val / Sqr(-val * val + 1)) + 2 * Atn(1)) * IIf(Radian, 1, (180 / PI))
End Function

saeed28541
یک شنبه 17 آبان 1394, 23:40 عصر
=d(Atn(-(r-h) / Sqr(1-(r-h) * (r-h))) + 2 * Atn(1))-(Sqr((-h ^ 2)+2h)*(r-h)
این نکته را در نظر داشته باشید معادلات براساس رادیان کار میکنند ورودی h شما که قاعدتا باید درجه باشه را قبل ورود در معادلات باید تبدیل به رادیان نمایید.
تبدیل درجه به رادیان.
Rad(h) = h * Pi / 180
موفق باشید.

saeed28541
یک شنبه 17 آبان 1394, 23:43 عصر
از آقای امیری عذر خواهی میکنم .بنده جسارت کردم .متوجه پاسخ ایشون نشده بودم.
با اجازه ایشون لینکی (http://www.tebyan.net/newindex.aspx?pid=934&articleID=254810)میزارم که توابع در vb را ساده ومختصر توضیح داده.انشالله مورداستفاده دوستان قرار بگیره.

majidosmani
دوشنبه 18 آبان 1394, 08:45 صبح
=d(Atn(-(r-h) / Sqr(1-(r-h) * (r-h))) + 2 * Atn(1))-(Sqr((-h ^ 2)+2h)*(r-h)
این نکته را در نظر داشته باشید معادلات براساس رادیان کار میکنند ورودی h شما که قاعدتا باید درجه باشه را قبل ورود در معادلات باید تبدیل به رادیان نمایید.
تبدیل درجه به رادیان.
Rad(h) = h * Pi / 180
موفق باشید.

سلام دست شما درد نکنه ولی من منظورم از کسینوس به توان منفی یک تابع آرک کسینوس بوده نه یک تقسیم بر کسینوس

majidosmani
دوشنبه 18 آبان 1394, 08:48 صبح
سلام

تابع MyFunc و ACos را در یک ماژول کپی کنید و از آن استفاده کنید:
Public Function MyFunc(r, d, h) As Double
MyFunc = d * (ACos(r - h) - Sqr(-h ^ 2 + 2 * h) * (r - h))
End Function

Public Function ACos(val As Single, Optional Radian As Boolean = True) As Double
Dim PI As Double
PI = 4 * Atn(1)
If Round(val, 8) = 1 Then
ACos = 0
Exit Function
End If
If Round(val, 8) = -1 Then
ACos = IIf(Radian, PI, 180)
Exit Function
End If
ACos = (Atn(-val / Sqr(-val * val + 1)) + 2 * Atn(1)) * IIf(Radian, 1, (180 / PI))
End Function
سلام من ماژول شما را امتحان کردم ولی ارور میده لطفا بررسی کنید کجا را اشتباه وارد کردم

majidosmani
دوشنبه 18 آبان 1394, 09:06 صبح
سلام

تابع MyFunc و ACos را در یک ماژول کپی کنید و از آن استفاده کنید:
Public Function MyFunc(r, d, h) As Double
MyFunc = d * (ACos(r - h) - Sqr(-h ^ 2 + 2 * h) * (r - h))
End Function

Public Function ACos(val As Single, Optional Radian As Boolean = True) As Double
Dim PI As Double
PI = 4 * Atn(1)
If Round(val, 8) = 1 Then
ACos = 0
Exit Function
End If
If Round(val, 8) = -1 Then
ACos = IIf(Radian, PI, 180)
Exit Function
End If
ACos = (Atn(-val / Sqr(-val * val + 1)) + 2 * Atn(1)) * IIf(Radian, 1, (180 / PI))
End Function
سلام دست شما درد نکنه ولی منظور من از cos-1 تابع آرک کسینوس بوده نه یک تقسیم بر کسینوس لطفا همین بخش را برام اصلاح کنید دست شما درد نکنه

majidosmani
دوشنبه 18 آبان 1394, 09:20 صبح
دست آقا عباس و آقا سعید درد نکنه من با توجه به لینکی که آقا سعید فرستاده بود تابع آرک کسینوس را نوشتم

saeed28541
دوشنبه 18 آبان 1394, 14:38 عصر
سلام دست شما درد نکنه ولی من منظورم از کسینوس به توان منفی یک تابع آرک کسینوس بوده نه یک تقسیم بر کسینوس
درvb تابع arccosوجود نداره.بهمین خاطر باید با توابع دیگه ساخته بشه.
بخش اول تابعی که براتون نوشته بودم برای بدست آوردن arccos بود.
البته درتابع آقای امیری هم در بخش آخر اینکار صورت گرفته بود.
درهر صورت نمونه ای که تست کردی ودرست بود را بزارید تا دوستان دیگه بتونن استفاده کنن.
یاعلی

Abbas Amiri
دوشنبه 18 آبان 1394, 19:24 عصر
دست آقا عباس و آقا سعید درد نکنه من با توجه به لینکی که آقا سعید فرستاده بود تابع آرک کسینوس را نوشتم

سلام
تابع ArcCos در بازه-1 تا 1 عمل میکند و در فرمول شما ( ArcCos(r - h احتمالا میتواند مقادیر دیگری داشته باشد. این موضوع را چطور حل کردید؟

majidosmani
دوشنبه 18 آبان 1394, 21:56 عصر
سلام من یک مخزن به شکل استوانه در حالت خوابیده دارم میخواهم که از مایع پر میشه حالا ارتفاع پرشدن را می خواهم به حجم پرشده نسبت بدم
136598
من با توجه به فرمول ریاضی مقدار قطاع را بدست آوردم و در طول ضرب کردم میشه حجم میزان پر شده
136599
مقدار الفا را با توجه به تناسب در مثلث قائم الزاویه بدست آوردم
136600
حالا فرمولم درست جواب نمیده نمی دونم چرا ؟ مثلا اگر در فرم مقدار شعاع مخزن را با ارتفاع مایع برابر وارد کنید باید میزان درصد پر شده 50 درصد بشه ولی نمی دونم چرا 62 درصد میشه و همچنین من برای اینکه کاربر مقدار ارتفاع مایع را از قطر دایره بیشتر وارد نکنه یک دستور if نوشتم ولی جواب نمیده لطفا نگاه کنید ببینید مشکل کجاست

Abbas Amiri
سه شنبه 19 آبان 1394, 00:34 صبح
سلام من یک مخزن به شکل استوانه در حالت خوابیده دارم میخواهم که از مایع پر میشه حالا ارتفاع پرشدن را می خواهم به حجم پرشده نسبت بدم
136598
من با توجه به فرمول ریاضی مقدار قطاع را بدست آوردم و در طول ضرب کردم میشه حجم میزان پر شده
136599
مقدار الفا را با توجه به تناسب در مثلث قائم الزاویه بدست آوردم
136600
حالا فرمولم درست جواب نمیده نمی دونم چرا ؟ مثلا اگر در فرم مقدار شعاع مخزن را با ارتفاع مایع برابر وارد کنید باید میزان درصد پر شده 50 درصد بشه ولی نمی دونم چرا 62 درصد میشه و همچنین من برای اینکه کاربر مقدار ارتفاع مایع را از قطر دایره بیشتر وارد نکنه یک دستور if نوشتم ولی جواب نمیده لطفا نگاه کنید ببینید مشکل کجاست

سلام
کدهای زیر رو جایگزین کنید:
Public Function TankVolume(r, d, h) As Double
Dim alfa As Single
alfa = 2 * ACos((r - h) / r)
TankVolume = r ^ 2 / 2 * (alfa - Sin(alfa)) * d
End Function

Public Function ACos(val As Single, Optional Radian As Boolean = True) As Single
Dim PI As Double
PI = 4 * Atn(1)
If Round(val, 8) = 1 Then
ACos = 0
Exit Function
End If
If Round(val, 8) = -1 Then
ACos = IIf(Radian, PI, 180)
Exit Function
End If
ACos = (Atn(-val / Sqr(-val * val + 1)) + 2 * Atn(1)) * IIf(Radian, 1, (180 / PI))
End Function