2023年合肥工业大学计算机专业计算方法实验报告.doc

上传人:鲁** 文档编号:554893343 上传时间:2023-11-28 格式:DOC 页数:44 大小:838.54KB
返回 下载 相关 举报
2023年合肥工业大学计算机专业计算方法实验报告.doc_第1页
第1页 / 共44页
2023年合肥工业大学计算机专业计算方法实验报告.doc_第2页
第2页 / 共44页
2023年合肥工业大学计算机专业计算方法实验报告.doc_第3页
第3页 / 共44页
2023年合肥工业大学计算机专业计算方法实验报告.doc_第4页
第4页 / 共44页
2023年合肥工业大学计算机专业计算方法实验报告.doc_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《2023年合肥工业大学计算机专业计算方法实验报告.doc》由会员分享,可在线阅读,更多相关《2023年合肥工业大学计算机专业计算方法实验报告.doc(44页珍藏版)》请在金锄头文库上搜索。

1、合肥工业大学计算机与信息学院实验报告课 程:计算方法专业班级: 学 号: 姓 名: Java界面其实都不难按照程序流程图就可以完毕了实验一插值与拟合一、 实验目的(1) 明确插值多项式和分段插值多项式各自的优缺陷;(2) 编程实现三次样条插值算法,分析实验结果体会高次插值产生的龙格现象;(3) 理解最小二乘拟合,并编程实现线性拟合,掌握非线性拟合转化为线性拟合的方法(4) 运用常用的插值和拟合方法解决实际问题。二、 实验内容(1)对于f(x)=1/(1+x*x)实现三次样条插值(2)实现最小二乘法的直线拟合数据如下:165123150123141187126172125148三、 基本原理(计

2、算公式)(1)三次样条插值在每个内节点上具有2阶导数。(2) 最小二乘法拟合直线为y=a+bx,而a,b有如下等式(N为给出的数据点的总个数) ; 四、算法设计与实现(流程图,关键点)最小二乘法直线拟合:输入数据后,按照公式计算a,b。用得到的拟合直线计算预测点的近似函数值。五、输入与输出(1)三次样条插值输入:区间长度,n+1个数据点,预测点输出:预测点的近似函数值,精确值,及误差(2)最小二乘法直线拟合输入:n个数据点,预测点输出:预测点的近似函数值六、结果讨论和分析代码三次样条插值#include#include #define N 10using namespace std;doubl

3、e u0(double x)return (x-1)*(x-1)*(2*x+1);double u1(double x)return x*x*(3-2*x);double v0(double x)return x*(x-1)*(x-1);double v1(double x)return x*x*(x-1);double s3(double x,double y,double y1,double m,double m1,double h)return u0(x)*y+u1(x)*y1+h*v0(x)*m+h*v1(x)*m1;double f(double x) return 1/(1+x*x

4、); int main() ifstream fin; fin.open(E:t.txt); if(!fin) couterror opening input streamendl; system(pause); return 0; double xN+1,yN+1,mN+1,AN,BN,CN;double hN;double aN,bN;double f0,fn;double temp;int i;for(i=0;ixiyi;finf0fn;h0=x1-x0;for(i=1;iN;i+)hi=xi+1-xi;ai=hi-1/(hi-1+hi);bi=3*(1-ai)*(yi-yi-1)/hi

5、-1+ai*(yi+1-yi)/hi);m1=b1-(1-a1)*f0;mN-1=bN-1-aN-1*fn;for(i=2;iN-1;i+)mi=bi; for(i=1;iN;i+)Bi=2;Ci=ai;for(i=2;i0;i-)mi=mi-Ci*mi+1;coutplease:(输入插值节点在x0到xN范围内)temp) double tt=temp;if(tempxN)cout插值节点为tt超过插值范围endl;continue;for(i=1;i=N;i+)if(tempxi)break;temp=(temp-xi-1)/hi-1; temp=s3(temp,yi-1,yi,mi-1,

6、mi,hi-1); cout插值节点为tt精确值为f(tt)插值结果为temp误差为f(tt)-tempendl; system(pause); fin.close();return 0;最小二乘法的直线拟合#include#include#define n 5using namespace std;double sum(double x,int k) int i; double sum=0; for(i=0;ik;i+) sum=sum+xi; return sum; double sum2(double x,int k) int i; double sum=0; for(i=0;ik;i+

7、) sum=sum+xi*xi; return sum; double sumxy(double x,double y,int k) int i; double sum=0; for(i=0;ik;i+) sum=sum+xi*yi; return sum; int main() ifstream fin; fin.open(E:t.txt); if(!fin) couterror opening input streamendl; system(pause); return 0; double xn,yn,a,b; double x0,y0; int i; for(i=0;ixiyi; b=

8、(n*sumxy(x,y,n)-sum(x,n)*sum(y,n)/(n*sum2(x,n)-sum(x,n)*sum(x,n); a=(sum(y,n)-b*sum(x,n)/n; cout最小二乘法直线拟合得到a: a,b: b,拟合直线为y=a+bxendl; coutx0) y0=a+b*x0; cout当x=x0,y=y0endl; cout请输入插值节点x:; system(pause); fin.close(); return 0;实验二数值积分一、 实验目的(1) 熟悉复化梯形方法、复化Simpson方法、梯形递推算法、龙贝格算法;(2) 能编程实现龙贝格算法和中点加速;(3)

9、 理解并掌握自适应算法和收敛加速算法的基本思想;(4) 分析实验结果体会各种方法的精确度,建立计算机求解定积分问题的感性结识二、 实验内容(1) 用龙贝格算法计算(2) 用中点加速方法计算的一阶导数三、 基本原理(计算公式)(1)龙贝格算法梯形递推公式加权平均公式: (2) 中点加速中点公式: G(h)=(f(a+h)-f(a-h)/2/h加权平均:G1(h)=4*G(h/2)/3-G(h)/3 G2(h)=16*G1(h/2)/15-G1(h)/15 G3(h)=64*G2(h/2)/63-G2(h)/63四、 算法设计与实现(流程图,关键点)中点加速图2.2梯形递推算法流程图图2.3龙贝格

10、算法流程图:输入数据后根据公式计算导数值五、输入与输出(1) 用龙贝格算法计算输入:积分区间,误差限输出:序列Tn,Sn,Cn,Rn及积分结果(2) 用中点加速方法计算的一阶导数输入:求导节点,步长 输出:求得的导数值,精确值六、结果讨论和分析代码龙贝格算法#include#include#includeusing namespace std;double f(double x) if(x=0)return 1; return sin(x)/x; int main() ifstream fin; fin.open(E:t.txt); if(!fin) couterror opening input streamabe; cout积分区间为a,b,规定精度为eendl;

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 商业计划书

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号