2019年2月23日 星期六

Julia語言 例題1-10 牛頓向前差除法與向後差除法

Julia語言 例題1-10 牛頓向前差除法與向後差除法

已知4點座標
n=4
x       f(x)
==========
1.0    0.0
2.0    0.693
3.0    1.099
4.0    1.386
求牛頓向後差除表

程式
using Printf

x=[ 1.0 , 2.0 , 3.0 ,4.0]
f= [  [0.00     ,0.0 , 0.0   ,0.0  ,0.0 ,0.0 ],
      [0.693    ,0.0 , 0.0   ,0.0  ,0.0 ,0.0 ],
      [1.099    ,0.0 , 0.0   ,0.0  ,0.0 ,0.0 ],
      [1.386    ,0.0 , 0.0   ,0.0  ,0.0 ,0.0 ]]
y=f

n=length(x)
println("  Divided Difference Table: ")
println("=============================")
for j=2:n
    for i=1:n-j+1
        f[i][j]=(f[i+1][j-1]-f[i][j-1])/(x[i+j-1]-x[i])
    end
end 

print("i\tx(i)\t\tf(i)\t\tf(i,i+1)\tf(i,i+1.i+2),  ......................\n")
for i=1:n
    s=@sprintf("%d\t%8.5f",i,x[i])
    print(s)
    for j=1:n-i+1
        s=@sprintf("\t%8.5f",f[i][j])
        print(s)
    end
    println()
 
end


d=[0.0 for i=1:n]
for i=1:n
    d[i]=f[1][i]
end 

s=@sprintf("牛頓前向差除表")
println(s,d)


#================================================
 for(i=1;i<=n;i++)
   {
      printf("%4.2lf   %8.5lf",x[i],f[i][0]);
      for(j=1;j<=i;j++)
      {
f[i][j]=(f[i][j-1]-f[i-1][j-1])/(x[i]-x[i-j]);
printf("  %8.5lf",f[i][j]);
      }
      printf("\n");
   }

===============================================#
println()
for i=2:n
    for j=2:i
        y[i][j]=(y[i][j-1]-y[i-1][j-1]) / (x[i]-x[i-j+1])
        # println(y[i][j])
    end
end 

print("i\tx(i)\t\tf(i)\t\tf(i,i+1)\tf(i,i+1.i+2),  ......................\n")
for i=1:n
    s=@sprintf("%d\t%8.5f",i,x[i])
    print(s)
    for j=1:i
        s=@sprintf("\t%8.5f",y[i][j])
        print(s)
    end
    println()
 
end


d=[0.0 for i=1:n]
for i=1:n
    d[i]=y[n][i]
end 

s=@sprintf("牛頓後向差除表")
println(s,d)


輸出畫面
Divided Difference Table: 
=============================
i  x(i)     f(i)     f(i,i+1) f(i,i+1.i+2),  ......................
1  1.00000  0.00000  0.69300 -0.14350  0.02800
2  2.00000  0.69300  0.40600 -0.05950
3  3.00000  1.09900  0.28700
4  4.00000  1.38600
牛頓前向差除表[0.0, 0.693, -0.1435, 0.028]

Divided Difference Table: 
=============================
i x(i) f(i) f(i,i+1) f(i,i+1.i+2), ......................
1 1.00000 0.00000 2 2.00000 0.69300 0.69300 3 3.00000 1.09900 0.40600 -0.14350 4 4.00000 1.38600 0.28700 -0.05950 0.02800
牛頓後向差除表[1.386, 0.287, -0.0595, 0.028]

沒有留言:

張貼留言

2024_09 作業3 以Node-Red 為主

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