数值分析编程题c语言汇总_第1页
数值分析编程题c语言汇总_第2页
数值分析编程题c语言汇总_第3页
数值分析编程题c语言汇总_第4页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、数值分析实习报告- 1 -数值分析实习报告上机实习题一一、题目: b与已知A12.38412,2.115237,-1.061074,1.112336,-0.113584,0.718719,1.742382,3.067813,-2.0317432.115237,19.141823,-3.125432,-1.012345,2.189736,1.563849,-0.784165,1.112348,3.123124-1.061074,-3.125432,15.567914,3.123848,2.031454,1.836742,-1.056781,0.336993,-1.0101 031.112336,

2、-1.012345,3.123848,27.108437,4.101011,-3.741856,2.101023,-0.71828,-0.037585A=-0.113584,2.189736,2.031454,4.101011,19.897918,0.431637,-3.111223,2.121314,1.7841370.718719,1.563849,1.836742,-3.741856,0.431637,9.789365,-0.103458,-1.103456,0.2384171.742382,-0.784165,-1.056781,2.101023,-3.111223,-0.103458

3、,14.7138465,3.123789,-2.2134743.067813,1.112348,0.336993,-0.71828,2.121314,-1.103456,3.123789,30.719334,4.446782-2.031743,3.123124,-1.010103,-0.037585,1.784317,0.238417,-2.213474,4.446782,40.00001b=2.1874369,33.992318,-25.173417,0.84671695,1.784317,-86.612343,1.1101230,4.719345,-5.67843921用 Househol

