صفحه 3 از 3

Re: محاسبه لگاریتم

ارسال شده: یک‌شنبه ۱۳۹۱/۱۱/۲۹ - ۰۱:۰۰
توسط Aryan_M
exp دیگه چیه؟

Re: محاسبه لگاریتم

ارسال شده: یک‌شنبه ۱۳۹۱/۱۱/۲۹ - ۰۱:۰۱
توسط ehsan.helli1
تعریف لگاریتم طبیعی اینه
مساحت زیر نمودار 1/x از 1 تا x
تابع exp معکوس تابع لگاریتم طبیعی هستش

Re: محاسبه لگاریتم

ارسال شده: یک‌شنبه ۱۳۹۱/۱۱/۲۹ - ۰۱:۰۲
توسط Aryan_M
خوب منم می گم چرا از 1 تا x؟
اثبات این که چرا از 1 تا x رو می خوام.
درسته شکل یک هذلولی هستش و قرنه است و مساخت این ور و اون ورش یکیه پس باید از 1 به بعدو حساب کنیم. ولی این اثبات هردمبیلی رو دوست ندارم.

Re: محاسبه لگاریتم

ارسال شده: یک‌شنبه ۱۳۹۱/۱۱/۲۹ - ۰۱:۰۵
توسط ehsan.helli1
مساحت اونور نمودار که واگرا هستش!
از 1 تا 0

Re: محاسبه لگاریتم

ارسال شده: یک‌شنبه ۱۳۹۱/۱۱/۲۹ - ۰۱:۰۶
توسط ehsan.helli1
double power(double x, int p);//x^p

double ln(double z)
{
double t =(z-1)/(z+1);
double result=0,oldResult=1;
int n=0;
double temp=0;
while((oldResult < result?result - oldResult:oldResult - result) > 0.00000000001)
{
oldResult = result;

temp =(2*n+1);
result =result + 2*( (1 / temp )* (power(t,2*n+1)) );

n=n+1;
}
return result;
}




double log(double x,double a)
{
return ln(x)/ln(a);
}
اینم الان پیدا کردم!فک کنم درست نوشته

Re: محاسبه لگاریتم

ارسال شده: یک‌شنبه ۱۳۹۱/۱۱/۲۹ - ۰۱:۰۹
توسط Aryan_M
چه جالب اتفاقا همین الان منم داشتم با matlab به زبان java همینو می نوشتم ولی اینی که شما اوردی خیلی اضافه نویسی داره.

Re: محاسبه لگاریتم

ارسال شده: یک‌شنبه ۱۳۹۱/۱۱/۲۹ - ۰۱:۱۰
توسط ehsan.helli1
متاسفانه جاوا بلد نیستم!

Re: محاسبه لگاریتم

ارسال شده: یک‌شنبه ۱۳۹۱/۱۱/۲۹ - ۰۱:۲۰
توسط Aryan_M
n=1000000;
x=2.718;
p=0;
for i=0:1:n
p=p+( (1/2i+1)* power( ((x-1)/(x+1)),(2i+1) ) );
end
p=p*2;


من اینو نوشتم ولی lne رو نشون می ده :
q =

-4.3720e+005 -9.3618e+005i
یعنی کجای کار ایراد داره!!!

Re: محاسبه لگاریتم

ارسال شده: یک‌شنبه ۱۳۹۱/۱۱/۲۹ - ۰۱:۳۹
توسط Aryan_M
مشکلشو درست کردم نباید می نوشتم 2i+1 این فکر کرده عدد غیر حقیقیه.
ولی مشکلو درست کردم می گه جواب بی نهایته.
پس یا اون بسطی که نوشتین غلطه یا من اشتباه کردم!!!n=1000000;
x=2.718;
p=0;
for j=0:1:n
p=p+( (1/(2*j+1))*power( ((x+1)/(x-1)),(2*j+1) ) );
end
p=p*2;
>> p

p =

Inf

>>

Re: محاسبه لگاریتم

