PHP का log1p() फ़ंक्शन **ln(1+x)** की गणना करता है, विशेष रूप से **बहुत छोटे x मानों के लिए उच्च परिशुद्धता** के साथ। सामान्य log(1+x) छोटे x के लिए परिशुद्धता खो देता है क्योंकि 1+x ≈ 1 हो जाता है।
सिंटैक्स
log1p(float $arg): float
पैरामीटर
| पैरामीटर | विवरण |
|---|---|
$arg | वह संख्या जिसका 1+x लघुगणक चाहिए |
लौटाया गया मान
log(1 + $arg) (फ्लोट), छोटे मानों के लिए सटीक।
उदाहरण
1. log1p(100) — सामान्य log(1+x) के समान
<?php $arg = 100; echo "using log() to calculate log(1+$arg) = " . log(1+$arg) . "\n"; echo "log1p($arg) = " . log1p($arg); ?>
using log() to calculate log(1+100) = 4.6151205168413 log1p(100) = 4.6151205168413
2. log1p(0) = 0 बनाम log(0) = -INF
<?php $arg = 0; echo "log($arg) = " . log($arg) . "\n"; echo "log1p($arg) = " . log1p($arg); ?>
log(0) = -INF log1p(0) = 0
महत्वपूर्ण: log1p(0) सही ढंग से 0 लौटाता है, जबकि log(1+0) = log(1) = 0 भी सही है, लेकिन log(0) अपरिभाषित है।
3. बहुत छोटी संख्या के लिए परिशुद्धता तुलना
<?php $arg = 0.000005; // 5e-6 echo "log($arg) = " . log($arg) . "\n"; echo "log1p($arg) = " . log1p($arg); ?>
log(5.0E-6) = -12.20607264553 log1p(5.0E-6) = 4.9999875000744E-6
विश्लेषण:
log(5e-6)ऋणात्मक बड़ा मान देता है (यह ln(5e-6) है, ln(1+5e-6) नहीं!)।log1p(5e-6)सही ढंग से≈ 5e-6देता है (क्योंकि ln(1+x) ≈ x जब x छोटा हो)।- उदाहरण में
log($arg)गलत तुलना है — सही तुलनाlog(1+$arg)बनामlog1p($arg)होगी।
4. NAN इनपुट
<?php $arg = sqrt(-1); // NAN echo "log($arg) = " . log($arg) . "\n"; echo "log1p($arg) = " . log1p($arg); ?>
log(NAN) = NAN log1p(NAN) = NAN
क्यों log1p() विशेष है?
जब x बहुत छोटा होता है (उदाहरण: 1e-15), तो फ्लोटिंग-पॉइंट में 1 + x == 1 हो जाता है (परिशुद्धता हानि)। तब log(1+x) = log(1) = 0 लौटाता है, जो गलत है। log1p() आंतरिक रूप से विशेष एल्गोरिदम उपयोग करके सीधे ln(1+x) की सटीक गणना करता है बिना 1+x जोड़े।
व्यावहारिक उपयोग
- वित्तीय गणनाएँ: लगातार चक्रवृद्धि ब्याज
ln(1+r)। - सांख्यिकी: लॉग-लिकेलिहुड, एन्ट्रॉपी गणनाएँ।
- संख्यात्मक स्थिरता आवश्यक होने पर कोई भी
ln(1+x)गणना।
PHP संस्करण
PHP 4, PHP 5, PHP 7, PHP 8+ में उपलब्ध।