📄 cnl.cpp
字号:
#include <imsl.h>
#include <stdio.h>
#include <math.h>
#define NDATA 90
/* Define function */
#define F(x) (float)(1.+ sin(x)+7.*sin(3.0*x))
float fcn(int n, float x);
main()
{
float coef1[]={0,0,0,0};
float weights[NDATA];
for (int n=0; n< NDATA; n++)
{
weights[n]=1-(n-45)*(n-45)/(45*45);
}
int nbasis = 4, i, delta;
float ydata[NDATA], xdata[NDATA], *random, *coef;
/* Generate random numbers */
imsl_random_seed_set(1234567);
random = imsl_f_random_uniform(NDATA, 0);
/* Set up data */
for(delta = 0; delta < 2; delta++) {
for (i = 0; i < NDATA; i++) {
xdata[i] = 6.*(float)i /((float)(NDATA-1));
ydata[i] = F(xdata[i]) + (delta)*2.*(random[i]-.5);
}
printf("xdata\n");
for (i = 0; i < NDATA; i++) {
printf("%f ",xdata[i]);
}
printf("\n\nydata\n");
for (i = 0; i < NDATA; i++) {
printf("%f ",ydata[i]);
}
coef = imsl_f_user_fcn_least_squares(fcn, nbasis, NDATA, xdata,
ydata, IMSL_RETURN_USER, coef1,IMSL_WEIGHTS,weights,0);
for (n=0;n<4;n++)
{
printf("\n%f",coef1[n]);
}
printf("\nFor delta = %1d", delta);
imsl_f_write_matrix("the computed coefficients are\n",
1, nbasis, coef, 0);
}
}
float fcn(int n, float x)
{
return (n == 1) ? 1.0 : sin((n-1)*x);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -