2019年3月1日 星期五

Julia語言 習題3-4請使用中央差近似法計算一次微分 f '(1.005) , f ' (1.015) 與 二次微分 f '' (1.01) 之值

Julia語言 習題3-4 觀察下列數據
x   = 1.00  , 1.01 , 1.02
f(x)=1.27  , 1.32 , 1.38
請使用中央差近似法計算
一次微分 f '(1.005) , f ' (1.015) 與 二次微分 f '' (1.01) 之值

程式
#中央近似差方法
#  f'  i = (f(i+1) - f(i-1)) / 2h
#  f'' i = ( fi+1 - 2 fi  + f i-1) / h^2
#============================================
   x         f(x)    f'(x)    f''(x)
   1.00      1.27
   1.005   
   1.01      1.32
   1.015   
   1.02      1.38
============================================#

using Printf

x=[ 1.00 , 1.01 , 1.02 ]
f= [  [1.27    ,0.0 , 0.0   ],
      [1.32    ,0.0 , 0.0   ],
      [1.38    ,0.0 , 0.0   ] ]

xa=[1.005 , 1.015 ,1.01]
h=abs(x[2]-x[1])
i=1
s=@sprintf("f(%0.3f)的微分.......",xa[i])
println(s)
fd1=(f[i+1][1]- f[i][1]) / (h)
s=@sprintf("一次微分值= %0.4f ",fd1)
f[i][2]=fd1
println(s)


println("\n")
i=2
s=@sprintf("f(%0.3f)的微分.......",xa[i])
println(s)

fd1=(f[i+1][1]- f[i][1]) / (h)
s=@sprintf("一次微分值= %0.4f ",fd1)
f[i][2]=fd1
println(s)


println("\n")
i=2
s=@sprintf("f(%0.3f)的二次微分.......",xa[i+1])
println(s)

fd2=(f[i+1][1]- 2*f[i][1] + f[i-1][1]) / (h*h)
s=@sprintf("二次微分值= %0.4f ",fd2)
f[i][3]=fd2
println(s)


輸出畫面
f(1.005)的微分.......
一次微分值= 5.0000 


f(1.015)的微分.......
一次微分值= 6.0000 


f(1.010)的二次微分.......
二次微分值= 100.0000 

沒有留言:

張貼留言

Node-Red Dashboard UI Template + AngularJS 參考 AngularJS教學 --3

  Node-Red Dashboard UI Template + AngularJS 參考 AngularJS教學 --3 AngularJS 實例 <!DOCTYPE html> <html> <head> <meta charse...