4、d 变换,把A 化为三对角阵B (并打印(0)=0, 迭代9 次) =1.4,X 。 2用超松弛法求解BX=bB )。(取松弛因子3用列主元素消去法求解BX=b 。二、解题方法的理论依据:1 、用 Householder变换的理论依据 1令 A0=A,a(ij)1=a(ij),已知 Ar_1 即 Ar_1=a(ij)r 2 Sr=sqrt(pow(a,2) 3 a(r)=Sr*Sr+abs(a(r+1,r)*Sr 4 y(r)=A(r_1)*u?/a? 5 Kr=(/2)*Ur的转置 *Yr/a? 6 Qr=Yr-Kr*Ur 7 Ar=A(r-1)-(Qr*Ur的转置 +Ur*Qr 的转置 )

5、 r=1,2, ,n-22 、用超松弛法求解(m)(m-1)其基本思想:在高斯方法已求出x,x的基础上,组合新的序列,从而加快收敛速度。其算式:Bi i 1 X i 1Bi i X iBi i1 X i 1 biBi i 1B i i 1b i X iX i 1X 0i1Bi iBi iB i i X i wX i X 0iX 0i X i 其中是超松弛因子,当>1 时,可以加快收敛速度3 、用消去法求解用追赶消去法求Bx=b 的方法:d1i 1 bi a1i 2 Bi 1 i ,- 2 -数值分析实习报告1i i1i1 Bib 1 1 Bi i c ,q10=0 , u10=0 ,8

6、,i),i 1,2ib1a1i q11q1ici(u1i(d1ia1iu1i)( b1i a1iq1i1),i 1,2,9x9=u19xi q1i x i1 u1i, i 8,7,1三、 1计算程序:#include math.h#include stdio.h#define ge 8void main()int sign(double x);double a9=12.38412,2.115237, -1.061074,1.112336, -0.113584,0.718719,1.742382,3.067813, -2.031743, 2.115237,19.141823, -3.125432

7、, -1.012345,2.189736,1.563849, -0.784165,1.112348,3.123124, -1.061074, -3.125432,15.567914,3.123848,2.031454,1.836742, -1.056781,0.336993, -1.010103, 1.112336, -1.012345,3.123848,27.108437,4.101011, -3.741856,2.101023, -0.71828,-0.037585, -0.113584,2.189736,2.031454,4.101011,19.897918,0.431637, -3.1

8、11223,2.121314,1.784317, 0.718719,1.563849,1.836742, -3.741856,0.431637,9.789365, -0.103458, -1.103456,0.238417, 1.742382, -0.784165, -1.056781,2.101023, -3.111223,-0.103458,14.713846,3.123789, -2.213474, 3.067813,1.112348,0.336993, -0.71828,2.121314, -1.103456,3.123789,30.719334,4.446782, -2.031743

9、,3.123124, -1.010103, -0.037585,1.784317,0.238417, -2.213474,4.446782,40.00001;double k,h,s,w;int i,j,n,m,g;double u9,x19,y9,q9,b1910,x9;double b9=2.1874369,33.992318, -25.173417,0.84671695,1.784317, -86.612343,1.1101230,4.719345, -5.6784392;for(j=0;j<7;+j)/*Household变换*/s=0.0;for(i=j+1;i<9;+i

10、)s=s+aij*aij;s=sqrt(s);h=(aj+1j>0)?(s*s+s*aj+1j):(s*s-s*aj+1j);for(g=0;g<9;+g)- 3 -数值分析实习报告if (g<=j)ug=0;else if (g=j+1)ug=aj+1j+s*sign(aj+1j);else ug=agj;for(m=0;m<9;+m)ym=0;for(n=0;n<9;+n)ym=ym+amn*un;ym=ym/h;k=0;for(i=0;i<9;+i)k=k+ui*yi;k=0.5*k/h;for(i=0;i<9;+i)qi=yi-k*ui;for

11、(n=0;n<9;+n)for(m=0;m<9;+m)amn=amn-(qm*un+um*qn);printf(Household:n);for(i=0;i<9;+i)for(j=0;j<9;+j)if (j%9=0);printf(% -9.5f,aij););w=1.4; /* 超松弛法 */ for(i=0;i<9;i+)x1i=0;for(i=0;i<9;i+)for(j=0;j<9;j+)if(i=j)b1ij=0;else b1ij= -aij/aii;for(i=0;i<9;i+)b1i9=bi/aii;- 4 -数值分析实习报告f

12、or(n=0;n<9;n+)for(i=0;i<9;i+)s=0;for(j=0;j<9;j+)s=s+b1ij*x1j;s=s+b1i9;x1i=x1i*(1-w)+w*s;for(i=0;i<9;i+)if (i=5);牰湩晴尨 ?屦椬砬嬱嵩 ?);u0=a00;/* 以下是消去法*/y0=b0;for(i=1;i<9;i+)qi=aii-1/ui -1;ui=aii-qi*ai -1i;yi=bi-qi*yi-1;xge=yge/uge;for(i=ge -1;i>=0;i - )xi=(yi-aii+1*xi+1)/ui;for(i=0;i<9

13、;i+)if (i=5);printf( x%d=% -10.6f,i,xi);int sign(double x)intz;z=(x>=(1e -6)?1: -1);return(z);2打印结果:Household:12.38412 -4.89308 0.000000.000000.000000.000000.000000.000000.00000- 5 -数值分析实习报告-4.89308 25.39842 6.49410 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 6.49410 20.61150 8.24393

14、0.00000 0.00000 0.00000 0.00000 0.000000.000000.000008.243930.000000.00000-0.000000.000000.000000.000000.000000.000000.000000.000000.000000.000000.000004.5345016.00612 4.881440.000000.000000.000000.000000.000000.000000.000004.8814426.01332 -4.50363 -0.000000.000000.000000.000000.000000.000000.00000-

15、4.50363 21.25406 4.504500.000000.000000.00000-0.00000 0.000000.00000-0.00000 4.5045014.53412x0=1.073409x1=2.272579x2= -2.856601x3=2.292514x4=2.112165x5= -6.422586x6=1.357802x7=0.634259x8= -0.587042x0=1.075799x1=2.275744x2= -2.855515x3=2.293099x4=2.112634x5= -6.423838x6=1.357923x7=0.634244x8= -0.5872

16、66四、问题讨论:此程序具有很好的通用性。在GS 方法的基础上,已经求出重新组合得新的序列,而在此新序列收敛速度加快。x 的第m 解,第m-1基础上,经过上机实习题二一、题目:已知函数值如下表:x12345f(x)00.69314781.09861231.38629441.6094378x678910f(x)1.7917951.94591012.0794452.19722462.3025851f'(x)f'(1)=1f'(0)=0.1试用三次样条插值求f(4.563) 及 f (4.563) 的近似值。二、解题方法的理论依据:任意划分的三弯矩插值法以及方程组解法中的三对

17、角阵追赶算法。应用三次样条插值法能够对函数产生很好的逼近效果。而追赶算法又具有计算量少、方法简单、算法稳定的特点。方法应用条件:适用于求复杂函数在给定区间内某一点的函数值,给出函数f(x) 在区间 a,b 中的n 个插值点,并且给出函数在区间端点处的值。三、 1计算程序:#include stdio.h#include math.h#define n 11- 6 -数值分析实习报告#define ge 11void main()int i,m;double e,s,E,q12,u12,y12,c12,w12;double b12=2,0,4.15888308,6.5916738,8.31776

18、64,9.6566268,10.750557,11.6754606,12.47667,13.1833476,13.8155106,14.0155106;ann -1=4;ann=2;for(i=1;i<11;i+)aii -1=1;aii=4;aii+1=1;u0=a00;/* 消去法求ci*/y0=b0;for(i=1;i<12;i+)qi=aii-1/ui -1;ui=aii-qi*ai -1i;yi=bi -qi*yi-1;cge=yge/uge;for(i=ge -1;i>=0;i - )ci=(yi -aii+1*ci+1)/ui;牰湩晴尨请输入要插的值:);sca

