#!/usr/bin/python3
from math import log, exp
## ln(f)=ln(p)+q1*f=ln(p)+q1*exp[ln(f)]
def f(p,q):
lp=log(p)
epsilon=1e-5
## initial guess
y0=0
y1=1
while (y1-y0)>epsilon or (y0-y1)>epsilon:
y1=lp+q*exp(y1)
y0=y1
return exp(y1)
if __name__=="__main__":
for p in range(10):
for q in range(10):
print("p=%s, q=%s, f=%s", p/10+0.1, q/10+0.1, f(p/10+0.1,q/10+0.1))
结果:
p=%s, q=%s, f=%s 0.1 0.1 0.13123614957214594
p=%s, q=%s, f=%s 0.1 0.2 0.17222926954522666
p=%s, q=%s, f=%s 0.1 0.30000000000000004 0.22602706178738802
p=%s, q=%s, f=%s 0.1 0.4 0.2966292128808233
p=%s, q=%s, f=%s 0.1 0.5 0.38928475749095637
p=%s, q=%s, f=%s 0.1 0.6 0.510882326602397
p=%s, q=%s, f=%s 0.1 0.7 0.6704622942775809
p=%s, q=%s, f=%s 0.1 0.7999999999999999 0.8798888993429671
p=%s, q=%s, f=%s 0.1 0.9 1.1547323120104451
p=%s, q=%s, f=%s 0.1 1.0 1.5154262241479266
p=%s, q=%s, f=%s 0.2 0.1 0.26247229914429193
p=%s, q=%s, f=%s 0.2 0.2 0.3444585390904532
p=%s, q=%s, f=%s 0.2 0.30000000000000004 0.45205412357477603
p=%s, q=%s, f=%s 0.2 0.4 0.5932584257616464
p=%s, q=%s, f=%s 0.2 0.5 0.7785695149819126
p=%s, q=%s, f=%s 0.2 0.6 1.0217646532047937
p=%s, q=%s, f=%s 0.2 0.7 1.3409245885551615
p=%s, q=%s, f=%s 0.2 0.7999999999999999 1.759777798685934
p=%s, q=%s, f=%s 0.2 0.9 2.3094646240208903
p=%s, q=%s, f=%s 0.2 1.0 3.0308524482958528
p=%s, q=%s, f=%s 0.30000000000000004 0.1 0.3937084487164379
p=%s, q=%s, f=%s 0.30000000000000004 0.2 0.5166878086356799
p=%s, q=%s, f=%s 0.30000000000000004 0.30000000000000004 0.678081185362164
p=%s, q=%s, f=%s 0.30000000000000004 0.4 0.8898876386424697
p=%s, q=%s, f=%s 0.30000000000000004 0.5 1.1678542724728689
p=%s, q=%s, f=%s 0.30000000000000004 0.6 1.5326469798071907
p=%s, q=%s, f=%s 0.30000000000000004 0.7 2.0113868828327424
p=%s, q=%s, f=%s 0.30000000000000004 0.7999999999999999 2.639666698028901
p=%s, q=%s, f=%s 0.30000000000000004 0.9 3.4641969360313354
p=%s, q=%s, f=%s 0.30000000000000004 1.0 4.546278672443779
p=%s, q=%s, f=%s 0.4 0.1 0.5249445982885838
p=%s, q=%s, f=%s 0.4 0.2 0.6889170781809064
p=%s, q=%s, f=%s 0.4 0.30000000000000004 0.9041082471495521
p=%s, q=%s, f=%s 0.4 0.4 1.186516851523293
p=%s, q=%s, f=%s 0.4 0.5 1.557139029963825
p=%s, q=%s, f=%s 0.4 0.6 2.0435293064095874
p=%s, q=%s, f=%s 0.4 0.7 2.681849177110323
p=%s, q=%s, f=%s 0.4 0.7999999999999999 3.5195555973718675
p=%s, q=%s, f=%s 0.4 0.9 4.61892924804178
p=%s, q=%s, f=%s 0.4 1.0 6.061704896591705
p=%s, q=%s, f=%s 0.5 0.1 0.6561807478607297
p=%s, q=%s, f=%s 0.5 0.2 0.8611463477261331
p=%s, q=%s, f=%s 0.5 0.30000000000000004 1.13013530893694
p=%s, q=%s, f=%s 0.5 0.4 1.4831460644041161
p=%s, q=%s, f=%s 0.5 0.5 1.9464237874547814
p=%s, q=%s, f=%s 0.5 0.6 2.554411633011984
p=%s, q=%s, f=%s 0.5 0.7 3.352311471387903
p=%s, q=%s, f=%s 0.5 0.7999999999999999 4.399444496714834
p=%s, q=%s, f=%s 0.5 0.9 5.773661560052224
p=%s, q=%s, f=%s 0.5 1.0 7.57713112073963
p=%s, q=%s, f=%s 0.6 0.1 0.7874168974328756
p=%s, q=%s, f=%s 0.6 0.2 1.0333756172713595
p=%s, q=%s, f=%s 0.6 0.30000000000000004 1.3561623707243278
p=%s, q=%s, f=%s 0.6 0.4 1.7797752772849391
p=%s, q=%s, f=%s 0.6 0.5 2.3357085449457373
p=%s, q=%s, f=%s 0.6 0.6 3.065293959614381
p=%s, q=%s, f=%s 0.6 0.7 4.022773765665484
p=%s, q=%s, f=%s 0.6 0.7999999999999999 5.279333396057801
p=%s, q=%s, f=%s 0.6 0.9 6.92839387206267
p=%s, q=%s, f=%s 0.6 1.0 9.092557344887554
p=%s, q=%s, f=%s 0.7 0.1 0.9186530470050215
p=%s, q=%s, f=%s 0.7 0.2 1.205604886816586
p=%s, q=%s, f=%s 0.7 0.30000000000000004 1.5821894325117158
p=%s, q=%s, f=%s 0.7 0.4 2.0764044901657623
p=%s, q=%s, f=%s 0.7 0.5 2.7249933024366935
p=%s, q=%s, f=%s 0.7 0.6 3.5761762862167776
p=%s, q=%s, f=%s 0.7 0.7 4.6932360599430645
p=%s, q=%s, f=%s 0.7 0.7999999999999999 6.159222295400768
p=%s, q=%s, f=%s 0.7 0.9 8.083126184073114
p=%s, q=%s, f=%s 0.7 1.0 10.607983569035483
p=%s, q=%s, f=%s 0.7999999999999999 0.1 1.0498891965771675
p=%s, q=%s, f=%s 0.7999999999999999 0.2 1.3778341563618128
p=%s, q=%s, f=%s 0.7999999999999999 0.30000000000000004 1.8082164942991037
p=%s, q=%s, f=%s 0.7999999999999999 0.4 2.3730337030465853
p=%s, q=%s, f=%s 0.7999999999999999 0.5 3.1142780599276496
p=%s, q=%s, f=%s 0.7999999999999999 0.6 4.087058612819174
p=%s, q=%s, f=%s 0.7999999999999999 0.7 5.363698354220644
p=%s, q=%s, f=%s 0.7999999999999999 0.7999999999999999 7.039111194743734
p=%s, q=%s, f=%s 0.7999999999999999 0.9 9.23785849608356
p=%s, q=%s, f=%s 0.7999999999999999 1.0 12.123409793183411
p=%s, q=%s, f=%s 0.9 0.1 1.1811253461493134
p=%s, q=%s, f=%s 0.9 0.2 1.5500634259070394
p=%s, q=%s, f=%s 0.9 0.30000000000000004 2.034243556086492
p=%s, q=%s, f=%s 0.9 0.4 2.669662915927409
p=%s, q=%s, f=%s 0.9 0.5 3.503562817418606
p=%s, q=%s, f=%s 0.9 0.6 4.597940939421571
p=%s, q=%s, f=%s 0.9 0.7 6.034160648498226
p=%s, q=%s, f=%s 0.9 0.7999999999999999 7.919000094086702
p=%s, q=%s, f=%s 0.9 0.9 10.392590808094004
p=%s, q=%s, f=%s 0.9 1.0 13.638836017331336
p=%s, q=%s, f=%s 1.0 0.1 1.3123614957214593
p=%s, q=%s, f=%s 1.0 0.2 1.722292695452266
p=%s, q=%s, f=%s 1.0 0.30000000000000004 2.26027061787388
p=%s, q=%s, f=%s 1.0 0.4 2.966292128808232
p=%s, q=%s, f=%s 1.0 0.5 3.8928475749095623
p=%s, q=%s, f=%s 1.0 0.6 5.108823266023968
p=%s, q=%s, f=%s 1.0 0.7 6.704622942775806
p=%s, q=%s, f=%s 1.0 0.7999999999999999 8.798888993429669
p=%s, q=%s, f=%s 1.0 0.9 11.54732312010445
p=%s, q=%s, f=%s 1.0 1.0 15.154262241479262