2018年12月27日 星期四

C語言 範例1-13 已知不明分行物體, 經光測儀器之量測,印出Hermite 差除表

C語言 範例1-13 已知不明分行物體, 經光測儀器之量測,印出Hermite 差除表

範例1-13 已知不明分行物體, 經光測儀器之量測其結果如下
=========================================
時間                位置               飛行速度
 x                       f(x)                  f ' (x)
 0                       50.00               50.00
 2                       216.67             94.44
 4                       410.00             98.00
=========================================
印出Hermite 差除表


Hermite 內差法 EX1-13




程式
#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
   int i,j,k,n;
   double x[30],z[30],q[30][30],f[30],ff[30];
   printf("input n=");
   scanf("n=%d",&n);
   printf("\n");
 
   for(i=0;i<=n+1;i++)
   {
printf("\ninput x=");
    scanf("%lf",&x[i]);
 
    printf("\ninput f=");
    scanf("%lf",&f[i]);
 
    printf("\ninput ff=");
    scanf("%lf",&ff[i]);
    }
 
   printf("i z(i)   f(i)   f(i-1,i)   f(i-2,i-1,i)...\n");
   for(i=0;i<=n;i++)
   {
    z[2*i]=x[i];
    z[2*i+1]=x[i];
    q[2*i][0]=f[i];
    q[2*i+1][0]=f[i];
    q[2*i+1][1]=ff[i];
    if(i !=0)
q[2*i][1]=(q[2*i][0]-q[2*i-1][0])/(z[2*i]-z[2*i-1]);
      if(i==0)
printf("%d  %3.1lf %7.4lf\n",i,z[i],q[i][0]);
      else if(i==1)
printf("%d  %3.1lf %7.4lf  %7.4lf\n",i,z[i],q[i][0],q[i][1]);
   }
   for(i=2;i<=2*n+1;i++)
   {
    printf("%d  %3.1lf %7.4lf %7.4lf",i,z[i],q[i][0],q[i][1]);
    for(j=2;j<=i;j++)
    {
q[i][j]=(q[i][j-1]-q[i-1][j-1])/(z[i]-z[i-j]);
printf(" %7.4lf",q[i][j]);
    }
    printf("\n");
   }
return 0;
}

輸入資料
n=2

0.0  50.0    50.0
2.0  216.67  94.44
4.0  410.00  98.00

輸出結果
input ff=i z(i)   f(i)   f(i-1,i)   f(i-2,i-1,i)...
0  0.0 50.0000
1  0.0 50.0000  50.0000
2  2.0 216.6700 83.3350 16.6675
3  2.0 216.6700 94.4400  5.5525 -5.5575
4  4.0 410.0000 96.6650  1.1125 -1.1100  1.1119
5  4.0 410.0000 98.0000  0.6675 -0.2225  0.2219 -0.2225

沒有留言:

張貼留言

Messaging API作為替代方案

  LINE超好用功能要沒了!LINE Notify明年3月底終止服務,有什麼替代方案? LINE Notify將於2025年3月31日結束服務,官方建議改用Messaging API作為替代方案。 //CHANNEL_ACCESS_TOKEN = 'Messaging ...