数值分析作业(C语言编程实现)(共12页)_第1页
数值分析作业(C语言编程实现)(共12页)_第2页
数值分析作业(C语言编程实现)(共12页)_第3页
数值分析作业(C语言编程实现)(共12页)_第4页
数值分析作业(C语言编程实现)(共12页)_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、#include <stdio.h>#include <math.h>double f(double x)double ans; ans=exp(x); return ans;void main()double a=1,b=3,error=0.0001,t2020,h,c;int i,j,k,m,n;h=b-a;t00=h*(f(a)+f(b)/2;k=1;while(1)t0k=0;m=1;for(j=0;j<k-1;j+)m=m*2;for(i=1;i<=m;i+)t0k=t0k+h*f(a+(i-0.5)*h);t0k=(t0k+t0k-1)/2;fo

2、r(j=1;j<=k;j+)c=1;for(n=0;n<j;n+)c=c*4;tjk-j=(c*tj-1k-j+1-tj-1k-j)/(c-1);if(fabs(tk0-tk-10)<error)printf("n积分结果 I %lfn",tk0); break;elseh=h/2;k+;#include <stdio.h>#include <math.h>double f(double t)double ans;ans=pow(cos(t),1.0/3);return ans;void main()double x=0,eslon

3、g=0.000001,x0;int N=20,i;printf("n近似初值 x0 = %lfn",x);for(i=0;i<N;i+)x0=x;x=f(x);printf(" x%d = %lfn",i+1,x);if(fabs(x-x0)<eslong)break;if(fabs(x-x0)<eslong)printf("得到近似结果为 x %lfnn",x,i);elseprintf("迭代失败n");#include <stdio.h>#include <math.h&g

4、t;double a=0,b=1,x,y=0,h=0.1,k1,k2,k3,k4;int i,N;double f(double t,double s)double ans;ans=1+t*t;return ans;void main()N=(b-a)/h;x=a; printf("n 初值为 (x0,y0) = ( %.8f , %.8f )n",x,y);for(i=0;i<N;i+)k1=f(x,y);k2=f(x+h/2,y+h*k1/2);k3=f(x+h/2,y+h*k2/2);k4=f(x+h,y+h*k3);y=y+h*(k1+2*(k2+k3)+k4

5、)/6;x=x+h; printf(" 第%d次输出结果为 (x%d,y%d) = ( %.8f , %.8f )n",i+1,i+1,i+1,x,y);#include <stdio.h>void main()double datax4=1.2,2.9,4.6,5.8,datay10=14.84,33.71,58.36,79.24,l3,x=1.5,y;int i,j;y=0;for(i=0;i<=3;i+) li=1;for(j=0;j<i;j+)li=(x-dataxj)/(dataxi-dataxj)*li;for(j=i+1;j<=3

6、;j+)li=(x-dataxj)/(dataxi-dataxj)*li;y=y+datayi*li;printf("n f(x)在 x = %f 处的近似值为: y = %fn",x,y);#include <stdio.h>void main()double datay9=11.7,14.87,21.44,31.39,44.73,61.46,81.57,105.11,131.91;int m=2,i,j,k;double p,data94,a34,datax9=1.2,2.3,3.4,4.5,5.6,6.7,7.8,8.9,10.0;for(i=0;i<

7、;9;i+)for(j=1;j<2*m+1;j+)dataij=1;for(k=0;k<j;k+)dataij=dataij*dataxi;for(i=0;i<m+1;i+)for(j=0;j<m+1;j+)aij=0;for(k=0;k<9;k+) aij=aij+dataki+j;a00=9;a0m+1=0;for(i=0;i<9;i+)a0m+1=a0m+1+datayi;for(i=1;i<m+1;i+)aim+1=0;for(j=0;j<9;j+)p=datayj;for(k=0;k<i;k+)p=p*dataxj;aim+1=a

8、im+1+p; /生成m+1行,m+2列增广矩阵/for(i=0;i<m+1;i+) /显示方程组/for(j=0;j<m+2;j+)if(j!=m+1)printf("(%f)a%d ",aij,j);if(j!=m)printf("+ ");elseprintf("= %f n",aij);for(i=0;i<m;i+) /高斯消去法/ if(aii!=0)for(j=i+1;j<m+1;j+)aji=aji/aii;for(k=i+1;k<m+2;k+)ajk=ajk-aik*aji;elsebre

