2019年3月16日 星期六

C語言 範例1-3 通過下面4點的Lagrange內插法求P(1.5)之值?

C語言 範例1-3 通過下面4點的Lagrange內插法求P(1.5)之值?

範例1-3 通過下面4點的Lagrange內插法求P(1.5)之值?

(1 , 0.0)  (2 , 0.693)  (3 , 1.099)  (4 , 1.386)

x               f(x)
==================
1.0              0.0
2.0              0.693
3.0              1.099
4.0              1.386
===================

程式
// C program for implementation of Lagrange's Interpolation
#include <stdio.h>
#include <math.h>

// To represent a data point corresponding to x and y = f(x)
typedef struct f
{
double x , y;
} Data;

// function to interpolate the given data points using Lagrange's formula
// xi corresponds to the new data point whose value is to be obtained
// n represents the number of known data points
double interpolate(Data f[], double xi, int n)
{
double result = 0; // Initialize result

for (int i=0; i<n; i++)
{
// Compute individual terms of above formula
double term = f[i].y;
//printf("%0.3lf\n",term);
for (int j=0;j<n;j++)
{
if (j !=i )
{
term = term* (xi - f[j].x)/ (f[i].x - f[j].x);

//printf("%0.1lf %0.1lf \n",f[i].x , f[j].x);
//printf("%0.3lf\n",term);
}
}

// Add current term to result
result += term;
}

return result;
}

// driver function to check the program
int main()
{
// creating an array of 4 known data points

    Data f[]={ {1.0, 0.0} , {2.0 , 0.693} , {3.0, 1.099} ,{4.0, 1.386}};

// Using the interpolate function to obtain a data point
// corresponding to x=1.5
double result1= interpolate(f, 1.5, 4);
printf("Value of f(3) is : %3.5lf",result1);

return 0;
}



輸出畫面
value of f(3) is : 0.39287                                                                                                                                    
                                                                                                                                                              
...Program finished with exit code 0                                                                                                                          
Press ENTER to exit console.

沒有留言:

張貼留言

2024_09 作業3 以Node-Red 為主

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