⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 newton.cpp

📁 牛顿差商法求数值拟合。包文件中包含一个例子结果文件
💻 CPP
字号:
#include <iostream.h>
#include <stdio.h>
#include <conio.h>

void main()
{
	double x[10],X[10];
	double y[10];
	double Y[10][10] = {0};
	int n,i;
	double t,m;
	double E[10],A[10],N[10];
	double e;

	printf(" 输入已知插入点 t 值: ");
	cin >> t;

	printf("\n 输入数据组个数 n : " );
	scanf("%d",&n);

	cout << "\n 输入 n 个 x 数据值:  ";
	for(i=0;i<n;i++)
		cin >> x[i];

	cout << "\n 输入 n 个 f(x) 数据值: ";
	for(i=0;i<n;i++)
		cin >> y[i];

	cout << "\n 输入误差精度值 e : ";
	cin >> e;

	for(i=0;i<n;i++)
	{
		X[i] = x[i] - t;
		if(X[i]<0)
			X[i] = - X[i];
	}

	for(i=0;i<n;i++)
		for(int j=i+1;j<n;j++)
			if(X[i]>X[j])
			{
				m = X[i];
				X[i] = X[j];
				X[j] = m;
			}

	A[0] = 1;
	N[0] = y[0];

	for(i=0;i<n;i++)
		Y[0][i] = y[i];

	for(i=1;i<n;i++)
	{
		for(int j=i;j<n;j++)
			Y[i][j] = (Y[i-1][j] - Y[i-1][j-1])/(X[j] - X[j-i]);
		A[i] = A[i-1]*(t - X[i-1]);
		E[i] = Y[i][i]*A[i];
		N[i] = N[i-1] + E[i];
		if(E[i]<0)
			E[i] = -E[i];
		if(E[i]<e)
			goto exit;
	}

 
exit:
	printf("\n 进行了 %d 次牛顿差商运算,达到要求误差精度低于 e = %f 的要求\n",i,e);
	printf("\n 计算结果如下: \n");
	for(int j=0;j<=i;j++)
		printf("\n N%d(t) = %f\n",j,N[j]);

	getch();

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -