数值计算方法大作业--资料
(完整word版)《数值计算方法》复习资料全
![(完整word版)《数值计算方法》复习资料全](https://img.taocdn.com/s3/m/97dd12149ec3d5bbfc0a74af.png)
《数值计算方法》复习资料课程的性质与任务数值计算方法是一门应用性很强的基础课,在学习高等数学,线性代数和算法语言的基础上,通过本课程的学习及上机实习、使学生正确理解有关的基本概念和理论,掌握常用的基本数值方法,培养应用计算机从事科学与工程计算的能力,为以后的学习及应用打下良好基础。
第一章数值计算方法与误差分析一考核知识点误差的来源类型;绝对误差和绝对误差限,相对误差和相对误差限,有效数字;绝对误差的传播。
二复习要求1. 知道产生误差的主要来源。
2. 了解绝对误差和绝对误差限、相对误差和相对误差限和有效数字等概念以及它们之间的关系。
3. 知道四则运算中的误差传播公式。
三例题例1设x*= =3.1415926…近似值x=3.14=0.314×101,即m=1,它的绝对误差是-0.001 592 6…,有即n=3,故x=3.14有3位有效数字.x=3.14准确到小数点后第2位.又近似值x=3.1416,它的绝对误差是0.0000074…,有即m=1,n=5,x=3.1416有5位有效数字.而近似值x=3.1415,它的绝对误差是0.0000926…,有即m=1,n=4,x=3.1415有4位有效数字.这就是说某数有s位数,若末位数字是四舍五入得到的,那么该数有s位有效数字;例2 指出下列各数具有几位有效数字,及其绝对误差限和相对误差限:2.000 4 -0.002 00 9 000 9 000.00=2.000 4=0.200 04×101, 它的绝对误差限0.000 05=0.5×10 1―5,即解因为x1m=1,n=5,故x=2.000 4有5位有效数字. a=2,相对误差限1x 2=-0.002 00,绝对误差限0.000 005,因为m =-2,n=3,x 2=-0.002 00有3位有效数字. a 1=2,相对误差限εr ==0.002 5x 3=9 000,绝对误差限为0.5×100,因为m =4, n=4, x 3=9 000有4位有效数字,a =9,相对误差限εr ==0.000 056x 4=9 000.00,绝对误差限0.005,因为m =4,n=6,x 4=9 000.00有6位有效数字,相对误差限为εr ==0.000 000 56由x 3与x 4可以看到小数点之后的0,不是可有可无的,它是有实际意义的. 例3 ln2=0.69314718…,精确到10-3的近似值是多少?解 精确到10-3=0.001,意旨两个近似值x 1,x 2满足,由于近似值都是四舍五入得到的,要求满足,近似值的绝对误差限应是ε=0.0005,故至少要保留小数点后三位才可以。
数值分析大作业一
![数值分析大作业一](https://img.taocdn.com/s3/m/617d4ce7ba0d4a7302763aa7.png)
数值分析大作业一一、算法设计方案1、求λ1和λ501的值:思路:采用幂法求出按模最大特征值λmax,该值必为λ1或λ501,若λmax小于0,则λmax=λ1;否则λmax=λ501。
再经过原点平移,使用幂法迭代出矩阵A-λmax I的特征值,此时求出的按模最大特征值即为λ1和λ501的另一个值。
2、求λs的值:采用反幂法求出按模最小的特征值λmin即为λs,其中的方程组采用LU分解法进行求解。
3、求与μk最接近的特征值:对矩阵A采用带原点平移的反幂法求解最小特征值,其中平移量为:μk。
4、A的条件数cond(A)=| λmax/λmin|;5、A的行列式的值:先将A进行LU分解,再求U矩阵对角元素的乘积即为A 行列式的值。
二、源程序#include<iostream>#include<iomanip>#include<math.h>#define N 501#define E 1.0e-12 //定义精度常量#define r 2#define s 2using namespace std;double a[N];double cc[5][N];void init();double mifa();double fmifa();int max(int aa,int bb);int min(int aa,int bb);int max_3(int aa,int bb,int cc);void LU();void main(){double a1,a2,d1,d501=0,ds,det=1,miu[39],lamta,cond;int i,k;init();/*************求λ1和λ501********************/a1=mifa();if(a1<0)d1=a1; //若小于0则表示λ1的值elsed501=a1; //若大于0则表示λ501的值for(i=0;i<N;i++)a[i]=a[i]-a1;a2=mifa()+a1;if(a2<0)d1=a2; //若小于0则表示λ1的值elsed501=a2; //若大于0则表示λ501的值cout<<"λ1="<<setiosflags(ios::scientific)<<setprecision(12)<<d1<<"\t";cout<<"λ501="<<setiosflags(ios::scientific)<<setprecision(12)<<d501<<endl;/**************求λs*****************/init();ds=fmifa();cout<<"λs="<<setiosflags(ios::scientific)<<setprecision(12)<<ds<<endl;/**************求与μk最接近的特征值λik**************/cout<<"与μk最接近的特征值λik:"<<endl;for(k=0;k<39;k++){miu[k]=d1+(k+1)*(d501-d1)/40;init();for(i=0;i<N;i++)a[i]=a[i]-miu[k];lamta=fmifa()+miu[k];cout<<"λi"<<k+1<<"\t\t"<<setiosflags(ios::scientific)<<setprecision(12)<<lamta<<en dl;}/**************求A的条件数**************/cout<<"矩阵A的条件式";cond=abs(max(abs(d1),abs(d501))/ds);cout<<"cond="<<setiosflags(ios::scientific)<<setprecision(12)<<cond<<endl;/**************求A的行列式**************/cout<<"矩阵A的行列式";init();LU();for(i=0;i<N;i++){det*=cc[2][i];}cout<<"det="<<setiosflags(ios::scientific)<<setprecision(12)<<det<<endl;system("pause");}/**************初始化函数,给a[N]赋值*************/void init(){int i;for(i=1;i<=501;i++)a[i-1]=(1.64-0.024*i)*sin((double)(0.2*i))-0.64*exp((double)(0.1/i)); }/**************幂法求最大绝对特征值**************/double mifa(){int i,k=0;double u[N],y[N]={0},b=0.16,c=-0.064,Beta_=0,error;for(i=0;i<501;i++)u[i]=1; //令u[N]=1for(k=1;k<2000;k++) //控制最大迭代次数为2000{/***求y(k-1)***/double sum_u=0,gh_sum_u;for(i=0;i<N;i++){sum_u+=u[i]*u[i]; }gh_sum_u=sqrt(sum_u);for(i=0;i<N;i++){y[i]=u[i]/gh_sum_u;}/****求新的uk****/u[0]=a[0]*y[0]+b*y[1]+c*y[2];u[1]=b*y[0]+a[1]*y[1]+b*y[2]+c*y[3]; //前两列和最后两列单独拿出来求中D间的循环求for(i=2;i<N-2;i++){u[i]=c*y[i-2]+b*y[i-1]+a[i]*y[i]+b*y[i+1]+c*y[i+2];}u[N-2]=c*y[N-4]+b*y[N-3]+a[N-2]*y[N-2]+b*y[N-1];u[N-1]=c*y[N-3]+b*y[N-2]+a[N-1]*y[N-1];/***求beta***/double Beta=0;for(i=0;i<N;i++){Beta+=y[i]*u[i];}//cout<<"Beta"<<k<<"="<<Beta<<"\t"; 输出每次迭代的beta /***求误差***/error=abs(Beta-Beta_)/abs(Beta);if(error<=E) //若迭代误差在精度水平内则可以停止迭代{return Beta;} //控制显示位数Beta_=Beta; //第个eta的值都要保存下来,为了与后个值进行误差计算 }if(k==2000){cout<<"error"<<endl;return 0;} //若在最大迭代次数范围内都不能满足精度要求说明不收敛}/**************反幂法求最小绝对特¬征值**************/double fmifa(){int i,k,t;double u[N],y[N]={0},yy[N]={0},b=0.16,c=-0.064,Beta_=0,error;for(i=0;i<501;i++)u[i]=1; //令u[N]=1for(k=1;k<2000;k++){double sum_u=0,gh_sum_u;for(i=0;i<N;i++){sum_u+=u[i]*u[i]; }gh_sum_u=sqrt(sum_u);for(i=0;i<N;i++){y[i]=u[i]/gh_sum_u;yy[i]=y[i]; //用重新赋值,避免求解方程组的时候改变y的值}/****LU分解法解方程组Au=y,求新的***/LU();for(i=2;i<=N;i++){double temp_b=0;for(t=max(1,i-r);t<=i-1;t++)temp_b+=cc[i-t+s][t-1]*yy[t-1];yy[i-1]=yy[i-1]-temp_b;}u[N-1]=yy[N-1]/cc[s][N-1];for(i=N-1;i>=1;i--){double temp_u=0;for(t=i+1;t<=min(i+s,N);t++)temp_u+=cc[i-t+s][t-1]*u[t-1];u[i-1]=(yy[i-1]-temp_u)/cc[s][i-1];}double Beta=0;for(i=0;i<N;i++){Beta+=y[i]*u[i];}error=abs(Beta-Beta_)/abs(Beta);if(error<=E){return (1/Beta);}Beta_=Beta;}if(k==2000){cout<<"error"<<endl;return 0;} }/**************求两数最大值的子程序**************/int max(int aa,int bb){return(aa>bb?aa:bb);}/**************求两数最小值的子程序**************/int min(int aa,int bb){return(aa<bb?aa:bb);}/**************求三数最大值的子程序**************/int max_3(int aa,int bb,int cc){ int tt;if(aa>bb)tt=aa;else tt=bb;if(tt<cc) tt=cc;return(tt);}/**************LU分解**************/void LU(){int i,j,k,t;double b=0.16,c=-0.064;/**赋值压缩后矩阵cc[5][501]**/for(i=2;i<N;i++)cc[0][i]=c;for(i=1;i<N;i++)cc[1][i]=b;for(i=0;i<N;i++)cc[2][i]=a[i];for(i=0;i<N-1;i++)cc[3][i]=b;for(i=0;i<N-2;i++)cc[4][i]=c;for(k=1;k<=N;k++){for(j=k;j<=min(k+s,N);j++){double temp=0;for(t=max_3(1,k-r,j-s);t<=k-1;t++)temp+=cc[k-t+s][t-1]*cc[t-j+s][j-1];cc[k-j+s][j-1]=cc[k-j+s][j-1]-temp;}//if(k<500){for(i=k+1;i<=min(k+r,N);i++){double temp2=0;for(t=max_3(1,i-r,k-s);t<=k-1;t++)temp2+=cc[i-t+s][t-1]*cc[t-k+s][k-1];cc[i-k+s][k-1]=(cc[i-k+s][k-1]-temp2)/cc[s][k-1];}}}}三、程序结果。
(完整版)数值计算方法试题及答案
![(完整版)数值计算方法试题及答案](https://img.taocdn.com/s3/m/2a458378ba0d4a7303763a3f.png)
数值计算方法试题一一、 填空题(每空1分,共17分)1、如果用二分法求方程043=-+x x 在区间]2,1[内的根精确到三位小数,需对分( )次。
2、迭代格式)2(21-+=+k k k x x x α局部收敛的充分条件是α取值在( )。
3、已知⎪⎩⎪⎨⎧≤≤+-+-+-≤≤=31)1()1()1(2110)(233x c x b x a x x x x S 是三次样条函数,则a =( ),b =( ),c =( )。
4、)(,),(),(10x l x l x l n 是以整数点n x x x ,,,10 为节点的Lagrange 插值基函数,则∑==nk kx l0)(( ),∑==nk k jk x lx 0)(( ),当2≥n 时=++∑=)()3(204x l x xk k n k k( )。
5、设1326)(247+++=x x x x f 和节点,,2,1,0,2/ ==k k x k 则=],,,[10n x x x f 和=∆07f。
6、5个节点的牛顿-柯特斯求积公式的代数精度为 ,5个节点的求积公式最高代数精度为 。
7、{}∞=0)(k kx ϕ是区间]1,0[上权函数x x =)(ρ的最高项系数为1的正交多项式族,其中1)(0=x ϕ,则⎰=14)(dx x x ϕ 。
8、给定方程组⎩⎨⎧=+-=-221121b x ax b ax x ,a 为实数,当a 满足 ,且20<<ω时,SOR 迭代法收敛。
9、解初值问题00(,)()y f x y y x y '=⎧⎨=⎩的改进欧拉法⎪⎩⎪⎨⎧++=+=++++)],(),([2),(]0[111]0[1n n n n n n n n n n y x f y x f h y y y x hf y y 是阶方法。
10、设⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=11001a a a a A ,当∈a ( )时,必有分解式T LL A =,其中L 为下三角阵,当其对角线元素)3,2,1(=i l ii 满足( )条件时,这种分解是唯一的。
数值计算大作业
![数值计算大作业](https://img.taocdn.com/s3/m/130c66cb561252d381eb6e82.png)
数值计算大作业题目一、非线性方程求根1.题目假设人口随时间和当时人口数目成比例连续增长,在此假设下人口在短期内的增长建立数学模型。
(1)如果令()N t 表示在t 时刻的人口数目,β表示固定的人口出生率,则人口数目满足微分方程()()dN t N t dt β=,此方程的解为0()=tN t N e β; (2)如果允许移民移入且速率为恒定的v ,则微分方程变成()()dN t N t vdt β=+, 此方程的解为0()=+(1)t t vN t N e e βββ-;假设某地区初始有1000000人,在第一年有435000人移入,又假设在第一年年底该地区人口数量1564000人,试通过下面的方程确定人口出生率β,精确到410-;且通过这个数值来预测第二年年末的人口数,假设移民速度v 保持不变。
4350001564000=1000000(1)e e βββ+-2.数学原理采用牛顿迭代法,牛顿迭代法的数学原理是,对于方程0)(=x f ,如果)(x f 是线性函数,则它的求根是很容易的,牛顿迭代法实质上是一种线性化方法,其基本思想是将非线性方程0)(=x f 逐步归结为某种线性方程来求解。
设已知方程0)(=x f 有近似根k x (假定0)(≠'x f ),将函数)(x f 在点k x进行泰勒展开,有.))(()()(⋅⋅⋅+-'+≈k k k x x x f x f x f于是方程0)(=x f 可近似地表示为))(()(=-'+k k x x x f x f这是个线性方程,记其根为1k x +,则1k x +的计算公式为)()(1k k k k x f x f x x '-==+,,,2,1,0⋅⋅⋅=k这就是牛顿迭代法,简称牛顿法。
3.程序设计作出函数的图像,大概估计出根的位置fplot('1000*exp(x)+(435*x)*(exp(x)-1)-1564',[0 3]);grid大概估计出初始值x=0.5function [p1,err,k,y]=newton(f,df,p0,delta,max1) % f 是非线性系数 % df 是f 的微商 % p0是初始值% dalta 是给定允许误差 % max1是迭代的最大次数 % p1是牛顿法求得的方程近似解 % err 是p0误差估计 % k 是迭代次数 p0,feval('f',p0) for k=1:max1p1=p0-feval('f',p0)/feval('df',p0); err=abs(p1-p0); p0=p1;p1,err,k,y=feval('f',p1) if(err<delta)|(y==0), break,endp1,err,k,y=feval('f',p1) endfunction y=f(x)y=1000000*exp(x)+435000*(exp(x)-1)/x-1564000; function y=df(x)y=1000000*exp(x)+435000*(exp(x)/x-(exp(x)-1)/x^2);4.结果分析与讨论newton('f','df',1.2,10^(-4),10) 运行后得出结果 p0 =0.5000p1 =0.1679 err =0.3321 k =1 y =9.2415e+004 p1 =0.1031 err =0.0648 k =2 y =2.7701e+003 p1 =0.1010 err =0.0021 k =3 y =2.6953p1 =0.1010 err =2.0129e-006 k =4 y = 2.5576e-006 ans =0.1010运算后的结果为1010.0=β,通过这个数值来预测第二年年末的人口数,0.10100.1010435000f(t)=1000000(1)0.1010t te e +-t=2时候对于f ()2187945.865x =实践表明,当初始值难以确定时,迭代法就不一定收敛了,因此要根据问题实际背景或者二分法先得一个较好的初始值,然后再进行迭代;再者迭代函数选择不合适的话,采用不动点迭代法也有可能出现不收敛的情况;因此我采用的是牛顿法。
数值计算方法大作业
![数值计算方法大作业](https://img.taocdn.com/s3/m/8887ca43fe4733687e21aaa1.png)
题目利用数值计算方法求取基尼系数姓名与学号指导教师年级与专业所在学院一、问题综述:基尼系数(Gini coefficient),是20世纪初意大利学者科拉多·吉尼根据劳伦茨曲线所定义的判断收入分配公平程度的指标。
是比例数值,在0和1之间。
基尼指数(Gini index)是指基尼系数乘100倍作百分比表示。
在民众收入中,如基尼系数最大为“1”,最小等于“0”。
前者表示居民之间的收入分配绝对不平均(即所有收入都集中在一个人手里,其余的国民没有收入),而后者则表示居民之间的收入分配绝对平均,即人与人之间收入绝对平等,但这两种情况只出现在理论上;因此,基尼系数的实际数值只能介于0~1之间,基尼系数越小收入分配越平均,基尼系数越大收入分配越不平均。
设右图中的实际收入分配曲线(红线)和收入分配绝对平等线(绿线)之间的面积为A,和收入分配绝对不平等线(蓝线)之间的面积为B,则表示收入与人口之间的比例的基尼系数为AA+B。
如果A为零,即基尼系数为0,表示收入分配完全平等(红线和绿线重叠);如果B为零,则系数为1,收入分配绝对不平等(红线和蓝线重叠)。
该系数可在0和1之间取任何值。
实际上,一般国家的收入分配,既不是完全平等,也不是完全不平等,而是在两者之间,劳伦茨曲线为一条凸向横轴的曲线。
收入分配越趋向平等,劳伦茨曲线的弧度越小(斜度越倾向45度),基尼系数也越小;反之,收入分配越趋向不平等,劳伦茨曲线的弧度越大,那么基尼系数也越大。
基尼系数的调节需要国家通过财政政策进行国民收入的二次分配,例如对民众的财政公共服务支出和税收等,从而让收入均等化,令基尼系数缩小。
基尼系数由于给出了反映居民之间贫富差异程度的数量界线,可以较客观、直观地反映和监测居民之间的贫富差距,预报、预警和防止居民之间出现贫富两极分化。
因此得到世界各国的广泛认同和普遍采用。
联合国有关组织规定:●若低于0.2表示收入平均;●0.2-0.3表示相对平均;●0.3-0.4表示相对合理;●0.4-0.5表示收入差距大;●0.6以上表示收入差距悬殊。
数值计算方法大作业
![数值计算方法大作业](https://img.taocdn.com/s3/m/4d134a14ce84b9d528ea81c758f5f61fb736283a.png)
数值计算方法大作业
嘿,咱今儿来聊聊数值计算方法大作业呀!这可真是个有趣又有点
头疼的事儿呢!
你想想看,数值计算方法就像是一把神奇的钥匙,能打开好多好多
知识的大门。
做数值计算方法大作业的时候,那感觉就好像在探索一
个神秘的宝藏岛,每一步都充满了未知和挑战。
比如说吧,遇到一个复杂的公式,就像是在森林里碰到了一团乱麻,得耐心地一点点解开。
有时候可能会觉得,哎呀,这可咋整呀,咋这
么难呢!但别急呀,咱得静下心来,仔细琢磨。
这不就跟咱平时解一
道特别难的谜题一样嘛,刚开始觉得毫无头绪,可一旦找到那个关键点,嘿,豁然开朗啦!
在做这个大作业的过程中,可千万不能马虎哟!每一个数据都得像
宝贝一样对待,要是不小心弄错了一个,那可能整个结果都跑偏啦!
这就好比盖房子,一块砖没放好,那房子说不定就歪了呀。
而且呀,团队合作也很重要呢!大家一起讨论,一起想办法,那可
比一个人闷头苦干强多啦。
就好像一群小伙伴一起去冒险,每个人都
能发挥自己的长处,互相帮助,多有意思呀!
还有啊,别忘了多检查几遍自己的成果。
这就跟出门前照镜子一样,得看看自己有没有哪里不妥当。
可别嫌麻烦,这可是关乎最后成果好
不好的关键一步呢!
数值计算方法大作业,它既是挑战,也是机会呀!通过完成它,我们能学到好多好多实用的知识和技能,以后遇到类似的问题,咱就可以轻松应对啦,这多棒呀!所以呀,别害怕它,勇敢地去面对,去探索,去享受这个过程吧!咱肯定能把它完成得漂漂亮亮的,让别人都竖起大拇指,你说是不是呢?。
《数值计算方法》试题与答案
![《数值计算方法》试题与答案](https://img.taocdn.com/s3/m/7c8cb01c974bcf84b9d528ea81c758f5f61f2994.png)
习题一1.设x >0相对误差为2%4x 的相对误差。
解:由自变量的误差对函数值引起误差的公式:(())(())'()()()()f x xf x f x x f x f x δδ∆=≈得(1)()f x =11()()*2%1%22x x δδδ≈===;(2)4()f x x =时444()()'()4()4*2%8%x x x x x xδδδ≈===2.设下面各数都是经过四舍五入得到的近似数,即误差不超过最后一位的半个单位,试指出他们各有几位有效数字。
(1)12.1x =;(2)12.10x =;(3)12.100x =。
解:由教材9P 关于1212.m nx a a a bb b =±型数的有效数字的结论,易得上面三个数的有效数字位数分别为:3,4,53.用十进制四位浮点数计算 (1)31.97+2.456+0.1352; (2)31.97+(2.456+0.1352)哪个较精确?解:(1)31.97+2.456+0.1352 ≈21((0.3197100.245610)0.1352)fl fl ⨯+⨯+ =2(0.3443100.1352)fl ⨯+=0.3457210⨯(2)31.97+(2.456+0.1352)21(0.319710(0.245610))fl fl ≈⨯+⨯ = 21(0.3197100.259110)fl ⨯+⨯ =0.3456210⨯易见31.97+2.456+0.1352=0.345612210⨯,故(2)的计算结果较精确。
4.计算正方形面积时,若要求面积的允许相对误差为1%,测量边长所允许的相对误差限为多少? 解:设该正方形的边长为x ,面积为2()f x x =,由(())(())'()()()()f x xf x f x x f x f x δδ∆=≈解得(())()()'()f x f x x xf x δδ≈=2(())(())22f x x f x x xδδ==0.5%5.下面计算y 的公式哪个算得准确些?为什么?(1)已知1x <<,(A )11121xy x x-=-++,(B )22(12)(1)x y x x =++; (2)已知1x>>,(A )y=,(B )y = (3)已知1x <<,(A )22sin x y x =,(B )1cos2xy x-=;(4)(A)9y =-(B )y =解:当两个同(异)号相近数相减(加)时,相对误差可能很大,会严重丧失有效数字;当两个数相乘(除)时,大因子(小除数)可能使积(商)的绝对值误差增大许多。
数值计算大作业
![数值计算大作业](https://img.taocdn.com/s3/m/aa3584b5fd0a79563d1e7201.png)
课程设计课程名称:设计题目:学号:姓名:完成时间:题目一:非线性方程求根 一 摘要非线性方程的解析解通常很难给出,因此非线性方程的数值解就尤为重要。
本实验通过使用常用的求解方法二分法和Newton 法及改进的Newton 法处理几个题目,分析并总结不同方法处理问题的优缺点。
观察迭代次数,收敛速度及初值选取对迭代的影响。
用Newton 法计算下列方程(1) 310x x --= , 初值分别为01x =,00.45x =,00.65x =; (2) 32943892940x x x +-+= 其三个根分别为1,3,98-。
当选择初值02x =时给出结果并分析现象,当6510ε-=⨯,迭代停止。
解:1)采用MATLAB 进行计算;首先定义了Newton 法:function kk=newton(f,df,x0,tol,N)% Newton Method (牛顿法)% The first parameter f is a external function with respect to viable x.(第一个参数也就是本题所用的函数f )% The second parameter df is the first order diffential function of fx.(第二个参数也就是本体所用函数f 的导数方程df ) % x0 is initial iteration point(初值). % tol is the tolerance of the loop (精度).% N is the maximum number of iterations (循环上限). x=x0;f0=eval(f);df0=eval(df); n=0;disp(' [ n xn xn+1 fn+1 ]'); while n<=N x1=x0-f0/df0; x=x1; f1=eval(f); X=[n,x0,x1,f1]; disp(X);if abs(x0-x1)<tolfprintf('The procedure was successful.') kk=X; return else n=n+1; x0=x1;f0=f1;endendif n==N+1fprintf('the method failed after N iterations. '),kk=0;End我们把Newton法存为.m格式的文件;之后我们运行程序:clear;clc;syms xf=x^3-x-1;df=diff(f,x);x=newton(f,df,1,0.0001,50);x会得到一下结果[ n xn xn+1 fn+1 ]0 1.0000 1.5000 0.87501.0000 1.5000 1.0625 -0.86302.0000 1.0625 1.4940 0.8408到第50次迭代时候会出现该问题:47.0000 1.4898 1.0814 -0.816748.0000 1.0814 1.4898 0.816749.0000 1.4898 1.0814 -0.816750.0000 1.0814 1.4898 0.8167the method failed after N iterations.x =0;同样测试x0=0.45、0.65得不出结果,判断出初值离真值太远,所以我们采用牛顿下山法进行计算迭代:我们定义了其中的f函数和df函数,并且分别存为.m格式的文件,其代码如下:f:function y=f(x)y=x^3-x-1;df:function y=df(x)y=3*x^2-1;之后我们定义newton下山法同时也存为.m的程序:function [x,i]=downnewton(f,df,x0,tol)k=0;i=1;disp(' [ n xn xn+1 fn+1 ]'); while(k==0)fx=feval('f',x0);dfx=feval('df',x0);t=0;u=1;while(t==0)dx=-fx/dfx;x1=x0+u*dx;fx1=feval('f',x1);fx0=feval('f',x0);if(abs(fx1)>abs(fx0));u=u/2;elset=1;endendX=[i,x0,x1,fx1];disp(X);if(abs(fx1)<tol)k=1;elsex0=x1;i=i+1;endendx=x1;i=i;end之后带入x0=0.45;downnewton('f','df',0.45,10^(-6))[ n xn xn+1 fn+1 ]1.0000 0.4500 -0.4155 -0.65622.0000 -0.4155 -0.5857 -0.61523.0000 -0.5857 -0.5754 -0.61514.0000 -0.5754 -0.5782 -0.61515.0000 -0.5782 -0.5773 -0.61516.0000 -0.5773 -0.5774 -0.61517.0000 -0.5774 -0.5773 -0.61518.0000 -0.5773 -0.5774 -0.61519.0000 -0.5774 -0.5774 -0.615110.0000 -0.5774 -0.5774 -0.615111.0000 -0.5774 1.3131 -0.049012.0000 1.3131 1.3248 0.000513.0000 1.3248 1.3247 0.0000ans =1.3247带入x0=0.6;downnewton('f','df',0.6,10^(-6))[ n xn xn+1 fn+1 ]1.0000 0.6000 1.1406 -0.65662.0000 1.1406 1.3668 0.18663.0000 1.3668 1.3263 0.00674.0000 1.3263 1.3247 0.00005.0000 1.3247 1.3247 0.0000ans =1.3247带入x0=1;downnewton('f','df',1,10^(-6))[ n xn xn+1 fn+1 ]1.0000 1.0000 1.5000 0.87502.0000 1.5000 1.3478 0.10073.0000 1.3478 1.3252 0.00214.0000 1.3252 1.3247 0.0000ans =1.32472)同样采用Newton下山法:重新定义f、df:f:function y=f(x)y=x^3+94*x^2-389*x+294;df:function y=df(x)y=3*x^2+188*x-389;再带入初值x0=2;downnewton('f','df',2,5*10^(-6))[ n xn xn+1 fn+1 ]1 2 -98 0ans =-98得出x=-98;分析:先画出该函数的图像;x=(-100:.1:100);ezplot('x^3+94*x^2-389*x+294',[-100 100]) 得出该图像如图:-100-80-60-40-20020406080024681012141618x 105xx 3+94 x 2-389 x+294根据牛顿法的几何解释,在x0=2的点做切线,与y 相交,交点的横坐标值为x=-98则结束了该现象。
《数值计算方法》试题集及答案资料(可打印修改) (2)
![《数值计算方法》试题集及答案资料(可打印修改) (2)](https://img.taocdn.com/s3/m/08d568f50722192e4436f690.png)
19、为求方程 x3―x2―1=0 在区间[1.3,1.6]内的一个根,把方程改写成下列形式,并建
立相应的迭代公式,迭代公式不收敛的是(A )。
x2
1 ,迭代公式 : x 1
xk 1
(A)
1 xk 1
(B)
x
1
1 x2
,迭代公式 :
xk 1
1
1
x
2 k
(C) x3 1 x 2 , 迭代公式 : xk1 (1 xk2 )1/ 3
f (xn ) (xn )
6、对 f (x) x3 x 1,差商 f [0,1,2,3] ( 1 ), f [0,1,2,3,4] ( 0 );
7、计算方法主要研究( 截断 )误差和( 舍入 )误差;
8、用二分法求非线性方程 f
(x)=0 在区间(a,b)内的根时,二分 n 次后的误差限为(
()
四、计算题:
1、用高斯-塞德尔方法解方程组 (要求按五位有效数字计算)。
4x1x142x2x22
x3 x3
11 18
2x1 x2 5x3 22 ,取 x (0) (0,0,0)T ,迭代四次
答案:迭代格式
6
x1(k
1)
1 4
(11
2
x2(k
)
x(k) 3
)
x
(k 2
1)
1 4
(18
()
x2 2、用 1- 2 近似表示 cosx 产生舍入误差。
()
( x x0 )( x x2 ) 3、 (x1 x0 )( x1 x2 ) 表示在节点 x1 的二次(拉格朗日)插值基函数。 ( )
4、牛顿插值多项式的优点是在计算时,高一级的插值多项式可利用前一次插值的结果。
天大《数值计算方法》2016年6月考试期末大作业
![天大《数值计算方法》2016年6月考试期末大作业](https://img.taocdn.com/s3/m/415a317348d7c1c708a14556.png)
数值计算方法要求:1. 独立完成,作答时要写明题型、题号;2. 作答方式:手写作答或电脑录入,使用A4格式白纸;3. 提交方式:以下两种方式任选其一,1) 手写作答的同学可以将作业以图片形式打包压缩上传; 2) 提交电子文档的同学可以将作业以word 文档格式上传;4. 上传文件命名为“中心-学号-姓名-科目.rar ” 或“中心-学号-姓名-科目.doc ”;5. 文件容量大小:不得超过10MB 。
请在以下五组题目中任选一组作答,满分100分。
第一组:一、 简述题(共50分)1、 (28分)已知方程组f AX =,其中⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--=4114334A ,⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-=243024f列出Jacobi 迭代和Gauss-Seidel 迭代法的分量形式。
求出Jacobi 迭代矩阵的谱半径。
2、 (22分)用牛顿法求方程3310x x --=在[]1,2之间的近似根 (1) 请指出为什么初值应取2?(2) 请用牛顿法求出近似根,精确到0.0001。
二、计算题(29分)用反幂法求矩阵2100121001210012A -⎡⎤⎢⎥--⎢⎥=⎢⎥--⎢⎥-⎣⎦的对应于特征值0.4λ=的特征向量三、分析题(21分)设()()23f x x a=-(1)写出解()0f x =的牛顿迭代格式 (2)证明此迭代格式是线性收敛的第二组:一、 计算题(共76分)1、计算题(24分)分别用梯形公式与Simpson 公式计算1x I e dx =⎰的近似值,并估计误差2、计算题(25分)取步长1.0=h ,求解初值问题⎪⎩⎪⎨⎧=+-=1)0(1y y dx dy 用改进的欧拉法求)1.0(y 的值;用经典的四阶龙格—库塔法求)1.0(y 的值。
3、计算题(27分)用雅可比法求210121012A -⎡⎤⎢⎥=--⎢⎥⎢⎥-⎣⎦的特征值 二、简述题(24分)设122,111221Ax b A -⎡⎤⎢⎥==--⎢⎥⎢⎥--⎣⎦讨论雅可比和塞德尔法的收敛性第三组:一、 计算题(共70分)1、 计算题(26分)以100,121,144为插值节点,用插值法计算115的近似值,并利用余项估计误差。
数值计算方法丁丽娟课后习题答案
![数值计算方法丁丽娟课后习题答案](https://img.taocdn.com/s3/m/14f6f96a2e3f5727a5e962e2.png)
数值计算方法丁丽娟课后习题答案【篇一:北京理工大学数值计算方法大作业数值实验1】)书p14/4分别将区间[?10,10]分为100,200,400等份,利用mesh或surf命令画出二元函数的三维图形。
z=|??|+ ??+?? +??++??【matlab求解】[x,y]=meshgrid(-10:0.1:10);a=exp(-abs(x));b=cos(x+y);c=1./(x.^2+y.^2+1);z=a+b+c;mesh(x,y,z);[x,y]=meshgrid(-10:0.05:10);a=exp(-abs(x));b=cos(x+y);c=1./(x.^2+y.^2+1);z=a+b+c;mesh(x,y,z);[x,y]=meshgrid(-10:0.025:10); a=exp(-abs(x));b=cos(x+y);c=1./(x.^2+y.^2+1);z=a+b+c;mesh(x,y,z);(二)书p7/1.3.2数值计算的稳定性(i)取= ??c语言程序—不稳定解 +=ln1.2,按公式=?? (n=1,2,…) #includestdio.h#includeconio.h#includemath.hvoid main(){float m=log(6.0)-log(5.0),n;int i;i=1;printf(y[0]=%-20f,m); while(i20){n=1/i-5*m;printf(y[%d]=%-20f,i,n);m=n;i++;if (i%3==0) printf(\n); }getch();}(ii) c语言程序—稳定解≈??[ ??+?? +?? ??+??按公式 =??(??)#includestdio.h#includeconio.h#includemath.hvoid main(){float m=(1/105.0+1/126.0)/2,n; k=n,n-1,n-2,…)(【篇二:北京理工大学数值计算方法大作业数值实验4】 p260/1考纽螺线的形状像钟表的发条,也称回旋曲线,它在直角坐标系中的参数方程为= ?????????????????? ?? ??????????= ?????????????? ??曲线关于原点对称,取a=1,参数s的变化范围[-5,5],容许误差限分别是,,和。
数值计算方法第1章作业
![数值计算方法第1章作业](https://img.taocdn.com/s3/m/18991a167dd184254b35eefdc8d376eeaeaa17f7.png)
第一章作业第一题问题叙述:构造算法并编程序精确计算二次方程的根。
●设a≠0,b2-4ac>0,且有方程ax2+bx+c=0●包括b2≈b2-4ac的情况(a=c=1,b=±1000000.000001)问题分析:对于普通的二次求根公式:x1,2=−b±√b2−4ac2a当b2>>4ac时,分子可能非常小。
由于计算机中的算术运算存在减性抵消的现象,即两个几乎相等的浮点数相减时会引起舍入误差,所以在这种极端条件下用这个公式就会带来很大的误差。
解决方法:1.使用双精度2.使用变换公式x1,2=−2cb±√b2−4ac3.先利用原公式计算较大的根(即分子不会引起减性抵消),再利用公式:x1x2=c a计算较小的根。
问题解决:1.使用双精度:%This program uses double precision to solve the equation of two degree%And make a comparision to the single precisionclear;clc;[a,b,c]=textread('data.txt','%n%n%n'); %read the numbers from data.txtdelta=b*b-4*a*c;x1=(-b+sqrt(delta))/(2*a);x2=(-b-sqrt(delta))/(2*a); %double precisiona=single(a);b=single(b);c=single(c);%use single precisiondelta=single(b*b-4*a*c);x11=single((-b+sqrt(delta))/(2*a));x12=single((-b-sqrt(delta))/(2*a));fid=fopen('out.txt','w');fprintf(fid,'%g %g %g %g',[x1 x2 x11 x12]);fclose(fid);%write the result into the out.txt下面是计算结果:结论:1.在一般情况下,即没有出现b2≈b2−4ac时,无论是单精度还是双精度下均可以得出正确答案。
数值计算方法大作业
![数值计算方法大作业](https://img.taocdn.com/s3/m/416615184a7302768e9939a3.png)
目录第一章非线性方程求根 (3)1.1迭代法 (3)1.2牛顿法 (4)1.3弦截法 (5)1.4二分法 (6)第二章插值 (7)2.1线性插值 (7)2.2二次插值 (8)2.3拉格朗日插值 (9)2.4分段线性插值 (10)2.5分段二次插值 (11)第三章数值积分 (13)3.1复化矩形积分法 (13)3.2复化梯形积分法 (14)3.3辛普森积分法 (15)3.4变步长梯形积分法 (16)第四章线性方程组数值法 (17)4.1约当消去法 (17)4.2高斯消去法 (18)4.3三角分解法 (20)4.4雅可比迭代法 (21)4.5高斯—赛德尔迭代法 (23)第五章常积分方程数值法 (25)5.1显示欧拉公式法 (25)5.2欧拉公式预测校正法 (26)5.3改进欧拉公式法 (27)5.4四阶龙格—库塔法 (28)数值计算方法第一章非线性方程求根1.1迭代法程序代码:Private Sub Command1_Click()x0 = Val(InputBox("请输入初始值x0"))ep = Val(InputBox(请输入误差限ep))f = 0While f = 0X1 = (Exp(2 * x0) - x0) / 5If Abs(X1 - x0) < ep ThenPrint X1f = 1Elsex0 = X1End IfWendEnd Sub例:求f(x)=e2x-6x=0在x=0.5附近的根(ep=10-10)1.2牛顿法程序代码:Private Sub Command1_Click()b = Val(InputBox("请输入被开方数x0"))ep = Val(InputBox(请输入误差限ep))f = 0While f = 0X1 = x0 - (x0 ^ 2 - b) / (2 * b)If Abs(X1 - x0) < ep ThenPrint X1f = 1Elsex0 = X1End IfWendEnd Sub例:求56的值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数值计算方法大作业-
-资料
-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN
计算方法大作业
学生学号: ********
学生姓名: ****
专业班级: ***********
摘要:大作业通过MATLAB在计算方法中的应用实例,探讨了MATLAB在计算方法中的应用方法和技巧,对运用计算机软件完成“计算方法”课程的图形绘制,多项式方程的求解,计算方法分析具有较好的参考价值。
关键字:MATLAB应用迭代法多项式
引言
在科学研究与工程设计中,经常会遇到数学模型的求解问题,然而在许多情况下,要获得模型问题的准确解是十分困难的,甚至是不可能的。
因此,研究各种数学问题的近似解法非常重要。
数值计算方法又称计算方法或数值计算分析,是一门与计算机应用密切结合的实用性很强的数学课程。
数值计算方法提供的算法具有以下特点:
1.面向计算机,根据计算机的特点设计可行的算法。
2.有可靠的理论依据。
3.高效率。
数值计算方法既重视与方法有关的理论,又重视方法的实际运用,而且数值计算方法课程涉及的面较广泛,包括了微积分、线性代数、常微积分方程等数学问题的数值方法。
所以我们只有努力的掌握这几门课程的基本内容,才能学好这门课程。
掌握数值计算方法,包括数组和数组函数,矩阵和矩阵函数的创建与操作,关系与逻辑操作符的运算,多项式计算,数据分析,以及方程与方程组的解法。
掌握Matla图形和3D可视化的技术,围绕数据成图机理,绘图要旨和修饰技法熟悉各种绘图指令和交互操作工具。
包括二维,三维和高维图形绘制,图形的色彩,光源和材质等效果的处理,以及图形句柄操作和动画制作技术。
Matlab数值计算,数值计算功能是Matlab最具代表性的特点,也是最基本、最重要的功能,它是备受欢迎的基石。
Matlab能够成为世界上最优秀的数学软件之一和它出色的数值运算能力是分不开的。
Matlab在数值运算中以数组和矩阵为基础。
数组是Matlab运算中一个重要的数据组织形式。
按其维数可以分为一维、二维数组和多维数组。
矩阵则是Matlab的基本运算单元。
其中计算方法中的迭代法从已知有近似解计算新近似解的一种规则。
计算规则不同,迭代法也就不同。
下面就是我所采用迭代法计算得出的一个实例
1.产生背景:
牛顿迭代法(Newton's method )又称为牛顿-拉夫逊方法(Newton-Raphson method ),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。
多数方程不存在求根公式,因此求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重要。
方法使用函数f(x)的泰勒级数的前面几项来寻找方程f(x) = 0的根。
牛顿迭代法是求方程根的重要方法之一,其最大优点是在方程f(x) = 0的单根附近具有平方收敛,而且该法还可以用来求方程的重根、复根,此时线性收敛,但是可通过一些方法变成超线性收敛。
另外该方法广泛用于计算机编程中。
2.牛顿迭代公式:
设r 是f(x) = 0的根,选取x0作为r 初始近似值,过点(x0,f(x0))做曲线y = f(x)的切线L ,L 的方程为y = f(x0)+f'(x0)(x-x0),求出L 与x 轴交点的横坐标 x1 = x0-f(x0)/f'(x0),称x1为r 的一次近似值。
过点(x1,f(x1))做曲线y = f(x)的切线,并求该切线与x 轴交点的横坐标 x2 = x1-f(x1)/f'(x1),称x2为r 的二次近似值。
重复以上过程,得r 的近似值序列,其中x(n+1)=x(n)-f(x(n))/f'(x(n)),称为r 的n+1次近似值,上式称为牛顿迭代公式。
解非线性方程f(x)=0的牛顿法是把非线性方程线性化的一种近似方法。
把f(x)在x0点附近展开成泰勒级数 f(x) = f(x0)+(x -x0)f'(x0)+(x -x0)^2*f''(x0)/2! +… 取其线性部分,作为非线性方程f(x) = 0的近似方程,即泰勒展开的前两项,则有f(x0)+f'(x0)(x -x0)=0 设f'(x0)≠0则其解为x1=x0-f(x0)/f'(x0) 这样,得到牛顿法的一个迭代序列:x(n+1)=x(n)-f(x(n))/f'(x(n))。
3.应用: 简单的迭代法
先将方程()0f x =转化为等价方程()x g x =然后从某个数0x 出发,通过计算
()1k k x g x += (k=0 , 1, 2···)
构造系列{}k x .如果()k g x 连续且这个序列收敛于*x ,则有上式可得
()**x g x =
这表序列{}k x 的极限就是方程()x g x =的根,此时对于给定的允许误差,只要k 适当大,k x 就可作为方程的根,*x 满足精度要求的近似值。
这种求误差的方法称为:简单迭代法。
其中()g x 称为迭代函数,0x 称为根的初始近似值,k x 称为根的k 次的近似值,计算公式()1k k x g x +=称为迭代公式或迭代过程。
例2:(见课本15页)
用迭代法求方程()310f x x x =--=的根
由上图可以看出,曲线y=3
x 与直线1y x =+只有一个交点,其横坐标介于1和2之间,故方程有唯一实根*x ∈[]1,2.如将原方程转化为等价方程
31x x =+则相应的迭代公式为
311k k x x +=+取0x =,计算结果如下:
迭代公式
1k x +=
3
11k k x x +=-
0x
1.5 1.5
1x 1.35721 2.375 2x 1.33086 12.3965 3x 1.32588 1904.01 4x 1.32494 96.9025210⨯ 5x 1.32476 … 6x 1.32473 … 7x 1.32472 … 8x 1.32472
… 从计算结果看,可以认为得到的迭代序列是收敛的,且8 1.32472x =是方程*x 的一个较好的近似值。
需要指出的是,将方程()0f x =改写成()x g x =的形式不是唯一的,这将影响到迭代法的收敛性,如例2中的方程也可以转化为等价方程
31x x =-
此时相应的迭代公式是
3
11k k x x +=-
如仍取00.5x =,由表可以看的迭代序列发散。
因此,在使用迭代法求方程的近似值时,首先要考虑一个问题是:如何选取迭代函数()k g x ,是迭代过程()1k k x g x += (k=0 , 1, 2···)
利用牛顿(Newton )迭代法求解多项式:
4325.410.568.954 2.79510x x x x -+-+=的所有实零点。
程序如下:
format long g ; x0=; i=1;
x1=x0-(x0^*x0^3+*x0^*x0+*(4*x0^*x0^2+*/((4*x0^*x0^2+*^2-(x0^*x0^3+*x0^*x0+*(12*x0^*x0+); while abs(x1-x0)> x0=x1;
x1=x0-(x0^*x0^3+*x0^*x0+*(4*x0^*x0^2+*/((4*x0^*x0^2+*^2-
(x0^*x0^3+*x0^*x0 +*(12*x0^*x0+);
end
if 4*x0^*x0^2+*<
i=2;
if 12*x0^*x0+<
i=3;
end
end
x1
i
plot(x0,x1);
5.运行结果:
x1 =
i =3
Matlab图形和3D可视化技术,科学计算常常把计算结果以图形的形式变现出来,Matlab不仅在数值上独占鳌头,而且在数据可视化方面功能也非常强大,足以胜任大多数场合的需求。
通过图形,用户可以从大量的原始离散数据中找出其内在的规律,形象的感受有图形所传递的内在本质信息。
Matlab提供了大量的函数用于将矢量数据以曲线图形的方式进行显示。
它的绘图功能包括二维和三维两大部分。
其中二维图可以实现图标绘制、科学曲线绘制和各种专业数据的可视化显示,三维绘图可以表示向量场的数据以及图形表示二元函数。
主要从以下几个实验来掌握Matlab的图形和3D可视化效果。
调用函数 with(plots)函数绘制图形
运行结果:原始图像
应用牛顿法求有重根的方程时,应用迭代方程
()()()()()()()()()
()()()()2
'
''1*/*x n x n f x n f x n f x n f x n f x n ⎡⎤+=--⎢⎥⎣⎦
且在取不同值时又无法得到结果的情况发生可见牛顿(Newton )法对初值计算很敏感。
6.总结:。