资源简介
江苏科技大学计科专业,计算方法实验,插值方法实验代码包,详细过程。
代码片段和文件信息
#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个文件信息
相关资源
- 计算方法 梯形抛物线公式求积分
- 计算方法B上机报告.docx
- 电力系统电压暂降分析计算方法综述
- 双极性单相SPWM逆变器滤波电感电流值
- 电表常用脉冲常数计算方法
- 合肥工业大学计算方法实验报告.zip
- 计算方法模拟试题及参考答案.doc
- Abaqus混凝土本构计算方法
- 计算方法 实验报告 哈工大版
- 计算方法复习题及答案
- 分形维数的三种计算方法及改进方法
- 计算方法-----的一些经典程序
- 解线性方程组的迭代法 数值计算方法
- 《弹性流体动压润滑 数值计算方法》
- 西交大计算方法2010
- 数值计算方法课后习题及答案
- 计算方法试题和答案
- 计算方法程序题计算方法程序题
- 现代优化计算方法课件解密版
- pt100高精度计算方法
- C8051F020定时器定时时间计算方法
- 三角形网格的曲率计算方法,英语文
- 哈工大计算方法实验
- 风电场风速概率分布参数计算方法的
- -Lyapunov指数的计算方法.doc
- 数值计算方法上机实验报告完全版亲
- 改进的欧拉方法和四阶-龙格库塔解初
- 哈工大计算方法实验报告
- 寻址范围解释及计算方法
- 计算方法A上机作业
评论
共有 条评论