• 大小: 79.6MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-03-09
  • 语言: 其他
  • 标签: 计算方法  

资源简介

江苏科技大学计科专业,计算方法实验,插值方法实验代码包,详细过程。

资源截图

代码片段和文件信息

#include “stdafx.h“
#include “CIntegration.h“
#include “math.h“
#include “iostream“
using namespace std;

CIntegration::CIntegration()
{
}


CIntegration::~CIntegration()
{
}

CIntegration::CIntegration(int ax int ay int len)//原点坐标 
{
p_X = new double[len];
p_Y = new int[len];
for (int i = 0; i {
p_X[i] = i / 80.0;
}
}
CIntegration::CIntegration(double ma double mb)
{
a = ma;                 //a、b分别为积分区间左右端点
b = mb;
n = 1;                  //区间二分个数
h = b - a;                //步长
x = new double[n + 1];     //存放区间二分点
x[0] = a;
x[1] = b;

count = 0;
tsize = 0;
}
double CIntegration::f(double xx)//被积函数
{
double mtemp = sin(xx);
return mtemp;
}
double CIntegration::Sum(void)
{
double sum = 0;
for (int i = 0; i {
sum += f((x[i] + x[i + 1]) / 2);
}
return sum;
}
void CIntegration::Divide(void)//该函数实现区间二分和步长更新
{
count = 0;
tempx = new double[100];
double *px = new double[2 * n + 1];
//double *tempx=new double[n+1];
for (int i = 0; i {
px[2 * i] = x[i];
px[2 * i + 1] = (x[i] + x[i + 1]) / 2;
tempx[count++] = (x[i] + x[i + 1]) / 2;
}
px[2 * n] = x[n];
delete[]x;
x = px;
n = n * 2;
h = h / 2;
}
double CIntegration::T1ToT2(double T1)
{
double T2 = 0;
T2 = 1 / 2.0*T1 + h / 2.0 * Sum();  //单次二分过程
return T2;
}
double CIntegration::Trapezium_Recurrence(double e)//精度
{
double T1 T2;
T1 = h / 2.0 *(f(a) + f(b));
T2 = T1ToT2(T1);
Divide();
while (fabs(T2 - T1) >= e)  //绝对差值
{
T1 = T2;
T2 = T1ToT2(T1);
Divide();
}
return T2;
}
void CIntegration::init(void)
{
n = 1;
h = b - a;
double *xx = new double[n + 1];
x = xx;
x[0] = a;
x[1] = b;
}
double CIntegration::Trapezium_Recurrence(int N)//迭代一定次数的梯形法递推函数
{
double T1 T2;
if (N == 1)
{
T1 = h / 2.0 *(f(a) + f(b));
return T1;
}
if (N == 2)
{
T1 = h / 2.0 *(f(a) + f(b));
T2 = T1ToT2(T1);
return T2;
}
init();
T1 = h / 2.0 *(f(a) + f(b));
T2 = T1ToT2(T1);
Divide();
for (int i = 3; i <= N; i++)
{
T1 = T2;
T2 = T1ToT2(T1);
Divide();
}
return T2;
}
double CIntegration::R1(double* T int N)//注意 N>=3 下标 要保证T里面有N+1个元素
{
double *S = new double[N + 1];
double *C = new double[N + 1];
for (int i = 0; i <= N - 1; i++)
{
S[i] = (4 * T[i + 1] - T[i]) / 3.0;
}
for (int i = 0; i <= N - 2; i++)
{
C[i] = (16 * S[i + 1] - S[i]) / 15.0;
}
double R = (64 * C[N - 2] - C[N - 3]) / 63.0;
delete[]S;
delete[]C;
return R;
}
double CIntegration::Romberg(double e)//调用函数R1可实现迭代的龙贝格函数
{
tsize = 0;
int num = 5;
double r1 = 0 r2 = 0;
sT = new double[100];
for (int i = 1; i <= 4; i++)
{
sT[tsize++] = Trapezium_Recurrence(i);
}
r2 = R1(sT 3);
if (tsize - 1 == 3)
{
r1 = r2;
}
while (fabs(r2 - r1) >= e)
{
r1 = r2;
sT[tsize++] = Trapezium_Recurrence(num);// num 次数    
r2 = R1(sT num - 1);//num-1 下标    
num++;
}
//delete []sT;
re

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-12-03 20:41  Integration\
     目录           0  2017-12-03 13:47  Integration\.vs\
     目录           0  2017-12-03 13:47  Integration\.vs\Integration\
     目录           0  2017-12-12 14:45  Integration\.vs\Integration\v15\
     文件       48128  2017-12-12 14:45  Integration\.vs\Integration\v15\.suo
     文件    75051008  2017-12-12 14:45  Integration\.vs\Integration\v15\Browse.VC.db
     目录           0  2017-12-03 15:33  Integration\.vs\Integration\v15\ipch\
     目录           0  2017-12-12 14:40  Integration\.vs\Integration\v15\ipch\AutoPCH\
     目录           0  2017-12-12 14:40  Integration\.vs\Integration\v15\ipch\AutoPCH\_SFI_9AC81674-1CAF-47C0-9725-5EE28ABB43B0_-be62ec4\
     目录           0  2017-12-12 14:40  Integration\.vs\Integration\v15\ipch\AutoPCH\_SFI_9AC81674-1CAF-47C0-9725-5EE28ABB43B0_-be62ec4\AFXMEM-85603dc8\
     目录           0  2017-12-03 15:32  Integration\.vs\Integration\v15\ipch\INTEGRATION-5d963a3e\
     文件   105644032  2017-12-12 14:21  Integration\.vs\Integration\v15\ipch\INTEGRATION-5d963a3e\INTEGRATION-3d746330.ipch
     目录           0  2017-12-12 14:20  Integration\Debug\
     文件    10181632  2017-12-12 14:21  Integration\Debug\Integration.exe
     文件    19427632  2017-12-12 14:21  Integration\Debug\Integration.ilk
     文件    23252992  2017-12-12 14:44  Integration\Debug\Integration.pdb
     目录           0  2017-12-05 21:12  Integration\Integration\
     文件        3118  2017-12-05 21:12  Integration\Integration\CIntegration.cpp
     文件         568  2017-12-03 14:02  Integration\Integration\CIntegration.h
     目录           0  2017-12-12 14:19  Integration\Integration\Debug\
     文件       39443  2017-12-12 14:19  Integration\Integration\Debug\CIntegration.obj
     文件        1873  2017-12-03 21:47  Integration\Integration\Debug\Integration.Build.CppClean.log
     文件         239  2017-12-12 14:21  Integration\Integration\Debug\Integration.log
     文件       70206  2017-12-03 21:47  Integration\Integration\Debug\Integration.obj
     文件    55377920  2017-12-03 21:47  Integration\Integration\Debug\Integration.pch
     文件     1432688  2017-12-03 21:47  Integration\Integration\Debug\Integration.res
     目录           0  2017-12-12 14:21  Integration\Integration\Debug\Integration.tlog\
     文件        3438  2017-12-12 14:19  Integration\Integration\Debug\Integration.tlog\CL.command.1.tlog
     文件      118650  2017-12-12 14:19  Integration\Integration\Debug\Integration.tlog\CL.read.1.tlog
     文件        3530  2017-12-12 14:19  Integration\Integration\Debug\Integration.tlog\CL.write.1.tlog
     文件         228  2017-12-12 14:21  Integration\Integration\Debug\Integration.tlog\Integration.lastbuildstate
............此处省略28个文件信息

评论

共有 条评论