东南大学数值分析上机解剖
东南大学数值分析上机报告完整版
数值分析上机实验报告目录1.chapter1舍入误差及有效数 (1)2.chapter2Newton迭代法 (3)3.chapter3线性代数方程组数值解法-列主元Gauss消去法 (7)4.chapter3线性代数方程组数值解法-逐次超松弛迭代法 (8)5.chapter4多项式插值与函数最佳逼近 (10)1.chapter1舍入误差及有效数1.1题目设S N =∑1j 2−1N j=2,其精确值为)11123(21+--N N 。
(1)编制按从大到小的顺序11131121222-+⋯⋯+-+-=N S N ,计算S N 的通用程序。
(2)编制按从小到大的顺序1211)1(111222-+⋯⋯+--+-=N N S N ,计算S N 的通用程序。
(3)按两种顺序分别计算64210,10,10S S S ,并指出有效位数。
(编制程序时用单精度)(4)通过本次上机题,你明白了什么? 1.2编写相应的matlab 程序 clear;N=input('please input N:'); AValue=((3/2-1/N-1/(N+1))/2); sn1=single(0); sn2=single(0); for i=2:Nsn1=sn1+1/(i*i-1); %从大到小相加的通用程序% endep1=abs(sn1-AValue); for j=N:-1:2sn2=sn2+1/(j*j-1); %从小到大相加的通用程序% endep2=abs(sn2-AValue);fprintf('精确值为:%f\n',AValue);fprintf('从大到小的顺序累加得sn=%f\n',sn1); fprintf('从大到小相加的误差ep1=%f\n',ep1); fprintf('从小到大的顺序累加得sn=%f\n',sn2); fprintf('从小到大相加的误差ep2=%f\n',ep2); disp('================================='); 1.3matlab 运行程序结果 >> chaper1please input N:100 精确值为:0.740050从大到小的顺序累加得sn=0.740049 从大到小相加的误差ep1=0.000001 从小到大的顺序累加得sn=0.740050 从小到大相加的误差ep2=0.000000 >> chaper1please input N:10000 精确值为:0.749900从大到小的顺序累加得sn=0.749852 从大到小相加的误差ep1=0.000048 从小到大的顺序累加得sn=0.749900 从小到大相加的误差ep2=0.000000please input N:1000000精确值为:0.749999从大到小的顺序累加得sn=0.749852 从大到小相加的误差ep1=0.000147 从小到大的顺序累加得sn=0.749999 从小到大相加的误差ep2=0.0000001.4结果分析以及感悟按照从大到小顺序相加的有效位数为:5,4,3。
东南大学计算方法上机报告实验报告完整版
实习题11. 用两种不同的顺序计算644834.11000012≈∑=-n n,试分析其误差的变化解:从n=1开始累加,n 逐步增大,直到n=10000;从n=10000开始累加,n 逐步减小,直至1。
算法1的C 语言程序如下: #include<stdio.h> #include<math.h> void main() { float n=0.0; int i; for(i=1;i<=10000;i++) { n=n+1.0/(i*i); } printf("%-100f",n); printf("\n"); float m=0.0; int j; for(j=10000;j>=1;j--) { m=m+1.0/(j*j); } printf("%-7f",m); printf("\n"); }运行后结果如下:结论: 4.设∑=-=Nj N j S 2211,已知其精确值为)11123(21+--N N 。
1)编制按从大到小的顺序计算N S 的程序; 2)编制按从小到大的顺序计算N S 的程序;3)按2种顺序分别计算30000100001000,,S S S ,并指出有效位数。
解:1)从大到小的C语言算法如下:#include<stdio.h>#include<math.h>#include<iostream>using namespace std;void main(){float n=0.0;int i;int N;cout<<"Please input N"<<endl;cin>>N;for(i=N;i>1;i--){n=n+1.0/(i*i-1);N=N-1;}printf("%-100f",n);printf("\n");}执行后结果为:N=2时,运行结果为:N=3时,运行结果为:N=100时,运行结果为:N=4000时,运行结果为:2)从小到大的C语言算法如下:#include<stdio.h>#include<math.h>#include<iostream>using namespace std;void main(){float n=0.0;int i;int N;cout<<"Please input N"<<endl;cin>>N;for(i=2;i<=N;i++){n=n+1.0/(i*i-1);}printf("%-100f",n);printf("\n");}执行后结果为:N=2时,运行结果为:N=3时,运行结果为:N=100时,运行结果为:N=4000时,运行结果为:结论:通过比较可知:N 的值较小时两种算法的运算结果相差不大,但随着N 的逐渐增大,两种算法的运行结果相差越来越大。
东南大学_数值分析_第七章_偏微分方程数值解法
第七章 偏微分方程数值解法——Crank-Nicolson 格式****(学号) *****(姓名)上机题目要求见教材P346,10题。
一、算法原理本文研究下列定解问题(抛物型方程)22(,) (0,0)(,0)() (0)(0,)(), (1,)() (0)u ua f x t x l t T t x u x x x l u t t u t t t T ϕαβ⎧∂∂-=<<≤≤⎪∂∂⎪=≤≤⎨⎪==<≤⎪⎩(1)的有限差分法,其中a 为正常数,,,,f ϕαβ为已知函数,且满足边界条件和初始条件。
关于式(1)的求解,采用离散化方法,剖分网格,构造差分格式。
其中,网格剖分是将区域{}0,0D x l t T =≤≤≤≤用两簇平行直线(0)(0)i k x x ih i M t t k k N τ==≤≤⎧⎨==≤≤⎩ 分割成矩形网格,其中,l Th M Nτ==分别为空间步长和时间步长。
将式(1)中的偏导数使用不同的差商代替,将得到不同的差分格式,如古典显格式、古典隐格式、Crank-Nicolson 格式等。
其中,Crank-Nicolson 格式具有更高的收敛阶数,应用更广泛,故本文采用Crank-Nicolson 格式求解抛物型方程。
Crank-Nicolson 格式推导:在节点(,)2i k x t τ+处考虑式(1),有22(,)(,)(,)222i k i k i k u u x t a x t f x t t x τττ∂∂+-+=+∂∂ (2)对偏导数(,)2i k u x t t τ∂+∂用中心差分展开 []2311+131(,)(,)(,)(,) ()224k k i k i k i k i i k i k u ux t u x t u x t x t t t t ττηητ++∂∂+=--<<∂∂ (3) 将22(,)2i k u x t x τ∂+∂在节点(,)i k x t 和1(,)i k x t +表示为222+122224+1221(,)=(,)+(,)22 (,) ()8i k i k i k k k i i k i k u u ux t x t x t x x x ux t t x tττηη⎡⎤∂∂∂+⎢⎥∂∂∂⎣⎦∂-<<∂∂ (4)对以上两个偏导数用二阶差分展开[]2112224i+141(,)(,)2(,)(,) (,) ()12i k i k i k i k kk i k i i u x t u x t u x t u x t x hh u t x x x ξξ+-∂=-+∂∂-<<∂ (5)[]211111122241i+141(,)(,)2(,)(,) (,) ()12i k i k i k i k k ki k i i u x t u x t u x t u x t x hh u t x x xξξ++++-++∂=-+∂∂-<<∂ (6)将式(4)(5)(6)分别代入式(3),略去高阶小量,用k i u 代替(,)i k u x t 并化简得()()()2111111112122,22k k k k k k k k i i i i i i i i i k a u u u u u u u u f x t h ττ+++++-+-⎛⎫⎡⎤---++-+=+ ⎪⎣⎦⎝⎭ (7) 令2/r a h τ=,将式(7)联合式(1)初始条件和边界条件,用矩阵的形式表示为:11112212211111221122221122221122 k k k k k kM M k k M M r r r r u u r r r r r ru u r r r r u u r r u u r r r r +++--+--⎡⎤⎡⎤+---⎢⎥⎢⎥⎢⎥⎢⎥⎡⎤⎡⎤⎢⎥⎢⎥-+--⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥-+--⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎢⎥⎢⎥⎢⎥⎢⎥-+-⎢⎥⎢⎥⎣⎦⎣⎦()()()()()()112211,22,2 ,2,22k k k k M k M k k k r f x t t t f x t f x t r f x t t t ττααττττττββ+--+⎡⎤⎛⎫+++ ⎪⎢⎥⎝⎭⎢⎥⎢⎥⎛⎫+ ⎪⎢⎥⎝⎭⎢⎥+⎢⎥⎢⎥⎛⎫⎢⎥+ ⎪⎢⎥⎝⎭⎢⎥⎛⎫⎢⎥+++ ⎪⎢⎥⎝⎭⎣⎦(8) Crank-Nicolson 格式的截断误差为22()R O h τ=+,具有较高的精度。
数值分析报告上机题课后作业全部-东南大学
实用标准文案文档大全上机作业题报告2015.1.9 USER1.Chapter 11.1题目设S N =∑1j 2−1N j=2,其精确值为)11123(21+--N N 。
(1)编制按从大到小的顺序11131121222-+⋯⋯+-+-=N S N ,计算S N 的通用程序。
(2)编制按从小到大的顺序1211)1(111222-+⋯⋯+--+-=N N S N ,计算S N 的通用程序。
(3)按两种顺序分别计算64210,10,10S S S ,并指出有效位数。
(编制程序时用单精度) (4)通过本次上机题,你明白了什么?1.2程序1.3运行结果1.4结果分析按从大到小的顺序,有效位数分别为:6,4,3。
按从小到大的顺序,有效位数分别为:5,6,6。
可以看出,不同的算法造成的误差限是不同的,好的算法可以让结果更加精确。
当采用从大到小的顺序累加的算法时,误差限随着N 的增大而增大,可见在累加的过程中,误差在放大,造成结果的误差较大。
因此,采取从小到大的顺序累加得到的结果更加精确。
2.Chapter 22.1题目(1)给定初值0x 及容许误差ε,编制牛顿法解方程f(x)=0的通用程序。
(2)给定方程03)(3=-=x xx f ,易知其有三个根3,0,3321=*=*-=*x x x○1由牛顿方法的局部收敛性可知存在,0>δ当),(0δδ+-∈x 时,Newton 迭代序列收敛于根x2*。
试确定尽可能大的δ。
○2试取若干初始值,观察当),1(),1,(),,(),,1(),1,(0+∞+-----∞∈δδδδx 时Newton 序列的收敛性以及收敛于哪一个根。
(3)通过本上机题,你明白了什么?2.2程序2.3运行结果(1)寻找最大的δ值。
算法为:将初值x0在从0开始不断累加搜索精度eps,带入Newton迭代公式,直到求得的根不再收敛于0为止,此时的x0值即为最大的sigma值。
运行Find.m,得到在不同的搜索精度下的最大sigma值。
东南大学数值分析上机实验题(下)
数值分析上机报告XX:学号:2013年12月22日第四章38.(上机题)3次样条插值函数(1)编制求第一型3次样条插值函数的通用程序;端点条件为'0y =0.8,'10y =0.2。
用所编制程序求车门的3次样条插值函数S(x),并打印出S(i+0.5)(i=0,1,…9)。
解:(1)#include <iostream.h> #include <math.h>floatx1[100],f1[100],f2[99],f3[98],m[100],a[100][101],x,d[100]; float c[99],e[99],h[99],u[99],w[99],y_0,y_n,arr ,s; int i,j,k,n,q;void selectprint(float y) {if ((y>0)&&(y!=1)) cout<<"+"<<y; else if (y==1) cout<<"+"; else if (y<0) cout<<y; }void printY(float y){ if (y!=0) cout<<y; }float calculation(float x){ for (j=1;j<=n;j++) if (x<=x1[j]) {s=(float)(f1[j-1]+c[j-1]*(x-x1[j-1])+m[j-1]/2.0*(x-x1[j-1])*(x-x1[j-1])+e[j-1]*(x-x1[j-1])*(x-x1[j-1])*(x-x1[j-1])); break; }return s; }void main() {do{cout<<"请输入n值:";cin>>n;if ((n>100)||(n<1)) cout<<"请重新输入整数(1..100):"<<endl;}while ((n>100)||(n<1));cout<<"请输入Xi(i=0,1,...,"<<n<<"):";for (i=0;i<=n;i++) cin>>x1[i];cout<<endl;cout<<"请输入Yi(i=0,1,...,"<<n<<"n):";for (i=0;i<=n;i++) cin>>f1[i];cout<<endl;cout<<"请输入第一型边界条件Y'0,Y'n:";cin>>y_0>>y_n;cout<<endl;for (i=0;i<n;i++) h[i]=x1[i+1]-x1[i];for (i=1;i<n;i++) u[i]=(float) (h[i-1]/(h[i-1]+h[i]));for (i=1;i<n;i++) w[i]=(float) (1.0-u[i]);for (i=0;i<n;i++) f2[i]=(f1[i+1]-f1[i])/h[i]; //一阶差商for (i=0;i<n-1;i++) f3[i]=(f2[i+1]-f2[i])/(x1[i+2]-x1[i]); //二阶差商for (i=1;i<n;i++) d[i]=6*f3[i-1]; //求出所有的d[i]d[0]=6*(f2[0]-y_0)/h[0];d[n]=6*(y_n-f2[n-1])/h[n-1];for (i=0;i<=n;i++)for (j=0;j<=n;j++)if (i==j) a[i][j]=2;else a[i][j]=0;a[0][1]=1;a[n][n-1]=1;for (i=1;i<n;i++){a[i][i-1]=u[i];a[i][i+1]=w[i];}for (i=0;i<=n;i++) a[i][n+1]=d[i];for (i=1;i<=n;i++) //用追赶法解方程,得M[i]{arr=a[i][i-1];for (j=0;j<=n+1;j++)a[i][j]=a[i][j]-a[i-1][j]*arr/a[i-1][i-1];}m[n]=a[n][n+1]/a[n][n];for (i=n-1;i>=0;i--) m[i]=(a[i][n+1]-a[i][i+1]*m[i+1])/a[i][i];for (i=0;i<n;i++) //计算S(x)的表达式c[i]=(float) (f2[i]-(1.0/3.0*m[i]+1.0/6.0*m[i+1])*h[i]);for (i=0;i<n;i++)e[i]=(m[i+1]-m[i])/(6*h[i]);for (i=0;i<n;i++){cout<<"X属于区间["<<x1[i]<<","<<x1[i+1]<<"]时"<<endl<<endl;cout<<"S(x)=";printY(f1[i]);if (c[i]!=0){selectprint(c[i]);cout<<"(x";printY(-x1[i]);cout<<")";}if (m[i]!=0){selectprint((float)(m[i]/2.0));for (q=0;q<2;q++){cout<<"(x";printY(-x1[i]);cout<<")";}}if (e[i]!=0){selectprint(e[i]);for (q=0;q<3;q++){cout<<"(x";printY(-x1[i]);cout<<")";}}cout<<endl<<endl;}cout<<"针对本题,计算S(i+0.5)(i=0,1,...,9):"<<endl;for (i=0;i<10;i++){if ((i+0.5<=x1[n])&&(i+0.5>=x1[0])){calculation((float)(i+0.5));cout<<"S("<<i+0.5<<")="<<s<<endl;}else cout<<i+0.5<<"超出定义域"<<endl;};cout<<endl;}(2)编制的程序求车门的3次样条插值函数S(x):x属于区间[0,1]时;S(x)=2.51+0.8(x)-0.0014861(x)(x)-0.00851395(x)(x)(x)x属于区间[1,2]时;S(x)=3.3+0.771486(x-1)-0.027028(x-1)(x-1)-0.00445799(x-1)(x-1)(x-1) x属于区间[2,3]时;S(x)=4.04+0.704056(x-2)-0.0404019(x-2)(x-2)-0.0036543(x-2)(x-2)(x-2)x属于区间[3,4]时;S(x)=4.7+0.612289(x-3)-0.0513648(x-3)(x-3)-0.0409245(x-3)(x-3)(x-3) x属于区间[4,5]时;S(x)=5.22+0.386786(x-4)-0.174138(x-4)(x-4)+0.107352(x-4)(x-4)(x-4) x属于区间[5,6]时;S(x)=5.54+0.360567(x-5)+0.147919(x-5)(x-5)-0.268485(x-5)(x-5)(x-5) x属于区间[6,7]时;S(x)=5.78-0.149051(x-6)-0.657537(x-6)(x-6)+0.426588(x-6)(x-6)(x-6) x属于区间[7,8]时;S(x)=5.4-0.184361(x-7)+0.622227(x-7)(x-7)-0.267865(x-7)(x-7)(x-7) x属于区间[8,9]时;S(x)=5.57+0.256496(x-8)-0.181369(x-8)(x-8)+0.0548728(x-8)(x-8)(x-8) x属于区间[9,10]时;S(x)=5.7+0.058376(x-9)-0.0167508(x-9)(x-9)+0.0583752(x-9)(x-9)(x-9)S(0.5)=2.90856 S(1.5)=3.67843 S (2.5)=4.38147 S(3.5)=4.98819 S(4.5)=5.38328 S(5.5)=5.7237S(6.5)=5.59441 S(7.5)=5.42989 S(8.5)=5.65976 S(9.5)=5.7323第六章21.(上机题)常微分方程初值问题数值解(1)编制RK4方法的通用程序;(2)编制AB4方法的通用程序(由RK4提供初值);(3)编制AB4-AM4预测校正方法的通用程序(由RK4提供初值);(4)编制带改进的AB4-AM4预测校正方法的通用程序(由RK4提供初值);(5)对于初值问题h=,应用(1)~(4)中的四种方法进行计算,并将计算结果和精确解取步长0.13=+作比较;y x x()3/(1)(6)通过本上机题,你能得到哪些结论?解:#include<iostream.h>#include<fstream.h>#include<stdlib.h>#include<math.h>ofstream outfile("data.txt");//此处定义函数f(x,y)的表达式//用户可以自己设定所需要求得函数表达式double f1(double x,double y){double f1;f1=(-1)*x*x*y*y;return f1;}//此处定义求函数精确解的函数表达式double f2(double x){double f2;f2=3/(1+x*x*x);return f2;}//此处为精确求函数解的通用程序void accurate(double a,double b,double h){double x[100],accurate[100];x[0]=a;int i=0;outfile<<"输出函数准确值的程序结果:\n";do{x[i]=x[0]+i*h;accurate[i]=f2(x[i]);outfile<<"accurate["<<i<<"]="<<accurate[i]<<'\n';i++;}while(i<(b-a)/h+1);}//此处为经典Runge-Kutta公式的通用程序void RK4(double a,double b,double h,double c) {int i=0;double k1,k2,k3,k4;double x[100],y[100];y[0]=c;x[0]=a;outfile<<"输出经典Runge-Kutta公式的程序结果:\n"; do{x[i]=x[0]+i*h;k1=f1(x[i],y[i]);k2=f1((x[i]+h/2),(y[i]+h*k1/2));k3=f1((x[i]+h/2),(y[i]+h*k2/2));k4=f1((x[i]+h),(y[i]+h*k3));y[i+1]=y[i]+h*(k1+2*k2+2*k3+k4)/6;outfile<<"y"<<"["<<i<<"]="<<y[i]<<'\n';i++;}while(i<(b-a)/h+1);}//此处为4阶Adams显式方法的通用程序void AB4(double a,double b,double h,double c) {double x[100],y[100],y1[100];double k1,k2,k3,k4;y[0]=c;x[0]=a;outfile<<"输出4阶Adams显式方法的程序结果:\n";for(int i=0;i<=2;i++){x[i]=x[0]+i*h;k1=f1(x[i],y[i]);k2=f1((x[i]+h/2),(y[i]+h*k1/2));k3=f1((x[i]+h/2),(y[i]+h*k2/2));k4=f1((x[i]+h),(y[i]+h*k3));y[i+1]=y[i]+h*(k1+2*k2+2*k3+k4)/6;}int j=3;y1[0]=y[0];y1[1]=y[1];y1[2]=y[2];y1[3]=y[3];do{x[j]=x[0]+j*h;y1[j+1]=y1[j]+(55*f1(x[j],y1[j])-59*f1(x[j-1],y1[j-1])+37*f1(x[j-2],y1[j-2])-9*f1(x[j-3],y1[ j-3]))*h/24;outfile<<"y1"<<"["<<j<<"]="<<y1[j]<<'\n';j++;}while(j<(b-a)/h+1);}//主函数void main(void){double a,b,h,c;cout<<"输入上下区间、步长和初始值:\n";cin>>a>>b>>h>>c;accurate(a,b,h);RK4(a,b,h,c);AB4(a,b,h,c);}float si(int u,int v){float sum=0; int q;for(q=0;q<k;q++)sum+=a[u][q]*a[q][v];sum=a[u][v]-sum;return sum;}void exchange(int g){int t; float temp;for(t=0;t<n;t++){temp=a[k][t];a[k][t]=a[g][t];a[g][t]=temp;}}void analyze(){int t;float si(int u,int v);for(t=k;t<n;t++)a[k][t]=si(k,t);for(t=(k+1);t<m;t++)a[t][k]=(float)(si(t,k)/a[k][k]);}void ret(){int t,z;float sum;x[m-1]=(float)a[m-1][m]/a[m-1][m-1];for(t=(m-2);t>-1;t--){sum=0;for(z=(t+1);z<m;z++)sum+=a[t][z]*x[z];x[t]=(float)(a[t][m]-sum)/a[t][t];}}(5)由经典Runge-Kutta公式得出的结果列在下面的表格中,以及精确值y(x i)和精确值和数值解的误差:由AB4方法得出的结果为:Y1[0]=3 y1[1]=2.997 y1[2]=2.97619 y1[3]=2.92113 y1[4]=2.81839 y1[5]=2.66467 y1[6]=2.4652 y1[7]=2.23308 y1[8]=1.98495 y1[9]=1.73704 y1[10]=1.50219 y1[11]=1.28876 y1[12]=1.10072 y1[13]=0.93871 y1[14]=0.801135y1[15]=0.685335(6)本次上机作业让我知道了在遇到复杂问题中,无法给出解析式的情况下,要学会灵活使用各种微分数值解法,并且能计算出不同方法的精度大小。
东南大学出版社第二版《数值分析》上机作业答案(前三章)
for (i=k+1;i<N;i++) // { lik=a[i][k]/a[k][k]; //实施消去过程,得到上三角系数增广矩阵 for (j=k;j<M;j++) // { a[i][j]=a[i][j]‐lik*a[k][j]; // } } } cout<<"经列主元高斯消去法得到的数组为:"<<endl; // for (b=0;b<N;b++) // { cout<<endl; //输出经过列主元消去法处理过的系数增广矩阵 for (c=0;c<M;c++) { cout<<setw(7)<<a[b][c]; // } } cout<<endl; double x[N]; // double s; int f,g; x[N‐1]=a[N‐1][M‐1]/a[N‐1][N‐1]; // for (f=N‐2;f>=0;f‐‐) // { s=0; for (g=f+1;g<N;g++) //由上三角形的系数增广矩阵求出方程组的解 { s=s+a[f][g]*x[g]; // } x[f]=(a[f][N]‐s)/a[f][f]; // } cout<<"方程组的解为:"<<endl; for (b=0;b<N;b++) //输出方程组的解 {
1
当 n=10000 时,s3=0.7499 Press any key to continue (分析 S1 的 6 位数字中,有效位数为 4 位; S2 的所有数字都是有效数字。 ) 当 n=1000000 时,s1=‐14.2546 当 n=1000000 时,s2=‐14.2551 当 n=1000000 时,s3=0.749999 Press any key to continue (分析: S1 的 6 位数字中,没有有效数字; S2 的 6 位数字中,没有有效数字。 ) 由运行结果可知,当精度比较低时,按从大数开始累加到小数的计算结果的精度低于按从小数 累加到大数的计算结果的精度。 至于当 n=1000000 时,S1 和 S2 得出了负数结果,可能是由于循环次数过多,导致数据溢出, 从而得出错误结果。 习题 2 20.程序如下: //给定误差限为:0.5e‐6 //经过试算得当 delta 最大取道 0.7745966 时,迭代得到的根都收敛于 0 #include <iostream.h> #include <math.h> void main () { double x,u; int count=0; u=10.0; cout<<"请输入 x 的初值"<<endl; cin>>x; for (count=0;abs(u)>5;count++) { x=x‐(x*x*x‐3*x)/(3*(x*x‐1)); u=10000000*x; if(count>5000) { cout<<"迭代结果不收敛于 0!"<<endl; break; } } cout<<"x="<<x<<endl<<endl;
数值分析上机题Matlab(东南大学)3
0.22 0.24 0.26 0.28 0.30 0.32 0.34 0.36 0.38 0.40 0.42 0.44 0.46 0.48 0.50 0.52 0.54 0.56 0.58 0.60 0.62 0.64 0.66 0.68 0.70 0.72
152 139 128 119 110 103 96 90 85 80 76 72 68 65 62 59 56 53 51 49 47 45 43 41 39 38
========================================================================================================================
======================================================================================================================================================================== 习题 3_36 ======================================================================================================================================================================== Omega n x1 x2 x3 x4 x5 x6 x7 x8 x9
-0.71279 -0.71280 -0.71280 -0.71280 -0.71280 -0.71280 -0.71280 -0.71280 -0.71280 -0.71280 -0.71280 -0.71281 -0.71281 -0.71281 -0.71281 -0.71281 -0.71281 -0.71281 -0.71281 -0.71281 -0.71281 -0.71281 -0.71281 -0.71281 -0.71281 -0.71281
最新东南大学数值分析上机题matlab(前三章)
数值分析上机题第一章(17题)(1)从2依次累加到N的程序function sn = sum1( n )sn=0;sn=single(sn);for i=2:nai=1/(i^2-1);sn=sn+ai;endend(2)从N依次累加到2的程序function sn = sum2( n )sn=0;sn=single(sn);for i=n:-1:2ai=1/(i^2-1);sn=sn+ai;endend(3)编制求精确值的求和函数sum0function sn = sum0( n )sn=0;sn=single(sn);sn=1/2*(3/2-1/n-1/(n+1));end按第一种顺序得到的值及有效位数如下:N=100时sn0=sum0(100);sn=sum1(100)n=fix(-log10(2*abs(sn-sn0)))得到:sn =0.7400495 n =7N=10e4时sn0=sum0(10e4);sn=sum1(10e4)n=fix(-log10(2*abs(sn-sn0)))得到:sn =0.7498521 n =3N=10e6时sn0=sum0(10e6);sn=sum1(10e6)n=fix(-log10(2*abs(sn-sn0)))得到:sn =0.7498521 n =3按第二种顺序得到的值及有效位数如下:N=100时sn0=sum0(100);sn=sum2(100)n=fix(-log10(2*abs(sn-sn0)))得到:sn =0.7400495 n =7N=10e4时sn0=sum0(10e4);sn=sum2(10e4)n=fix(-log10(2*abs(sn-sn0)))得到:sn =0.7499900 n =7N=10e6时sn0=sum0(10e6);sn=sum2(10e6)n=fix(-log10(2*abs(sn-sn0)))得到:sn =0.7499999 n =7(4)通过这道上机题,我明白了,应用计算机进行求和运算时,求和的顺序不同对结果的精度是有影响的。
东南大学_数值分析_第六章_常微分方程数值解法
第六章 常微分方程数值解法——RK 4法、AB 4法******(学号) *****(姓名)上机题目要求见教材P307,23题。
一、算法原理题目要求采用RK 4法和AB 4法求解最简单的常微分方程初值问题(,),()y f x y a x by a η'=≤≤⎧⎨=⎩ (1)为求解式(1),采用离散化方法,就是寻求解)(x y 在区间],[b a 上的一系列点<<<<<n x x x x 321上的近似值 ,,,,21n y y y 。
记1(1,2,)i i i h x x i -=-=表示相邻两个节点的间距,称为步长。
求微分方程数值解的主要问题:(1) 如何将微分方程(,)y f x y '=离散化,并建立求其数值解的递推公式; (2) 递推公式的局部截断误差、数值数n y 与精确解)(n x y 的误差估计; (3) 递推公式的稳定性与收敛性. a) Runge-Kutta 方法基本思想:通过在1[,]i i x x +多预报几个点求斜率,并将其加权平均作为k *的近似值,以此构造更高精度的计算公式。
如果每步计算四次函数 的值,完全类似的,可以导出局部截断误差为)(5h O 的四阶Runge-Kutta 公式(RK 4):1123412132431(22),6(,),(,),221(,),22(,).n n n n n n n n n n y y k k k k k f x y h h k f x y k h k f x h y k k f x h y hk +⎧=++++⎪⎪=⎪⎪⎪=++⎨⎪⎪=++⎪⎪=++⎪⎩ (2)b) Adams 显式公式Runge-Kutta 方法是单步法,计算1+n y 时,只用到n y , 而已知信息1-n y 、2-n y 等没有被直接利用。
可以设想如果充分利用已知信息1-n y ,2-n y ,…来计算1+n y ,那么不但有可能提高精度,而且大大减少了计算量,这就是构造所谓线性多步法的基本思想。
东南大学_数值分析_第六章_常微分方程数值解法
第六章 常微分方程数值解法——RK 4法、AB 4法******(学号) *****(姓名)上机题目要求见教材P307,23题。
一、算法原理题目要求采用RK 4法和AB 4法求解最简单的常微分方程初值问题(,),()y f x y a x by a η'=≤≤⎧⎨=⎩ (1)为求解式(1),采用离散化方法,就是寻求解)(x y 在区间],[b a 上的一系列点<<<<<n x x x x 321上的近似值 ,,,,21n y y y 。
记1(1,2,)i i i h x x i -=-=表示相邻两个节点的间距,称为步长。
求微分方程数值解的主要问题:(1) 如何将微分方程(,)y f x y '=离散化,并建立求其数值解的递推公式; (2) 递推公式的局部截断误差、数值数n y 与精确解)(n x y 的误差估计; (3) 递推公式的稳定性与收敛性. a) Runge-Kutta 方法基本思想:通过在1[,]i i x x +多预报几个点求斜率,并将其加权平均作为k *的近似值,以此构造更高精度的计算公式。
如果每步计算四次函数 的值,完全类似的,可以导出局部截断误差为)(5h O 的四阶Runge-Kutta 公式(RK 4):1123412132431(22),6(,),(,),221(,),22(,).n n n n n n n n n n y y k k k k k f x y h h k f x y k h k f x h y k k f x h y hk +⎧=++++⎪⎪=⎪⎪⎪=++⎨⎪⎪=++⎪⎪=++⎪⎩ (2)b) Adams 显式公式Runge-Kutta 方法是单步法,计算1+n y 时,只用到n y , 而已知信息1-n y 、2-n y 等没有被直接利用。
可以设想如果充分利用已知信息1-n y ,2-n y ,…来计算1+n y ,那么不但有可能提高精度,而且大大减少了计算量,这就是构造所谓线性多步法的基本思想。
东南大学数值分析上机报告完整版
数值分析上机实验报告目录1.chapter1舍入误差及有效数 (2)2.chapter2Newton迭代法 (3)3.chapter3线性代数方程组数值解法-列主元Gauss消去法 (7)4.chapter3线性代数方程组数值解法-逐次超松弛迭代法 (9)5.chapter4多项式插值与函数最佳逼近 (10)1.chapter1舍入误差及有效数1.1题目设S N =∑1j 2−1N j=2,其精确值为)11123(21+--N N 。
(1)编制按从大到小的顺序11131121222-+⋯⋯+-+-=N S N ,计算S N 的通用程序。
(2)编制按从小到大的顺序1211)1(111222-+⋯⋯+--+-=N N S N ,计算S N 的通用程序。
(3)按两种顺序分别计算64210,10,10S S S ,并指出有效位数。
(编制程序时用单精度)(4)通过本次上机题,你明白了什么?1.2编写相应的matlab 程序clear;N=input('please input N:');AValue=((3/2-1/N-1/(N+1))/2);sn1=single(0);sn2=single(0);for i=2:Nsn1=sn1+1/(i*i-1); %从大到小相加的通用程序%endep1=abs(sn1-AValue);for j=N:-1:2sn2=sn2+1/(j*j-1); %从小到大相加的通用程序%endep2=abs(sn2-AValue);fprintf('精确值为:%f\n',AValue);fprintf('从大到小的顺序累加得sn=%f\n',sn1);fprintf('从大到小相加的误差ep1=%f\n',ep1);fprintf('从小到大的顺序累加得sn=%f\n',sn2);fprintf('从小到大相加的误差ep2=%f\n',ep2);disp('=================================');1.3matlab 运行程序结果>> chaper1please input N:100精确值为:0.740050从大到小的顺序累加得sn=0.740049从大到小相加的误差ep1=0.000001从小到大的顺序累加得sn=0.740050从小到大相加的误差ep2=0.000000>> chaper1please input N:10000精确值为:0.749900从大到小的顺序累加得sn=0.749852从大到小相加的误差ep1=0.000048从小到大的顺序累加得sn=0.749900从小到大相加的误差ep2=0.000000>> chaper1please input N:1000000精确值为:0.749999从大到小的顺序累加得sn=0.749852从大到小相加的误差ep1=0.000147从小到大的顺序累加得sn=0.749999从小到大相加的误差ep2=0.0000001.4结果分析以及感悟按照从大到小顺序相加的有效位数为:5,4,3。
东南大学(有10试题)
东南大学建筑系规划设计1995——1996城市规划设计1999城市规划原理1995——1998,2002中外建筑史和城建史2003中、外建筑史1991——1999,2001外国建筑史1991,1995——2000,2002中国建筑史1995——2001建筑构造1996,2002建筑技术(构造、结构)1998——1999,2002建筑设计1995——2000建筑设计基础2004建筑设计原理1995——1996建筑物理1999,2002素描1995——1998素描色彩1999素描与色彩画2002色彩画1995——1998西方美术史1999中、西美术史1997——1998中西美术史1995——1996,1998中西美术史及其理论1999创作与设计1999无线电工程系专业基础综合(信号与系统、数字电路)2004——2006专业基础综合(含信号与系统、计算机结构与系统、线性电子线路)2003 通信原理1994,1999——2003(1999有答案)信号与系统1997——2002数字电路与微机基础1998——2002模拟电子技术2000模拟电子线路1999——2002电磁场理论2001,2003——2004微机原理与应用1996——2000,2002(2002有答案)应用数学系高等代数1997——2005数学分析1995——2005概率论2003常微分方程2004物理系量子力学2001——2005普通物理2001——2005光学1997——1998,2000——2004热力学统计物理2001电磁场理论2001,2003——2004人文学院政治学原理2008法学理论2004法学综合(法理学)(含刑法学与刑事诉讼法学、宪法学、行政法学与行政诉讼法学)2004法学综合(民商法学)(含宪法学、法理学、行政法学与行政诉讼法学)2004 法学综合(宪法学与行政法学)(含刑法学与刑事诉讼法学、法理学、民商法学与民事诉讼法学)2004民商法学2004宪法和行政法学2004外语系二外日语1999——2004二外法语2000——2004(2003有答案)(注:2004年试卷共10页,缺第9页和第10页)二外德语2000——2002,2004二外俄语2000,2002基础英语1999——2002语言学1999——2002翻译与写作1999——2002基础英语与写作2003——2004(2003——2004有答案)语言学与翻译2003——2004英美文学与翻译2004(2004有答案)二外英语2004日语文学与翻译2004交通学院材料力学2003——2005材料力学(结)1995——2000材料力学(岩)2005结构力学1993——2006土力学及土质学1993——1997,1999——2005道路交通工程系统分析1994——2004(1994——1998,2003——2004有答案)电路分析基础1996——2004电路分析与自控原理2003交通工程学基础1992——2001生物信号处理1999——2003局部解剖学1996生理学1995——1997流行病学2005卫生综合2004——2005内科学1995——1998建筑研究所中外建筑史和城建史2003中、外建筑史1991——1999,2001外国建筑史1991,1995——2000,2002中国建筑史1995——2001建筑构造1996,2002建筑技术(构造、结构)1998——1999,2002建筑设计1995——2000建筑设计基础2004建筑设计原理1995——1996建筑物理1999,2002学习科学研究中心(无此试卷)远程教育学院计算机软件基础(含数据结构、操作系统、软件工程、编译原理、离散数学)2003 计算机专业基础2002,2004——2005计算机结构与逻辑设计2001年本科生期末考试试题离散数学考研试题集(含97——00年)10元编译原理1993——2001编译原理与操作系统2002操作系统1994——2001数据结构1992——2002机械工程系机械原理1993——2005机械设计2002——2004电路分析基础1996——2004电路分析与自控原理2003制冷原理2003——2004制冷原理与设备2000——2002材料力学2003——2005材料力学(结)1995——2000材料力学(岩)2005结构力学1993——2006材料力学2003——2005材料力学(结)1995——2000材料力学(岩)2005土力学及土质学1993——1997,1999——2005工程结构设计原理2005工程经济2003——2005工程流体力学1998——2005工程热力学2000——2004工程施工与管理2002工程力学2003——2005工程力学2002(样题)钢结构1997——1999环境微生物学2005水污染控制工程1997——2002流行病学2005普通化学1997——1998,2000——2005有机化学2004——2005卫生综合2004——2005管理原理1998——2005,2010(2010为回忆版)(注:2004年试卷共2页,缺第2页)自动控制系自动控制理论1997——2002自动控制原理2004高等代数1997——2005生物科学与医学工程系生物信号处理1999——2003现代生物学2003经济管理学院西方经济学1999——2003,2005,2010(2002——2003有答案)(注:2005、2010年试卷为回忆版)金融学基础2002——2005,2005答案管理原理1998——2005,2010(2010为回忆版)(注:2004年试卷共2页,缺第2页)管理学2000——2002,2005,2007(2000——2002有答案)现代管理学2003——2004,2010(2003有答案)(2010为回忆版)市场营销学1999,2000——2001高等代数1997——2005自动控制理论1997——2002自动控制原理2004运筹学2001体育系(无此试卷)仪器科学与工程系电路分析基础1996——2004电路分析与自控原理2003自动控制理论1997——2002自动控制原理2004电磁场理论2001,2003——2004微机系统与接口技术2001——2002微机原理与应用1996——2000,2002(2002有答案)公共卫生学院西方经济学1999——2003,2005,2010(2002——2003有答案)(注:2005、2010年试卷为回忆版)卫生综合2004——2005有机化学2004——2005分析化学1992——2005(1992——2005有答案)物理化学2004——2005物理化学(化)1998——2005物理化学(金材)2000,2002生物信号处理1999——2003局部解剖学1996生理学1996流行病学2005高等教育研究所(无此试卷)软件学院(无此试卷)集成电路学院模拟电子技术2000模拟电子线路1999——2002微机系统与接口技术2001——2002微机原理与应用1996——2000,2002(2002有答案)电磁场理论2001,2003——2004动力工程系结构力学1993——2006土力学及土质学1993——1997,1999——2005工程经济2003——2005工程流体力学1998——2005工程热力学2000——2004工程施工与管理2002热工自动调节原理2001——2004制冷原理2003——2004制冷原理与设备2000——2002电路分析基础1996——2004电路分析与自控原理2003传热学2000——2004普通化学1997——1998,2000——2005电子工程系物理化学2004——2005物理化学(化)1998——2005物理化学(金材)2000,2002半导体物理1996——2005,2010(2010为回忆版)模拟电子技术2000模拟电子线路1999——2002电子线路基础2001——2004电磁场理论2001,2003——2004高等代数1997——2005微机系统与接口技术2001——2002微机原理与应用1996——2000,2002(2002有答案)计算机科学与工程系计算机软件基础(含数据结构、操作系统、软件工程、编译原理、离散数学)2003 计算机专业基础2002,2004——2005计算机结构与逻辑设计2001年本科生期末考试试题离散数学考研试题集(含97——00年)10元编译原理1993——2001编译原理与操作系统2002操作系统1994——2001数据结构1992——2002材料科学与工程系物理化学2004——2005物理化学(化)1998——2005物理化学(金材)2000,2002材料力学2003——2005材料力学(结)1995——2000材料力学(岩)2005钢结构1997——1999金属学2003——2004金属学及热处理1999——2002,2005卫生综合2004——2005电气工程系电工基础2000——2006模拟电子技术2000模拟电子线路1999——2002微机原理与应用1996——2000,2002(2002有答案)电磁场理论2001,2003——2004化学化工系物理化学2004——2005物理化学(化)1998——2005物理化学(金材)2000,2002艺术学系素描1995——1998素描色彩1999素描与色彩画2002色彩画1995——1998西方美术史1999中、西美术史1997——1998中西美术史1995——1996,1998中西美术史及其理论1999创作与设计1999临床医学院生物信号处理1999——2003局部解剖学1996生理学1995——1997流行病学2005卫生综合2004——2005内科学1995——1998情报科学技术研究所(无此试卷)职业技术教育学院(无此试卷)英语(单考)1999——2000。
东南大学_数值分析_第七章_偏微分方程数值解法-推荐下载
1 h2
1 2
2u
2 8
x
2
( xi , tk
4u x 2t 2
u( xi1, tk
h2 12
4u x4
表示为
(ik
)
)+
2u x2
( xi ,ik )
, tk
2u( xi , tk
)
u( xi1, tk1) 2u( xi , tk1) u( xi1, tk1)
h2 12
4u x4
将式(4)(5)(6)分别代入式(3),略去高阶小量,用 uik 代替 u(xi , tk ) 并化简得
r 2
r 1 r 2
r 2
r 2
1 r
u1k u2k
uMk 12
k 1
uM 1
1 1
MERGEFORMAT (8) Crank-Nicolson 格式的截断误差为 R O( 2 h2 ) ,具有较高的精度。
Crank_Nicolson格式完整代码
function U=Crank_Nicolson(f,a,x0,xn,dx,t0,tm,dt,g,s0,sn)
A=inv(A); B=r/2*[zeros(1,N-1);eye(N-2,N-2),zeros(N-2,1)]+r/2* ...
r 2
f
f
r 2
1 r
x1
,
xM 1, tk
tk
f
r 2
r 2
2
f
2
1 r
r 2
x2, tk
xM 2 , tk
r 2
r 2
tk
2
1
r 2
2
tk
r
东南大学_数值分析_第二章_牛顿迭代法
第二章 非线性方程的解法——牛顿迭代法****(学号) ****(姓名)算法与程序题目见教材P56 上机题目20。
一、算法原理根据题目的要求,是关于用牛顿迭代法法求解方程()0f x =的通用算法。
该法是一种通过斜率迭代的算法,其速度比二分法和简单迭代法都要快。
其简单原理如下:设2[,],[,],f C a b p a b ∈∈且存在数满足()0()0,f p f p '=≠。
如果则存在一个数00,[,],p p p δδδ>∈-+对任意初始值使得由如下定义的迭代序列0{}k k p ∞=收敛到p : 1111()(),1,2,()k k k k k f p p g p p k f p ----==-=' 其中 (1) 对于函数3()/3=0f x x x =-,则其递推规则是 31212,1,2,3-3k k k p p k p --== 其中 (2)定义序列0{}k k p ∞=,则序列0{}k k p ∞=收敛到x *,也可表示为lim k x p x *→∞=。
现简要证明:对于3'2()/3()-1f x x x f x x =-=,得,写出牛顿迭代公式 32()/3()()-1f x x x g x x x f x x -=-=-' (3) 该公式可化简为 322()33x g x x =- (4)二、流程图题目要求于用牛顿迭代法法求解方程()0f x =的通用算法。
其计算过程主要用到迭代()()()f xg x xf x=-',图流程图1所示。
图1 题1关于牛顿迭代法的算法流程图三、计算代码核心代码1)p1=……;2)if (err<delta)|(relerr<delta)|(abs(y)<epsilon),break;3)if k<maxN ,go to 1完整代码程序1:Newton.m%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Description : 牛顿迭代法% Author : panyunqiang% Versoin : 1.0% Date : 2012-9-21 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [p0, err, k, y]=Newton(p0, delta, epsilon, maxN)% input - p0 is the initial approximation to a zero of f% - delta is the tolerance for p0% - epsilon is the tolerance for the function values y% - maxN is the maxium number of iterations%output - p0 is the Newton approximation to a zero% - err is the error estimate for p0% - k is the number of iterations% - y is the function value f(p0)for k=1:maxN%%递归p1=2*p0^3/(3*p0^2-3);%%计算误差err=abs(p1-p0);relerr=2*err/(abs(p1)+delta);p0=p1;%%当前求出的根的函数值y=p0^3/3-p0;%%判断if (err<delta)|(relerr<delta)|(abs(y)<epsilon)break;endend程序2:Newton_Step.m%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Description : 寻找题目中关于牛顿迭代法收敛的尽可能大的delta % 搜索步进为step=10^(-6),即精确到小数点后六位% Author : panyunqiang% Versoin : 1.0% Date : 2012-9-21 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% format longstep=10^(-6);delta=10^-8;epsilon=10^-8;maxN=1000;ps=0.6;[p0, err, k, y]=Newton(ps, delta, epsilon, maxN);while((abs(p0)<=epsilon)&(p0~=NaN))ps=ps+step;[p0, err, k, y]=Newton(ps, delta, epsilon, maxN);endps-step四、计算结果及分析a)运行程序Newton_Step.m,获得Newton局部收敛于2=0x*的初始值的范围δ= 0.774596,六位有效数字。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章一、题目设∑=-=Nj N j S 2211,其精确值为)11123(21+--N N 。
(1)编制按从大到小的顺序11131121222-+⋯⋯+-+-=N S N ,计算SN 的通用程序。
(2)编制按从小到大的顺序1211)1(111222-+⋯⋯+--+-=N N S N ,计算SN 的通用程序。
(3)按两种顺序分别计算64210,10,10S S S ,并指出有效位数。
(编制程序时用单精度) (4)通过本次上机题,你明白了什么? 二、MATLAB 程序N=input('请输入N(N>1):');AccurateValue=single((0-1/(N+1)-1/N+3/2)/2); %single 使其为单精度 Sn1=single(0); %从小到大的顺序 for a=2:N; Sn1=Sn1+1/(a^2-1); endSn2=single(0); %从大到小的顺序 for a=2:N; Sn2=Sn2+1/((N-a+2)^2-1); endfprintf('Sn 的值 (N=%d)\n',N);disp('____________________________________________________') fprintf('精确值 %f\n',AccurateValue); fprintf('从大到小计算的结果 %f\n',Sn1); fprintf('从小到大计算的结果 %f\n',Sn2);disp('____________________________________________________')三、结果请输入N(N>1):100Sn的值(N=100)____________________________________________________精确值0.740049从大到小计算的结果0.740049从小到大计算的结果0.740050____________________________________________________请输入N(N>1):10000Sn的值(N=10000)____________________________________________________精确值0.749900从大到小计算的结果0.749852从小到大计算的结果0.749900____________________________________________________请输入N(N>1):1000000Sn的值(N=1000000)____________________________________________________精确值0.749999从大到小计算的结果0.749852从小到大计算的结果0.749999____________________________________________________四、结果分析可以得出,算法对误差的传播又一定的影响,在计算时选一种好的算法可以使结果更为精确。
从以上的结果可以看到从大到小的顺序导致大数吃小数的现象,容易产生较大的误差,求和运算从小数到大数算所得到的结果才比较准确。
第二章一、题目(1)给定初值0x 及容许误差ε,编制牛顿法解方程f(x)=0的通用程序。
(2)给定方程03)(3=-=x x x f ,易知其有三个根3,0,3321=*=*-=*x x x①由牛顿方法的局部收敛性可知存在,0>δ当),(0δδ+-∈x 时,Newton 迭代序列收敛于根x 2*。
试确定尽可能大的δ。
②试取若干初始值,观察当),1(),1,(),,(),,1(),1,(0+∞+-----∞∈δδδδx 时Newton 序列的收敛性以及收敛于哪一个根。
(3)通过本上机题,你明白了什么?二、MATLAB 程序文件fx.mfunction Fx=fx(x) %% 定义函数f(x) Fx=x^3/3-x;文件dfx.mfunction Fx=dfx(x) %% 定义导函数df(x) Fx=x^2-1;%% Newton 法求方程的根%% clearef=10^-6; %这里取容许误差10^-6 k=0;x0=input('请输入 Xo 的值:');disp('k Xk'); %使用空格将其分隔开 fprintf('0 %f\n',x0); flag=1;while flag==1 && k<=10^3 x1=x0-fx(x0)/dfx(x0); if abs(x1-x0)<efflag=0;endk=k+1;x0=x1;fprintf('%d %f\n',k,x0);end%%寻找最大的delta值%%clear%%flag=1;k=1;x0=0;while flag==1delta=k*10^-6; %delta与k有关x0=delta;k=k+1;m=0;flag1=1;while flag1==1 && m<=10^3x1=x0-fx(x0)/dfx(x0);if abs(x1-x0)<10^-6flag1=0; %给定容许误差endm=m+1;x0=x1;endif flag1==1||abs(x0)>=10^-6 %未小于给定误差时停止循环flag=0;endendfprintf(' delta 的最大值是%f\n',delta);三、结果1.运行search.m文件结果为:delta 的最大值为0.774597即得最大的δ为0.774597,Newton迭代序列收敛于根*x=0的最大区间为2(-0.774597,0.774597)。
2.(1)区间(,1)-∞-上取-1000,-100,-50,-30,-10,-8,-7,-5,-3x。
结果显示,以上初值迭代序列均收敛于-1.732051,即根*1(2) 在区间(1,)δ--即区间(-1,-0.774597)上取-0.774598,-0.8,-0.85,-0.9,-0.99,计算结果如下:x,局部收敛于1.730251,计算结果显示,迭代序列局部收敛于-1.732051,即根*1x。
即根*3(3) 有上题可知,在区间(-0.774597,0.774597)上,在整个区间上均收敛x。
于0,即根*2(4) 在区间(,1)即区间(0.774597,1)上取0.774598,0.8,0.85,0.9,0.99,计算结果如下:x,局部收敛于1.730251,计算结果显示,迭代序列局部收敛于-1.732051,即根*1x。
即根*3(5) 区间(1,)上取100,60,20,10,7,6,4,3,1.5,计算结果如下:结果显示,以上初值迭代序列均收敛于1.732051,即根*3x 。
四、结果分析综上所述:(,1)-∞-区间收敛于-1.73205, (1,)δ--区间局部收敛于1.73205,局部收敛于-1.73205,(,)δδ-区间收敛于0,(,1)δ区间类似于(1,)δ--区间,(1,)+∞收敛于1.73205。
通过本上机题,明白了对于多根方程,Newton 法求方程根时,迭代序列收敛于某一个根有一定的区间限制,在一个区间上,可能会局部收敛于不同的根。
第三章一、题目列主元Gauss消去法对于某电路的分析,归结为求解线性方程组RI V=。
其中3113000100001335901100000931*******00107930000900030577050000074730000000030410000005002720009000229 R--⎛⎫⎪---⎪⎪--⎪--- ⎪⎪=---⎪--⎪⎪-⎪-- ⎪⎪--⎝⎭()15,27,23,0,20,12,7,7,10TTV=----(1)编制解n阶线性方程组Ax b=的列主元高斯消去法的通用程序;(2)用所编程序线性方程组RI V=,并打印出解向量,保留5位有效数;二、MATLAB程序%% 列主元Gauss消去法求解线性方程组%%%%参数输入n=input('请输入矩阵A的阶数: n='); %输入线性方程组阶数nb=zeros(1,n);A=input('请输入矩阵A:');b(1,:)=input('请输入行向量b:'); %输入行向量bb=b'; %得到列向量bC=[A,b]; %得到增广矩阵%%列主元消去得上三角矩阵for i=1:n-1[maximum,index]=max(abs(C(i:n,i))); %将最大元素位置放在index行中index=index+i-1;T=C(index,:); %T作为一个中转站,交换两行C(index,:)=C(i,:);C(i,:)=T;for k=i+1:n %%列主元消去if C(k,i)~=0C(k,:)=C(k,:)-C(k,i)/C(i,i)*C(i,:);endendend%% 回代求解%%x=zeros(n,1);x(n)=C(n,n+1)/C(n,n);for i=n-1:-1:1x(i)=(C(i,n+1)-C(i,i+1:n)*x(i+1:n,1))/C(i,i);endA=C(1:n,1:n);disp('上三角矩阵为:')for k=1:nfprintf('%f ',A(k,:));fprintf('\n');enddisp('方程的解为:');fprintf('%.5g\n',x); %以5位有效数字输出结果三、结果请输入矩阵A的阶数: n=9请输入矩阵A:[31 -13 0 0 0 -10 0 0 0;-13 35 -9 0 -11 0 0 0 0;0 -9 31 -10 0 0 0 0 0;0 0 -10 79 -30 0 0 0 -9;0 0 0 -30 57 -7 0 -5 0;0 0 0 0 -7 47 -30 0 0;0 0 0 0 0 -30 41 0 0;0 0 0 0 -5 0 0 27 -2;0 0 0 -9 0 0 0 -2 9]请输入行向量b: [-15 27 -23 0 -20 12 -7 7 10]上三角矩阵为:31.000000 -13.000000 0.000000 0.000000 0.000000 -10.000000 0.000000 0.000000 0.000000 0.000000 29.548387 -9.000000 0.000000 -11.000000 -4.193548 0.000000 0.000000 0.000000 0.000000 0.000000 28.258734 -10.000000 -3.350437 -1.277293 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 75.461271 -31.185629 -0.451999 0.000000 0.000000 -9.000000 0.000000 0.000000 0.000000 0.000000 44.602000 -7.179695 0.000000 -5.000000 -3.577994 0.000000 0.000000 0.000000 0.000000 -0.000000 45.873193 -30.000000 -0.784718 -0.561543 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 21.380698 -0.513187 -0.367236 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 26.413085 -2.419996 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 27.389504 方程的解为:-0.289230.34544-0.71281-0.22061-0.43040.15431-0.0578230.20105第四章:多项式插值与函数最佳逼近一、题目:(1)编制求第一型3次样条插值函数的通用程序;(2)已知汽车曲线型值点的数据如下:端点条件为'0=0.8y,'10=0.2y。