9、ak;if(amm!=0&&i=m)amm+1=amm+1/amm;for(i=2;i<=m+1;i+)for(j=1;j<i;j+)am+1-im+1=am+1-im+1-am+1-im+1-j*am+1-jm+1; am+1-im+1=am+1-im+1/am+1-im+1-i; printf("方程组的解为:n");for(j=0;j<m+1;j+)printf("a%d = %fn",j,ajm+1);printf("拟合多项式为:n");printf("P%d(x) = (%f)

10、+ (%f)x + (%f)x2n",m,a0m+1,a1m+1,a2m+1);elseprintf("数据有误!n");列主元素法#include <stdio.h>#include <math.h>void main()double a34=1,-2,-1,3,-2,10,-3,15,-1,-2,5,10,mov,comp;int i,j,k,nrow;for(i=0;i<2;i+) comp=fabs(aii);for(k=i;k<3;k+) /比较绝对值大小并进行主元列交换/if(fabs(aki)>=comp)n

11、row=k; comp=fabs(aki);for(j=0;j<=3;j+)mov=aij;aij=anrowj;anrowj=mov;printf("方程第%d行互换位置后如下n",i+1);for(j=0;j<3;j+)printf("(%f)x1 + (%f)x2 + (%f)x3 = %fn",aj0,aj1,aj2,aj3);if(aii!=0)for(j=i+1;j<3;j+)aji=aji/aii;for(k=i+1;k<=3;k+)ajk=ajk-aik*aji;aji=0;printf("方程经%d次消

12、元如下n",i+1);for(j=0;j<3;j+)printf("(%f)x1 + (%f)x2 + (%f)x3 = %fn",aj0,aj1,aj2,aj3);elsebreak;if(a22!=0&&i=2)printf("方程化简得n");for(i=0;i<3;i+)printf("(%f)x1 + (%f)x2 + (%f)x3 = %fn",ai0,ai1,ai2,ai3);a23=a23/a22;for(i=2;i<=3;i+)for(j=1;j<i;j+)a3-i3

13、=a3-i3-a3-i3-j*a3-j3; a3-i3=a3-i3/a3-i3-i; printf("方程组的解为:n");for(j=0;j<3;j+)printf("x%d = %fn",j+1,aj3);elseprintf("数据有误!n");Jacobi迭代法#include <stdio.h>#include <math.h>void main() double a37=1,-2,-1,3,-2,10,-3,15,-1,-2,5,10,error=0.000001,norm;int N=423

14、,i,j,k;a04=0,a14=0,a24=0;for(i=0;i<3;i+) /把a矩阵转化为b矩阵/ai6=aii;for(j=0;j<3;j+)aij=-aij/ai6;ai3=ai3/ai6;aii=0;printf("化为b矩阵如下n");for(i=0;i<3;i+)printf("%f %f %f %fn",ai0,ai1,ai2,ai3);for(i=1;i<N;i+)for(j=0;j<3;j+)aj5=0;for(k=0;k<3;k+)aj5=ak4*ajk+aj5;aj5=aj5+aj3;nor

15、m=0;for(k=0;k<3;k+)norm=norm+fabs(ak4-ak5);if(norm<error)break;elsefor(k=0;k<3;k+)ak4=ak5; if(norm<error)printf("计算结果为n"); for(i=0;i<3;i+)printf(" x%d = %.3fn",i+1,ai5); elseprintf("迭代失败n");现场考试题目1#include "stdio.h"#include "math.h"dou

16、ble f(double x)double ans;ans=exp(x);return(ans);void main()double a=-1,b=1,error=0.0001,m=1,h,T0,T,F;int k;h=(b-a)/2;T0=h*(f(a)+f(b);while(1)F=0;for(k=1;k<=pow(2.0,m-1);k+)F=F+f(a+(2*k-1)*h);T=T0/2+h*F;if(fabs(T-T0)<error)break;m+;h=h/2;T0=T;printf("积分结果为I %fn",T);题目2#include "stdio.h"double f(double t,double s)double ans;ans=1+t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论