ارسال شده: دوشنبه ۱۳۹۱/۱۱/۳۰ - ۰۰:۵۷
توسط Aryan_M
خودم فهمیدم چرا انتگرال 1/x می شه از 1 تا x و x>1 دلیلش اینه که درسته که انتگرال 1/x می شه خود تابع lnx ولی همون طور که می دونیم مشتق انتگرال یک تابع خودش نمی شه و کم درجه ترین جمله حذف می شه و تو اینجا هم انتگرال گیری از مشتق lnx خود تابعو نمی ده و این انتگرال مساحت نموداری رو می ده که ابتداش از محور مختصات باشه. در نتیجه به دلیل این که lnx در صفر مثیت به منفی بی نهایت میل می کنه در نتیجه مثل اینه که نمودار lnx زو اونقدر بیاریم بالا که ابتداش بشه ابتدای محور مختصات که امکان نا پذیره و اونوقت مقدار تابع همواره بی نهایت می شه.
ولی اگه انتگرال 1/x+1 رو از مبدا مختصات بگیریم می شه مقدار تابع lnx از نقطه x=1 به بعد که چون 1/x همواره مثبته پس انتگرالشم همواره مثبت و مقدار تابع lnx رو از y=0 به ما تحویل می ده.

در ضمن اون روشی که گفتم برای پیدا کردن مقدار تابع یعنی بیایم مشتق تابع رو به صورت پله پله بگیریم و ارتفاه این پله هارو جمع کنیم تا به مقدار خود تابع برسیم این چیز جدیدی نست بلکه انتگرال گیری از مشتق تابع است.

برای بدست اوردن لگاریتم یک عدد فقط کافیه انتگرال 1 تا x رو به ازای x>1 بگیریم می شه لگاریتم طبیعی . smile084
بسیار سادست شاید یکی از ساده ترین سیگما هایی که دیده باشید :
lim┬(n→∞)⁡∑_(i=0)^n▒1/(i+n/x)
اینو بندازین تو wrod نشون می ده.
البته برای آسونی محاسبه کامپیتور من سادش کردم وگرنه اصل معادله این شکلیه:
lim┬(n→∞)⁡〖x/n ∑_(i=0)^n▒1/(i/n x+1)〗

اینم کدش که لگاریتم طبیعی 2.718 رو به ازای n=10000 نشون داد 1.313086546919802 :

n=10000;
n=double(n);
x=0;
x=double(x);
x=2.718;
p=0;
p=double(p);
for j=1:1:n
p=p+( 1/(j+(n/x)) );
end

نمی دونم برنامه نویسیش چه مشکلی داره که دقیق حساب نمی کنه!
هرچی مقدار x بزرگتر باشه عدد دقیق تری می ده و عدد n تاثیر چندانی در دقت جواب نداره و فقط سرعتو میاره پایین.
مثلا لگاریتم 1000 رو نشون می ده 6.8596 که با ماشین حساب کامپیوتر بزنیم نشون می ده :6.9077
لگاریتم 1000000 رو برنامه من نشون می ده 13.3927 و ماشین حساب کامپیوتر می ده : 13.8155
ولی وقتی n رو می زارم 100000000 برنامه من می ده : 13.8105 که البته محاسبش 3 ثانیه طول می کشه.
از نظر دیفرانسیلی که مشکلی نداره ولی نمی دونم چرا با matlab که اینو نوشتم ایراد می گیره!

شاید فرمولای بهتری برای محاسبه دقیق تر و سریع تر لگاریتم باشه.

کسی فرمول بهتر می دونه؟
این فرمول زتایی که آقای احسان.هلی نوشتند رو کسی می تونه بررسی کنه؟ چون من برنامشو نوشتم و جوابش همیشه واگرا و بی نهایته.

Re: محاسبه لگاریتم

ارسال شده: یک‌شنبه ۱۳۹۷/۳/۲۰ - ۱۲:۵۵
توسط Aryan_M
لگاریتم طبیعی توسط معکوس تابع نمایی (exp) به روش عددی، مثلا نیوتون رافسون، محاسبه می شود.
تاب نمایی هم با بست تیلور.
روش های دقیق تر هم موجود است.
https://en.wikipedia.org/wiki/Natural_logarithm

Re: محاسبه لگاریتم