19、nf(%lf,&E);for(i=0;i<12;i+)e=fabs(E -i);if(e>=2)wi=0;else if(e<=1)wi=0.5*fabs(e*e*e)-e*e+2.0/3.0;elsewi=( -1.0/6.0)*fabs(e*e*e)+e*e-2*fabs(e)+4.0/3.0;s=0.0;for(i=0;i<12;i+)s=s+ci*wi;printf(%lf)=%lf,E,s););- 7 -数值分析实习报告牰湩晴尨请输入要求的导数的值:);scanf(%d,&m);printf(' (%d)=%lfn,m,(cm+1 -

20、cm -1)/2.0);输出结果:请输入要插的值 :4.563f(4.563)=1.517932请输入要求的导数的值 :4.563f'(4.563)= 0.249350四、问题讨论:在给均匀分划的插值函数x 赋值时,由于使用for循环,误将xi=i+1写成 xi=i,导致运算错误。此程序具有一定通用性,对于任意划分的三弯矩插值法,只许改动xi即可。求解方程组 Mj 时,要用到三对角方程组的追赶法(也称Thomas 算法)。变量较多,应注意区分。求导时注意正负号。上机实习题三一、题目:用 Newton 法求方程74+14=0-28xX在( 0.1,1.9 )中的近似根(初始近似值取为区间

21、端点,迭代6 次或误差小于0.00001 )。二、解题方法及理论依据:Newton 迭代法是平方收敛于方程f(x)=0 在区间 a,b 上的唯一解, 收敛速度较快, 循环次数少。方法应用条件:) f(a)f(b)<0” ) f(x)在区间 a,b 上不变号 .') f(x) 0''' ) |f(c)|/b-a |f(c)|其中 c 是 a,b 中使 min|f(a),f(b)达到的一个 , 则对任意时近似值x? 0a,b,Newton迭代过程为'x= (x)=x -f(x)/f(x),k=1,2,3 kk+1kk 算法:令74 14,f(0.1)

