পাইথনের বেস দুটিতে আমি কীভাবে লগ গণনা করব। যেমন। আমার এই সমীকরণটি রয়েছে যেখানে আমি লগ বেস 2 ব্যবহার করছি
import math
e = -(t/T)* math.log((t/T)[, 2])
পাইথনের বেস দুটিতে আমি কীভাবে লগ গণনা করব। যেমন। আমার এই সমীকরণটি রয়েছে যেখানে আমি লগ বেস 2 ব্যবহার করছি
import math
e = -(t/T)* math.log((t/T)[, 2])
উত্তর:
এটা জেনে রাখা ভাল
তবে এটিও জানেন যে
math.log
একটি alচ্ছিক দ্বিতীয় যুক্তি গ্রহণ করে যা আপনাকে বেসটি নির্দিষ্ট করতে দেয়:
In [22]: import math
In [23]: math.log?
Type: builtin_function_or_method
Base Class: <type 'builtin_function_or_method'>
String Form: <built-in function log>
Namespace: Interactive
Docstring:
log(x[, base]) -> the logarithm of x to the given base.
If the base not specified, returns the natural logarithm (base e) of x.
In [25]: math.log(8,2)
Out[25]: 3.0
base
2.3 সংস্করণ, বিটিডব্লিউতে যুক্তি যুক্ত করা হয়েছে।
?
) হ'ল ডায়নামিক অবজেক্ট ইন্ট্রোস্পেকশন ।
math.log2(x)
import math
log2 = math.log(x, 2.0)
log2 = math.log2(x) # python 3.4 or later
math.frexp(x)
আপনার যদি প্রয়োজন কেবল একটি ভাসমান পয়েন্ট সংখ্যার লগ বেস 2 এর পূর্ণসংখ্যার অংশ হয়, তবে প্রকাশকটি বের করা বেশ কার্যকর:
log2int_slow = int(math.floor(math.log(x, 2.0)))
log2int_fast = math.frexp(x)[1] - 1
পাইথন ফ্রেইপ এক্স () সি ফাংশনটিকে ফ্রিএক্সপ্যাক () কল করে যা কেবল এক্সপোনেন্টটিকে ধরে এবং টুইট করে।
পাইথন ফ্রেইপ এক্স () একটি টিপল দেয় (ম্যান্টিসা, এক্সপোনেন্ট)। সুতরাং [1]
ঘটক অংশ পায়।
2 এর অবিচ্ছেদ্য শক্তির জন্য এক্সপোনেন্টটি আপনার প্রত্যাশার চেয়ে আরও বেশি। উদাহরণস্বরূপ 32 0.5x2⁶ হিসাবে সংরক্ষণ করা হয় ⁶ এটি উপরেরটি ব্যাখ্যা করে - 1
। 1/32 এর জন্যও কাজ করে যা 0.5x2⁻⁴ হিসাবে সংরক্ষণ করা হয় ⁻⁴
নেতিবাচক অনন্তের দিকে মেঝে, সুতরাং লগ 31 not নয় 5. লগ ₂ (১/১17) হয় -5 নয় -4।
x.bit_length()
যদি ইনপুট এবং আউটপুট উভয়ই পূর্ণসংখ্যা হয় তবে এই দেশীয় পূর্ণসংখ্যা পদ্ধতিটি খুব দক্ষ হতে পারে:
log2int_faster = x.bit_length() - 1
- 1
কারণ 2ⁿ এর জন্য n + 1 বিট দরকার। খুব বড় পূর্ণসংখ্যার জন্য কাজ করে, যেমন 2**10000
।
নেতিবাচক অনন্তের দিকে মেঝে, সুতরাং লগ 31 not নয় 5. লগ ₂ (১/১17) হয় -5 নয় -4।
যদি আপনি পাইথন ৩.৪ বা তার বেশি হয় তবে এটিতে ইতিমধ্যে কম্পিউটারে লগ 2 (এক্স) কম্পিউটিংয়ের জন্য একটি অন্তর্নির্মিত ফাংশন রয়েছে
import math
'finds log base2 of x'
answer = math.log2(x)
আপনি যদি পাইথনের পুরানো সংস্করণে থাকেন তবে আপনি এটি করতে পারেন
import math
'finds log base2 of x'
answer = math.log(x)/math.log(2)
অদ্ভুত ব্যবহার:
In [1]: import numpy as np
In [2]: np.log2?
Type: function
Base Class: <type 'function'>
String Form: <function log2 at 0x03049030>
Namespace: Interactive
File: c:\python26\lib\site-packages\numpy\lib\ufunclike.py
Definition: np.log2(x, y=None)
Docstring:
Return the base 2 logarithm of the input array, element-wise.
Parameters
----------
x : array_like
Input array.
y : array_like
Optional output array with the same shape as `x`.
Returns
-------
y : ndarray
The logarithm to the base 2 of `x` element-wise.
NaNs are returned where `x` is negative.
See Also
--------
log, log1p, log10
Examples
--------
>>> np.log2([-1, 2, 4])
array([ NaN, 1., 2.])
In [3]: np.log2(8)
Out[3]: 3.0
http://en.wikipedia.org/wiki/Binary_logarithm
def lg(x, tol=1e-13):
res = 0.0
# Integer part
while x<1:
res -= 1
x *= 2
while x>=2:
res += 1
x /= 2
# Fractional part
fp = 1.0
while fp>=tol:
fp /= 2
x *= x
if x >= 2:
x /= 2
res += fp
return res
এটা চেষ্টা কর ,
import math
print(math.log(8,2)) # math.log(number,base)
অজগর 3 বা ততোধিক ক্ষেত্রে, গণিত শ্রেণিতে পতিত ক্রিয়াকলাপ রয়েছে
import math
math.log2(x)
math.log10(x)
math.log1p(x)
অথবা আপনি সাধারণত যে math.log(x, base)
কোনও বেসের জন্য ব্যবহার করতে পারেন।
লগ_বাসে (এক্স) = লগ (এক্স) / লগ (2)
লগটি [বেস এ] x = লগ [বেস বি] এক্স / লগ [বেস বি] এ ভুলে যাবেন না ।
সুতরাং আপনার যদি কেবল log
(প্রাকৃতিক লগের জন্য) এবং log10
(বেস -10 লগের জন্য) থাকে তবে আপনি ব্যবহার করতে পারেন
myLog2Answer = log10(myInput) / log10(2)
math.log()
কলটিতে ", 2" এর চারপাশে বর্গাকার বন্ধনীগুলি নিয়ে থাকেন তবে আপনার যা কাজ করা উচিত । আপনি কি এটা চেষ্টা করেছেন?