2019年2月5日 星期二

範例1-4 利用Lagrange 求 P(1.5) 與 f(x)=log(x) = liog(1.5) 的誤差值

範例1-4 利用Lagrange 求 P(1.5)  與 f(x)=log(x) = liog(1.5) 的誤差值

(1)    x            f(x)          n=3+1    xa=1.5
==========================
         1.0          0.0
         2.0          0.693
         3.0          1.099
         4.0          1.386
=================


(2)    x            f(x)          n=3+1    xa=1.5
==========================
         1.0          0.0
         1.2          0.182
         1.4          0.336
         2.0          0.693
=================


(3)    x               f(x)      n=9 +1     xa=1.5
==========================
       1.0             0.000
       1.2             0.182
       1.7             0.531
       2.0             0.693
       2.2             0.788
       2.7             0.993
       3.0             1.099
       3.2             1.163
       3.7             1.308
       4.0             1.386




'''
n=3
xa=1.5
1.0  0.0
2.0  0.693
3.0  1.099
4.0  1.386

/* ex1-4.py : Lagrange Interpolation Algorithm
 * Read in data file of ex1-4.dat which has n point values
 * and the value of interpolating point xa. Based on Lagrange
 * Interpolation algorithm to compute p(xa) and output its value.
 * (x[i],f[i]):given points and n+1 are number of points
 * Ln,k(x)=l=summation of (x-x[i])/(x[k]-x[i]).
 * p(x)=ff=L(x)*f(x[k])
 */
'''
import math
print('\nLagrange Interpolation Algorithm\n')

xa=1.5
result=0.0

'''
x= list()
x.extend([1.0,2.0,3.0,4.0])
f= list()
f.extend([0.0,0.693,1.099,1.386])
n=3
'''
'''
x=[1.0 , 1.2 , 1.4 , 2.0]
f=[0.0 , 0.182 , 0.336 , 0.693]
n=3
'''
x=[1.0 , 1.2 , 1.7 , 2.0  , 2.2 ,  2.7  , 3.0 , 3.2  , 3.7  , 4.0]
f=[0.0 , 0.182 , 0.531 , 0.693  , 0.788  ,  0.993 , 1.099 , 1.163 , 1.308 , 1.386]
n=9


print(x)
print(f)
print('\n')

for k in range (0,n+1):    #n -->n+1
    temp=1.0;
    for i in range (0,n+1):  #n -->n+1
        if(i !=k):
            temp=temp * ( xa - x[i]) / ( x[k] - x[i])
    result=result+temp*f[k]

s1 = 'The value of p' + repr(xa) + '= ' + repr(result) + '...'
print(s1)

s1 = 'The value of f(' + repr(xa) + ')= ' + repr(math.log(xa)) + '...'
print(s1)

s1 = 'The value of  | f(' + repr(xa) + ') -  p' + repr(xa) + ' = ' + repr( abs(math.log(xa) - result) ) + '...'
print(s1)


輸出畫面

========= RESTART: F:\2018-09勤益科大數值分析\數值分析\PYTHON\EX1-4.py ============

Lagrange Interpolation Algorithm

[1.0, 2.0, 3.0, 4.0]
[0.0, 0.693, 1.099, 1.386]


The value of p1.5= 0.392875...
The value of f(1.5)= 0.4054651081081644...
The value of  | f(1.5) -  p1.5 = 0.01259010810816441...

=========================================================

Lagrange Interpolation Algorithm

[1.0, 1.2, 1.4, 2.0]
[0.0, 0.182, 0.336, 0.693]


The value of p1.5= 0.40446875...
The value of f(1.5)= 0.4054651081081644...
The value of  | f(1.5) -  p1.5 = 0.0009963581081643968...
>>> 

Lagrange Interpolation Algorithm

[1.0, 1.2, 1.7, 2.0, 2.2, 2.7, 3.0, 3.2, 3.7, 4.0]
[0.0, 0.182, 0.531, 0.693, 0.788, 0.993, 1.099, 1.163, 1.308, 1.386]


The value of p1.5= 0.40614193840579654...
The value of f(1.5)= 0.4054651081081644...
The value of  | f(1.5) -  p1.5 = 0.0006768302976321583...

>>> 

沒有留言:

張貼留言

2024_09 作業3 以Node-Red 為主

 2024_09 作業3  (以Node-Red 為主  Arduino 可能需要配合修改 ) Arduino 可能需要修改的部分 1)mqtt broker  2) 主題Topic (發行 接收) 3) WIFI ssid , password const char br...