22、0,f (1(fx ) xx28.9) 0633316) 7x0(f (x) 7x112 xx3252k 1k0) x336x 42x(x8f )(x 42 01f(.9) f)(1.9 故以 1.9 为起点 f(x) kx x )(xf k x 1.9 0 - 8 -数值分析实习报告计算程序: 1 三、#include math.hmain()float x,y,f,f1;scanf(%f,&x);doy=x;*/的表达式定义f(x)f=pow(y,7)-28*pow(y,4)+14;达式 '(x)f1=7*pow(y,6)-112*pow(y,3);/*x=y-f/f1;/

23、* Newton0.00001*/控制误差小于while(fabs(x-y)>=1e-5);/*/定义f*/的表迭代法/* printf(The result of the question is %fn,x);打印结果: 20.11.9请输入端点值:3.030577x=0.845497四、问题讨论:轴交点,故也称为切线法,它是平方收敛的,的切线与x 是 f(x)在点 x 程序较为简单。它的几何意义为 xkk+1是否为零。 )f (x 此处取 x=1.9收敛性较好,要注意判断kk上机实习题四 一、题目:3241.x dxsinx5x3x7)( =0.00001) 。用 Romberg 算

24、法求允许误差( 1 二、解题方法及理论依据 : Romberg )方法求数值积分龙贝格((0)=(b-a)/2*f(a)+f(b) T1(l)(l-1)l-1lT=( 1/2 )* T+(b-a)/2* fa+(2i-1)*(b-a)/211k-1m(k)(k-1)mT=4T-T/(4-1)mm+1m三、 1计算程序 :#include math.hint a=1,b=3;x2 double f(double x)/*求 f(x)=3x1.4(5x+7)sinx的值 */- 9 -数值分析实习报告double z;z=pow(3,x)*pow(x,1.4)*(5*x+7)*sin(x*x);r

25、eturn (z);ll-1(l)*/ fa+(2i-1)*(b-a)/2(b-a)/2*求 T1 中的 double s(int l)/*extern a,b; int i,m;double z=0.0;m=pow(2,l-1);for(i=1;i<=m;i+)z+=f(a+1.0*(2*i-1)/m);z*=1.0*(b-a)/m;return (z);main() extern a,b; double T2020; int m,n,l=0;T10=(b-a)/2.0*(f(a)+f(b);*/)算法龙贝格 ( Romberg do/*l+;T1l=0.5*(T1l-1+s(l);n

26、=l-1;(0)*/ 求解Tfor(m=2;n>=0;m+,n-)/*lTmn=(pow(4,m-1)*Tm-1n+1-Tm-1n)/(pow(4,m-1)-1.0);while(fabs(Tl0-Tl-10)>=1e-5);printf(T%d0=%f,l,Tl0);打印结果: 2T80=440.536017四、问题讨论:(k) 外推法,构造新序列,计算新分点的值时,需要复化梯形公式,还要用到RichardsonT此程序较繁,计算1(0)(0)时控制循环。程序具有广泛的通用性。|T-T|<这些数值个数成倍增加。应用给出所要求的误差,当l+1l上机实习题五一、题目: Rung

27、e-Kutta法求解用定步长四阶dy/dt=11dy/dt=y32-10-数值分析实习报告-100y dy/dt=1000-1000y332(0)=0 y1(0)=0 y2(0)=0y3(0.1),(i=1,2,3)(0.045), y(0.085), yh=0.0005,打印 y(0.025), yiiii二、解题方法及理论依据:Runge-Kutta 解法高阶方程组的Y=Y+(1/6)*(K+2K+2K +K)4n+12n31K=h*F(x,Y)n1nK=h*F(x+h/2,Y+K/2)1n2nK=h*F(x+h/2,Y+K/2)23nnK=h*F(x+h,Y+K)3n4n适用条件:使用于

28、那些用普通的积分方法解不了的微分方程组. 只要知道函数之间的关系和初值就可以不用解出表达式而直接求解函数在要求点的值。三、 1计算程序:#include <stdio.h>main()double t,h=0.0005,y1=0,y2=0,y3=0,ky15,ky25,ky35; for(t=h;t<=0.1001;t+=h) /*Runge-Kutta算法具体过程 */ ky11=h*1; ky21=h*y3; ky31=h*(1000-1000*y2-100*y3); ky12=h*1; ky22=h*(y3+ky31/2);ky32=h*(1000-1000*(y2+ky21/2)-100*(y3+ky31/2);ky13=h*1; ky23=h*(y3+ky32/2);ky33=h*(1000-1000*(y2+ky22/2)-100*(y3+ky32/2);ky14=h*1; ky24=h*(y3+ky33);ky34=h*(1000-1000*(y2+ky23)-100*(y3+ky33);y1+=(ky11+

温馨提示

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

评论

0/150

提交评论