ارسال شده: چهارشنبه ۱۳۹۷/۳/۲۳ - ۲۰:۴۷
توسط assarzadeh
دوستان سلام
با دیدن موضوع این جستار لازم دیدم با توجه به اینکه سالها پیش به روشی برای محاسبه لگاریتم اعداد دست یافته بودم، شما را با آن آشنا کنم. هر چند که من هنوز تمام نظرات بیان شده در این موضوع را نتوانستم بخوانم.
با استفاده از روشی که من به آن دست پیدا کردم، می‌توان لگاریتم هر عددی را در هر پایه مثبت و مخالف $1$ فقط با یک ماشین حساب معمولی با دقت بسیار خوبی به دست آورد. من سالها پیش کدی هم به زبان $\mathrm{C}$ نوشته بودم که به کمک این روش لگاریتم اعداد را محاسبه می‌کرد. اما الان آن را پیدا نمی‌کنم؛ وگرنه آن را در همین جستار قرار می‌دادم. در این روش شما باید ابتدا قسمت صحیح حاصل لگاریتم را به دست بیاورید و سپس یک عدد صحیح بزرگتر از $1$ به عنوان مبنای محاسبات انتخاب نمایید که به نظر من $2$ و $10$ اعداد مناسبی هستند. در ادامه توجه شما را به طریقه محاسبه لگاریتم عدد $1000$ در پایه عدد $π$ با انتخاب $10$ به عنوان مبنای محاسبه جلب می‌کنم (در ماشین حساب مهندسی برای محاسبه این مقدار کافیست حاصل لگاریتم عدد $1000$ در یک پایه دلخواه را بر لگاریتم عدد $π$ در همان پایه‌ای که انتخاب کردیم تقسیم کنیم).
$\boldsymbol{\log}{1000}=\boldsymbol{\log}{(π^6×\frac{1000}{π^6})}=6+\boldsymbol{\log}{\frac{1000}{π^6}}=6+\boldsymbol{\log}1.040161...=6+0.1\boldsymbol{\log}1.482544...=$
$6.0+0.01\boldsymbol{\log}51.295159...=6.03+0.01\boldsymbol{\log}1.654347...=6.03+0.001\boldsymbol{\log}153.556305...=$
$6.034+0.001\boldsymbol{\log}1.576406...=6.034+0.0001\boldsymbol{\log}94.772347...=6.0343+0.0001\boldsymbol{\log}3.056553...=~...$
توضیح: پایه لگاریتم‌های فوق عدد $π$ است. در ابتدا ممکن است روش پیچیده‌ای به نظر برسد. اما یک روند منظم و سرراست دارد و با چند بار تمرین به راحتی به خاطر سپرده می‌شود. کلید این روش استفاده از رابطه $\boldsymbol{\log_b}x=\frac1n\boldsymbol{\log_b}{x^n}$ است که در آن $n$ همان مبناییست که انتخاب کرده‌ایم. بر این اساس ابتدا قسمت صحیح حاصل لگاریتم را به دست می‌آوریم. برای این کار کافیست اگر عدد جلوی لگاریتم بزرگتر از $1$ باشد، آن را آنقدر بر پایه لگاریتم یعنی $π$ تقسیم کنیم تا به عددی بزرگتر یا مساوی با $1$ و کوچکتر از $π$ برسیم (یعنی عددی که جزء صحیح لگاریتم آن صفر باشد). در این صورت تعداد تقسیماتی که انجام داده‌ایم همان جزء صحیح لگاریتم عدد مورد نظر است. اگر هم عدد جلوی لگاریتم کوچکتر از $1$ باشد، آن را آنقدر در پایه لگاریتم ضرب می‌کنیم تا به عددی در محدوده گفته شده برسیم. در این حالت تعداد ضرب‌های انجام شده با علامت منفی بیانگر جزء صحیح لگاریتم عدد است. در این مثال اگر عدد $1000$ را شش بار بر $π$ تقسیم کنیم به عددی بین $1$ و $π$ خواهیم رسید. بنابراین جزء صحیح لگاریتم $1000$ در پایه $π$ عدد $6$ است. طبق قاعده تبدیل ضرب به جمع، لگاریتم $1000$ عبارتست از حاصل جمع عدد $6$ و لگاریتم آن عددی که در نتیجه تقسیمات متوالی به آن دست یافتیم. حالا همین کار را برای محاسبه لگاریتم عدد جدید نیز انجام می‌دهیم؛ منتها ابتدا باید از رابطه کلیدی فوق استفاده کنیم و عدد جدید را به توان مبنای انتخابی ($10$) برسانیم و معکوس مبنا یعنی $0.1$ را به عنوان ضریب بر حاصل لگاریتم اعمال نماییم. با تکرار این عمل می‌توانیم لگاریتم مورد نظرمان را تا دقت دلخواه محاسبه کنیم. این روش را می‌توان برای پایه‌های لگاریتم کوچکتر از $1$ هم به کار بست. در این حالت باید تقسیمات (یا ضرب‌های) متوالی روی عدد مورد لگاریتم گیری را هر بار آنقدر انجام دهیم تا به مقداری کوچکتر یا مساوی با $1$ و بزرگتر از پایه لگاریتم دست یابیم.
امیدوارم این متن مفید باشد.