数值分析--数值分析--Newton迭代法求解非线性方程实验.docVIP

数值分析--数值分析--Newton迭代法求解非线性方程实验.doc

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE 1 实验报告一Newton迭代法求解非线性方程实验 一、实验内容 在公元1225年,比萨的数学家Leonardo(又称Fibonacci)宣布方程的一个根为,当前颇为轰动,但没有人知道他是用什么办法得到的. 基于这个简单背景,希望我们能够利用Newton法,来真切地体会这一结果.并取初值或. 二、实验算法 第一步:非线性方程取迭代函数为 . 取恰当初值,确定跟的容许误差,,以及最大迭代的次数N. 第二步:用变量k 作为所进行的步数,即: 并给定的值 {//计算迭代函数: //对和进行与容许误差比较: <或者<,则跳出循环体,否则继续循环. 直至满足容许误差条件或者达到最大步数跳出循环}. 第三步:跳出循环,输出方程的近似根:. 三、变量说明 N代表进行的最大步数,k是代表当前进行的步数.c,d分别代表<的真值和<的真值;a[N]代表[N]. p和q分别代表,m,n分别代表跟的容许误差和的容许误差,a[0]代表初值. 四、实验原理和流程图 实验原理 解非线性方程, Newton 法是利用的近似取代,认为近似方程的根即为原方程的根,即 在一定条件下,,并取前两项即并将其记为(近似方程), 显然的根为 ; 所以有 即可以通过给定初值进行迭代,于是有: 即为牛顿迭代公式. 开始流程图 开始 是否 是 否 是 是 否否 否 否 是 是 源程序代码 #include<stdio.h> #include<math.h> #define N 100 main() { int k,c,d; long double a[N],p,q,m=0.0000001, n=0.0000001; for(k=1;k<N;k++) {a[0]=1.0; p=a[k-1]*a[k-1]*a[k-1]+2*a[k-1]*a[k-1]+10*a[k-1]-20; q=3*a[k-1]*a[k-1]+4*a[k-1]+10; a[k]=a[k-1]-p/q; c=(a[k]-a[k-1])<m&&(a[k]-a[k-1])>-m; d=(p<n)&&(p>-n); if((c||d)==1) break; } printf("%Lf\n", a[k]); } 实验结果 七、上机实验体会: 通过这次数值分析实验,在程序编译中我出现了很多问题,如 EQ \o\ac(○,1)单个变量名不能和数组变量的字母相同. EQ \o\ac(○,2)C语言程序不能识别平方,只能用连乘. EQ \o\ac(○,3)给数组赋初值的时候,不能在定义数组处定义.等 在此次试验也让我更进一步了解了数学与计算机的结合,并更懂得了程序的方便性,我也认识到,自己在C语言方面的匮乏,以后在数学算法的基础上要加强对计算机语言的学习,并将所学知识结合,解决实际问题. 实验报告二 矩阵的Doolittle分解实验 一、实验内容 试对某经济系统在一个生产周期内的直接消耗系数矩阵 进行Doolittle分解. 二、实验算法 第一步: 输入矩阵的阶数,和系数矩阵; 第二步:设置循环 ,计算,. 最外部循环:for(k=0;k<n;k++). 内部循环包括两部分: 第一部分for(j=k;j<n;j++) {s=0.0; for (r=0;r<k-1;r++) {s=s+l[k][r]*u[r][j];} u[k][j]=a[k][j]-s; printf("%Lf\n",u[k][j]); }//计算出u[i][j]并输出. 第二部分 for(i=k+1;i<n;i++) {s=0.0; for(r=0;r<k-1;r++) {s=s+l[k][r]*u[r][k];} l[i][k]=(a[i][k]-s)/u[k][k]; printf("%Lf\n",l[i][k]); }//计算出l[i][j]并输出. 三、变量说明 n代表系数矩阵的阶数. i,j,k作为角标.s代表和. 实验原理 矩阵分解是把n 阶方阵A(一般是方程组的系数矩阵)分解成两个或以上简单矩阵的乘积,然后对矩阵A的操作就转化为对这些简单矩阵的操作.Doolittle分解就是矩阵分解的一种,把矩阵A写成下

文档评论(0)

132****1393 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档

相关课程推荐