• 大小: 4.18MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-10-13
  • 语言: C/C++
  • 标签: c++  

资源简介

该程序由c++编写,主要用于实现基于函数y=e^(-2x)在区间[0,6]的插值函数,开发工具为VS2015,请用此IDE或者更高版本的IDE打开工程文件~~~~~

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include “Lagrange.h“
#include “Liner.h“
#include “YangTiao.h“
#include “WriteFile.h“
using namespace std;

#define E 2.71828182845904523536


double * calculateVlaue(double * x int n);

int main() {
FILE *fp;//写入文件
fp = fopen(“D:\\result.txt“ “w“);
fclose(fp);
ofstream outfile(“D:\\result.txt“ ios::in | ios::out | ios::binary);
if (!outfile.is_open())
{
cout << “ the file open failed“ << endl;
exit(1);
}
int num = 0; //输入的插值点的数
double x[10000]; //用于存储要求计算的x值
double standX[10000]; //用于存储插值点x
double standY[10000]; //用于存储插值点y
double *sY;
double targetY[1000];
double accurateY[1000];
cout << “please input the num to interpolate: “;
cin >> num; //输入插值点数
outfile << “插值点数为: “ << num << “\r\n“;
double step = 6 / double(num); //步长

standX[0] = 0;
int k = 0;
//cout << “the step is: “ << step << endl;
outfile << “x的坐标值: \r\n“;
cout << “x的坐标值: \r\n“;
for (int i = 1; i <= num; i++) {
standX[i] = standX[i-1] + step;
x[k] = 6 * (i- 0.5) / num;
cout << standX[k] << “ “;
outfile << standX[k] << “ “;
k++;
}
outfile << “\r\n“;
cout << endl;

outfile << “y的坐标值: \r\n“;
cout << “y的坐标值: \r\n“;
sY = calculateVlaue(standX k+1);
for (int i = 0; i <= num; i++) {
standY[i] = *(sY + i);
outfile << standY[i] << “ “;
}
outfile << “\r\n“;

outfile << “目标x: \r\n“;
cout << “目标x: \r\n“;
for (int i = 1; i <= num; i++) {
x[k] = 6 * (i - 0.5) / num;
cout << x[k] << “ “;
outfile << x[k] << “ “;
k++;
}
cout << endl;
outfile << “\r\n“;

outfile << “标准结果: \r\n“;
cout << “标准结果: \r\n“;
sY = calculateVlaue(x k);//计算要求的x值对应的标准y值
for (int i = 0; i < num; i++) {
accurateY[i] = *(sY + i);
outfile << accurateY[i] << “ “;
}
outfile << “\r\n“;

cout << endl;
double absoluteError = 0;

//n阶拉格朗日插值
outfile << “拉格朗日插值: \r\n“;
sY = Lagrange(num standX standY x);
for (int i = 0; i < num; i++) {
targetY[i] = *(sY + i);
if (abs(targetY[i] - accurateY[i]) > absoluteError) {
absoluteError = abs(targetY[i] - accurateY[i]);
}
outfile << targetY[i] << “ “;
}
outfile << “\r\n“;
outfile << “最大绝对误差: “ << absoluteError << “\r\n“;
cout << endl << “最大绝对误差: “ << absoluteError << endl;
absoluteError = 0;

//分段线性插值
outfile << “分段线性插值: \r\n“;
sY = Liner(num standX standY x);
for (int i = 0; i < num; i++) {
targetY[i] = *(sY + i);
if (abs(targetY[i] - accurateY[i]) > absoluteError) {
absoluteError = abs(targetY[i] - accurateY[i]);
}
outfile << targetY[i] << “ “;
}
outfile << “\r\n“;
outfile << “最大绝对误差: “ << absoluteError << “\r\n“;
cout << endl << “最大绝对误差: “ << absoluteError << endl;

//三次样条
outfile << “三次样条插值: \r\n“;
sY = spl2(num + 1 standX standY -2 1.2284e-5 x num);
for (int i = 0; i < num; i++) {
targetY[i] = *(sY + i);
i

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

    ..A..H.     36864  2018-04-05 15:22  InterpolationC\.vs\Test\v14\.suo

     文件     108544  2018-04-05 15:15  InterpolationC\Debug\Test.exe

     文件    1291288  2018-04-05 15:15  InterpolationC\Debug\Test.ilk

     文件    1757184  2018-04-05 15:15  InterpolationC\Debug\Test.pdb

     文件        942  2018-04-05 15:15  InterpolationC\Test\Debug\Test.log

     文件     273199  2018-04-05 15:15  InterpolationC\Test\Debug\Test.obj

     文件        604  2018-04-05 15:15  InterpolationC\Test\Debug\Test.tlog\CL.command.1.tlog

     文件      15220  2018-04-05 15:15  InterpolationC\Test\Debug\Test.tlog\CL.read.1.tlog

     文件        396  2018-04-05 15:15  InterpolationC\Test\Debug\Test.tlog\CL.write.1.tlog

     文件       1066  2018-04-05 15:15  InterpolationC\Test\Debug\Test.tlog\link.command.1.tlog

     文件       2722  2018-04-05 15:15  InterpolationC\Test\Debug\Test.tlog\link.read.1.tlog

     文件        374  2018-04-05 15:15  InterpolationC\Test\Debug\Test.tlog\link.write.1.tlog

     文件        195  2018-04-05 15:15  InterpolationC\Test\Debug\Test.tlog\Test.lastbuildstate

     文件     396288  2018-04-05 15:15  InterpolationC\Test\Debug\vc140.idb

     文件     479232  2018-04-05 15:15  InterpolationC\Test\Debug\vc140.pdb

     文件        996  2018-04-05 11:03  InterpolationC\Test\Lagrange.h

     文件        945  2018-04-05 10:57  InterpolationC\Test\Liner.h

     文件       3746  2018-04-05 11:28  InterpolationC\Test\Test.cpp

     文件       7431  2018-04-05 00:35  InterpolationC\Test\Test.vcxproj

     文件       1334  2018-04-05 00:35  InterpolationC\Test\Test.vcxproj.filters

     文件        496  2018-04-05 10:33  InterpolationC\Test\WriteFile.h

     文件       1675  2018-04-05 15:05  InterpolationC\Test\YangTiao.h

     文件       1294  2018-04-03 23:34  InterpolationC\Test.sln

     文件    8630272  2018-04-05 15:22  InterpolationC\Test.VC.db

     目录          0  2018-04-03 23:34  InterpolationC\.vs\Test\v14

     目录          0  2018-04-05 15:15  InterpolationC\Test\Debug\Test.tlog

     目录          0  2018-04-03 23:34  InterpolationC\.vs\Test

     目录          0  2018-04-05 15:15  InterpolationC\Test\Debug

    ...D.H.         0  2018-04-03 23:34  InterpolationC\.vs

     目录          0  2018-04-05 10:26  InterpolationC\Debug

............此处省略8个文件信息

评论

共有 条评论