روش پیدا کردن جزر یک عدد
متشکرم::
روش پیدا کردن جزر یک عدد
متشکرم::
مگا جان، عزیزم، اگه میشه لطف کن همین جا بزار که همه استفاده کنن.
والا تا اونجا که بنده میدونم اعداد جزر و مد ندارن.
اما فکر کنم قبلا هم بحثش شده که برای پیدا کردن جذر باید از سری های توانی استفاده کرد...
نه راههایه دیگهای هم هستنوشته شده توسط Sepidar
مهندس آرژنگ!
منم میدونم راه حلهای دیگه ای هم هست. اما اولا وقتی قراره به یه پست جواب بدی درست جواب بده. یعنی مثلا اینجا دقیقا ذکر کن که اون روش دیگه ای که تو ذهنته چیه. دوما استفاده از بسطهای توابع عمومی ترین راه برای تقریب توابعه.
اولاً : جواب من به پست درست بود، من فقط خواستم راهنمایی بکنم که بدونند راههایه دیگری هم هست. به جوابی که داده شده بود نمانندنوشته شده توسط Sepidar
دوماً : "بسطهای توابع" دیگه یعنی چی، اگر جواب میدید، کامل جواب بدید که ما هم بدونیم "بسطهای توابع" چی هست.
سوماً : لقب مهندسی به من نمییاد، اسمه خالیم هم برام زیادیه. :)
چهارماً : سال نوتان مبارک و متشکر از اینکه جوب دادید، جواب این سوال بستگی به این دارد که چی را قبول کنیم (مثلاً لگاریتم، توان ...) و چی را قبول نداشته باشیم و از چه چیزهایی استفاده کنیم. اگر در مورد اینکه استفاده از چه چیزهایی قابل قبول هست بنویسند من هم میتونم یک جواب کاملتر بفرستم.
مخلصیم
توضیح : این جذر را تا یک رقم اعشار می توان بهره برد
------------------------------------------------------------------------
-عدد را از ورودی بگیر
-دو رقم ،دو رقم از سمت راست جدا کنید
-digit=0
-flag=false
- آخرین(سمت چپ ترین) رقم بعدی جدا شده را در جلوی digit اضافه کنید
- بزرگترین عددی را پیدا کنید که اگر در خودش ضرب شودو در q1 بریز :
در اولویت اول با digit برابر شود
اگر نه،حاصل کوچکتر و نزدیکترین عدد ممکن صحیح
به digit باشد
-sqr=q1
-digit=digit-(q1*q1) l
L1:
-p2=sqr*2
-دو رقم بعدی را در جلوی digit اضافه کنید
-عدد c1 را طوری بیابید و جلوی p2 قرار دهید که p2c1*c1<= digit
-digit=digit-(p2c1*c1) 1
-q1=c1
-c1 زا جلوی sqr اضافه کن
if(flag=true) :
-sqr را چاپ کن
-به مرحله پایان برو
elseif(digit/sqr=0):
-دو تا صفر جلوی digit بگذارید
-یک ممیز جلوی sqr بگذارید
-flag=true
-برو به L1
else:
-به L1 برو
پایان:
End
-----------------------------------
اگر مثال نیاز بود،ارسال می کنم
دوماً اگر منظورتان از بسطهایه تابعنوشته شده توسط Sepidar
Taylor , Laurent Exapnsion
هست، بعد از گزراندن یک واحده numerical analysis متوجه میشید که خیلی راههایه بهتری هستند، اسماً:
Iteritive methods, Halleys methd ....
با احترام
والا من در حد آب، بابا، آب پاش بیشتر بلد نیستم
شما عفو بفرمایید :لبخندساده
من پوزش عرض میکنم.نوشته شده توسط Sepidar
مثل اینکه منظورم را اشتباه متوجه شدین. من دو روز فکر کردم سر اینکه بسطهایه تابع جیه، بعدش هم که متوجه شدم که منظورتون چیه، فکر کردم فارغ اتحصیله ریاضیات از دانشگاه هستید، چونکه کمتر کسی در مورد بستهایه تابع میدونه. از اینکه به نظرتون اینکه کی چی میدونه را پیش کشیدم معذرت میخوام.
جواب شما در این موضوع به نظر من پر اهمیت آمد، بخاطر همین سعی کردم جواب بدم. بازهم از اینکه باعث شدم که بجایه اینکه این موضوع به صورت مثبت پیش بره و اینکه شما را وادار کردم که بگید هیچ چی نمیدونید واقعاً شرمندم، اگر بزرگان راهنمایی کنند که کجایه جوابم باعث شدم شما احساس ناراحتی کنید، با خوشحالی عوضش میکنم، اگر لحن جوابم به نظرتون خوب نیامد، لطفاً ببخشید، عادته که تند و سریع جواب بدم، و گرنه از اشتیاق اشتراک شما در این موضوع کم کردن قصدم نبود. با اشتیاق منتظر جواب و یا سوالات شما و دیگران در این بحث بودم
بازهم ببخشید.
نه اخوی اختیار داری... :لبخندساده
غرض مشترک شدن تو اطلاعات همدیگست. قرار هم نیست که احیانا اگه کسی کمتر بلد بود، یه جوری رفتار کنیم که بقول معروف طرف بخوره تو پرش
به هر حال من قضیه رو همینجا تموم شده تلقی میکنم...
==============================
منظورم هم از بسط توابع، همون بسطهای تیلور و مک لورن بود که معمولا دم دست ترین روشهای منطقی تقریب توابع هستن. البته تو کارای محاسبات عددی جدیتر، میان بسطهای مختلف و حتی حدهای مختلف رو از حیث سرعت نزدیک شدن به جواب با هم مقایسه میکنن که از حوصله این بحث خارجه. اگه عمری بود و پورتالم رو راه انداختم یه سری مطلب اونجا خواهم نوشت.
سلامنوشته شده توسط amin zadehnoori
در مورد جواب سریع به سوال می توان گفت بستگی به زبان دارد و لی می توان عدد را به توان نصف(1تقسیم بر دو) رساند.
سلامنوشته شده توسط amin zadehnoori
در مورد جواب سریع به سوال می توان گفت بستگی به زبان دارد و لی می توان عدد را به توان نصف(1تقسیم بر دو) رساند.
در جواب سریع میتوان می توان به توان نصف عدد یک (یک تقسیم بر دو) رساند
سلام به دوستان عزیز
لطفا بجای این کارها، یکم بهتره نیست به بحث اصلی مون بپردازیم و از حاشیه پردازی دوری کنیم؟!
با عرضه پوزش دوباره از استاد سپیدار! حرف شما درست بود، اگر راهه دیگه هست باید میگفتم، قبلاً خودم همینجا از بقیه همین اشکال را مطرح کرده بودم، ولی باید بگم که کم خابی بد چیزیه، جوابهای قبلیم رو خوندم خودم شاخ درآوردم که چی نوشته بودم! روزی از ۱۶ ساعت بیشتر نباید به کامپیوتر نگاه کرد! به هرحال جواب این سوال را برایه دلفی نوشتم گذاشتم اینجا،نوشته شده توسط Sepidar
function SquareRoot( const X : real; const Tolerance : real):real;
var
X_next,X_current: real;
begin
X_current := X;
while ((ABS(X_next - X_current) < Tolerance)) do begin
X_next := 0.5*(X_current + X/X_current);
X_current := X_next;
end;
result := X_current;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Caption := FloatToStr( SquareRoot(9 , 0.001 ) );
end;
آخرین ویرایش به وسیله اَرژنگ : جمعه 11 فروردین 1385 در 15:20 عصر
:::
الگوریتم این روش:
1-start
2-input x
3-i=i+1
4-if i^2<=x<(i+1)^2 true then go to next line if not goback to line3.
5.c=.x-i/(I+1)^2-i^2
6.sqrt(x)=i+c
7.end.
عدد حاصل بسیار به جزر عدد نزدیک است.
محمد امین زاده نوری قربان شما
خیر! با این روش بهترین جواب از جواب واقعی از ۳ تا بیشتر فرق داره.نوشته شده توسط amin zadehnoori
در ضمن بر طبق این الگریتم جزر ۱۰۰ تقریباً مساویه با ۲۰ که از جوابه واقعی ۱۰ تا بشتره.