数值分析上机作业

合集下载

数值分析上机作业(总)

数值分析上机作业(总)

数值分析上机实验一、解线性方程组直接法(教材49页14题)追赶法程序如下:function x=followup(A,b)n = rank(A);for(i=1:n)if(A(i,i)==0)disp('Error: 对角有元素为0');return;endend;d = ones(n,1);a = ones(n-1,1);c = ones(n-1);for(i=1:n-1)a(i,1)=A(i+1,i);c(i,1)=A(i,i+1);d(i,1)=A(i,i);endd(n,1) = A(n,n);for(i=2:n)d(i,1)=d(i,1) - (a(i-1,1)/d(i-1,1))*c(i-1,1);b(i,1)=b(i,1) - (a(i-1,1)/d(i-1,1))*b(i-1,1);endx(n,1) = b(n,1)/d(n,1);for(i=(n-1):-1:1)x(i,1) = (b(i,1)-c(i,1)*x(i+1,1))/d(i,1);end主程序如下:function zhunganfaA=[2 -2 0 0 0 0 0 0;-2 5 -2 0 0 0 0 0;0 -2 5 -2 0 0 0 0;0 0 -2 5 -2 0 0 0;0 0 0 -2 5 -2 0 0;0 0 0 0 -2 5 -2 0;0 0 0 0 0 -2 5 -2;0 0 0 0 0 0 -2 5];b=[220/27;0;0;0;0;0;0;0];x=followup(A,b)计算结果:x =8.14784.07372.03651.01750.50730.25060.11940.0477二、解线性方程组直接法(教材49页15题)程序如下:function tiaojianshu(n)A=zeros(n);for j=1:1:nfor i=1:1:nA(i,j)=(1+0.1*i)^(j-1);endendc=cond(A)d=rcond(A)当n=5时c =5.3615e+005d =9.4327e-007当n=10时c =8.6823e+011d =5.0894e-013当n=20时c =3.4205e+022d =8.1226e-024备注:对于病态矩阵A来说,d为接近0的数;对于非病态矩阵A来说,d为接近1的数。

本科数值分析上机作业

本科数值分析上机作业

1ຫໍສະໝຸດ 0e x dx , (2)
2
1
sinx dx x
若能求出真解,比较与真解的差别; 5 给定初值问题 y/=-1000(y-x2)+2x , 0x1。请分别用 Euler 和预测-校正 Euler 算法按步长 h=0.1,0.01,0.001,0.0001 计算其数值解,分析其中遇到的现象及问题
(2)x= 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 y= 29.9 29.0 28.1 27.1 26.2 25.3 24.4 23.6 22.7 21.8 21.0 20.1 19.3 18.5 17.7 16.9 画出点并选取合适的曲线拟合这些点。
4 用 16 点的复合梯形, 8 点的复合 simpson 公式及三点的 Gauss-Legendre 积分公式计算下 列积分 (1)
第二次上机大作业
1, 求解下列数据的Lagrange或者Newton插值并画图。
(1)X=[ 1 2 3 −4 5]; Y=[2 48 272 1182 2262]; 测试证明p(−1) = 12. (2)构造arctan x在[1, 6] 基于等距节点的10次插值多项式.
2, (选做)给定函数 f ( x)
1 , 5 x 5 ,及节点 xi 5 i, i 0,1, 10 ,求其 1 x2
三次样条插值多项式(可取 I 型或 II 型边界条件) ,并画图及与 f ( x) 的图形进行比较分析。 注:涉及到线性方程组求解问题需采用适当的求解算法。 3, (选做一题) (1)某过程涉及两变量 x 和 y, 用多项式拟合给出其对应规律的近似多项式,已知 xi 与 yi 之间的对应数据如下,xi=1,2,…,10 yi = 34.6588 40.3719 14.6448 -14.2721 -13.3570 24.8234 75.2795 103.5743 97.4847 78.2392 请用次数分别为 3,4 次多项式拟合并给出最好近似结果 f(x)。

数值分析大作业

数值分析大作业

数值分析上机作业(一)一、算法的设计方案1、幂法求解λ1、λ501幂法主要用于计算矩阵的按模最大的特征值和相应的特征向量,即对于|λ1|≥|λ2|≥.....≥|λn|可以采用幂法直接求出λ1,但在本题中λ1≤λ2≤……≤λ501,我们无法判断按模最大的特征值。

但是由矩阵A的特征值条件可知|λ1|和|λ501|之间必然有一个是最大的,通过对矩阵A使用幂法迭代一定次数后得到满足精度ε=10−12的特征值λ0,然后在对矩阵A做如下的平移:B=A-λ0I由线性代数(A-PI)x=(λ-p)x可得矩阵B的特征值为:λ1-λ0、λ2-λ0…….λ501-λ0。

对B矩阵采用幂法求出B矩阵按模最大的特征值为λ∗=λ501-λ0,所以λ501=λ∗+λ0,比较λ0与λ501的大小,若λ0>λ501则λ1=λ501,λ501=λ0;若λ0<λ501,则令t=λ501,λ1=λ0,λ501=t。

求矩阵M按模最大的特征值λ的具体算法如下:任取非零向量u0∈R nηk−1=u T(k−1)∗u k−1y k−1=u k−1ηk−1u k=Ay k−1βk=y Tk−1u k(k=1,2,3……)当|βk−βk−1||βk|≤ε=10−12时,迭终终止,并且令λ1=βk2、反幂法计算λs和λik由已知条件可知λs是矩阵A 按模最小的特征值,可以应用反幂法直接求解出λs。

使用带偏移量的反幂法求解λik,其中偏移量为μk=λ1+kλ501−λ140(k=1,2,3…39),构造矩阵C=A-μk I,矩阵C的特征值为λik−μk,对矩阵C使用反幂法求得按模最小特征值λ0,则有λik=1λ0+μk。

求解矩阵M按模最小特征值的具体算法如下:任取非零向量u 0∈R n ηk−1= u T (k−1)∗u k−1y k−1=u k−1ηk−1 Au k =y k−1βk =y T k−1u k (k=1,2,3……)在反幂法中每一次迭代都要求解线性方程组Au k =y k−1,当K 足够大时,取λn =1βk 。

东南大学出版社第二版《数值分析》上机作业答案(前三章)

东南大学出版社第二版《数值分析》上机作业答案(前三章)

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;

数值分析上机作业

数值分析上机作业

第一章(1)按从大到小的顺序计算S的程序为:N#include<stdio.h>void main(){float n,j,s=0;printf("请输入n:");scanf("%f",&n);for(j=2;j<=n;j++)s=s+1/(j*j-1);printf("s=%f\n",s);}(2)按从小到大的顺序计算S的程序为:N#include<stdio.h>void main(){float n,j,s=0;printf("请输入n:");scanf("%f",&n);for(j=n;j>=2;j--)s=s+1/(j*j-1);printf("s=%f\n",s);}(3)精确值,从大到小,从小到大的计算程序为:#include<stdio.h>void main(){float n,j,s1,s2=0,s3=0;printf("请输入n:");scanf("%f",&n);s1=(3.0/2-1/n-1/(n+1))/2;for(j=2;j<=n;j++)s2=s2+1/(j*j-1);for(j=n;j>=2;j--)s3=s3+1/(j*j-1);printf("精确算法的结果为:%f\n",s1);printf("从大到小顺序的结果为:%f\n",s2); printf("从小到大顺序的结果为:%f\n",s3); }结果如下:精确值从大到小的值从小到大的值有效位数从大到小从小到大210S0.740049 0.740049 0.74005 6 5410S0.7499 0.749852 0.7499 4 4610S0.749999 0.749852 0.749999 3 6(4)通过本上机题,我们可以看出:当n较小时,两种算法的结果都很接近精确值,而当n较大时,两种算法的结果差别较大,按从大到小的顺序计算的值与精确值有较大的误差,而按从小到大的顺序计算的值与精确值吻合。

数值分析上机作业(二)

数值分析上机作业(二)

数值分析上机作业(二)曲线逼近一、题目要求设()ln ,[1,3]f x x x x =∈,试求出权函数()1x ρ=的最佳平方逼近二次多项式。

另外请用Chebyshev 截断级数的办法和插值余项极小化方法分别给出近似最佳一致逼近二次多项式。

并画出所有曲线图。

二、方案设计2.1勒让德最佳平方逼近二次多项式2.1.1生成勒让德多项式序列此处利用递推公式12()(21)()(1)()n n n np x n xp x n p x −−=−−−12()1,()p x p x x==递推得到(),1,2,,1n p x n n =⋅⋅⋅+。

此段程序存储为legendre_poly.m 。

2.1.2求特定函数的勒让德多项式勒让德多项式逼近可以表述为0011()()()()n n P x c P x c P x c P x =++⋅⋅⋅+其中系数,0,1,,i c i n =⋅⋅⋅可以通过下式求得11((),())21()()((),())2i i i i i f x P x i c f x P x dx P x P x −+==∫这里需要注意的是,勒让德多项式均定义在(1,1)−上。

当给定函数区间为任意区间(,)a b 时,需要进行区间变换,令(2)()x a b t b a −−=−则(1,1)t ∈−。

由于给定函数区间不为(1,1)−,这里需要进行区间变换。

利用(2)/()t x a b b a =−−−,代入所得的勒让德多项式序列中,对其进行变换。

这样在积分时,即可在区间(,)a b 上进行。

此段程序存储为legendre.m 。

2.1.3给定函数2.1.4主程序将此段程序保存为main.m 。

运行主程序,可以得到勒让德多项式,并在区间(,)a b 上作图。

2.1.5实验数据及结果运行主程序,可得到勒让德多项式为同时可以得到逼近图像图像中散点为原函数对应的数据点。

2.2切比雪夫多项式逼近2.2.1给定函数2.2.2求出切比雪夫多项式序列这里利用递推关系12()2()()n n n T x xT x T x −−=−12()1,()T x T x x==递推得到(),1,2,,1n T x n n =⋅⋅⋅+。

数值分析上机作业

数值分析上机作业

《数值分析》上机作业(第一二三章)学院:电气工程学院班级:电气13级硕士2班教师:石佩虎老师姓名:**学号: ******第一章实验1 舍入误差与有效数设2211NN j S j==-∑,其精确值为1311()221N N --+。

(1) 编制按从大到小的顺序222111 (21311)N S N =+++---,计算N S 的通用程序; (2) 编制按从小到大的顺序222111...1(1)121N S N N =+++----,计算N S 的通用程序; (3) 按两种顺序分别计算210S 、410S 、610S ,并指出有效位数(编制程序时用单精度); (4) 通过本上机题你明白了什么?解答如下:(1). 按从大到小的顺序计算N S 的通用程序如下所示: n=input('Please Input an N (N>1):'); y=0;accurate=1/2*(3/2-1/n-1/(n+1)); %精确值 for i=2:1:n %从大到小的顺序 x=1/(i^2-1);x=single(x); y=y+x; enderror= accurate-y; format long;disp('____________________________________________________'); disp('The value of Sn from large to small is:'); disp(y);disp('The value of error is:'); disp(error);(2) 编制按从小到大的顺序计算N S 的通用程序如下所示: n=input('Please Input an N (N>1):'); y=0;accurate=1/2*(3/2-1/n-1/(n+1)); for i=n:-1:2 x=1/(i^2-1);x=single(x); y=y+x;enderror= accurate-y; format long;disp('____________________________________________________'); disp('The value of Sn from large to small is:'); disp(y);disp('The value of error is:'); disp(error);(3) 计算结果:按从大到小的顺序计算得:(4)总结:当我们采用不同的计算顺序,对于同一个计算式,会得出不同的结果。

数值分析上机作业

数值分析上机作业

数值分析上机作业(1、2、3、4、6章)第一章17. 舍入误差与有效数设2211NN j S j ==-∑,其精确值为1311221N N ⎛⎫-- ⎪+⎝⎭。

(1)编制按从大到小的顺序22211121311N S N =+++---,计算N S 的通用程序; (2)编制按从小到大的顺序2221111(1)121N S N N =+++----,计算N S 的通用程序;(3)按两种顺序分别计算210S ,410S ,610S ,并指出有效位数(编制程序时使用单精度);(4)通过本上机题你明白了什么?运行结果:按从大到小的顺序计算得:N N S误差e有效位数2⨯8 100.7400495 94.95049501392230710-4⨯ 4 100.7498521 54.79049995000258010-6⨯ 3 100.7498521 41.46900000499994310-按从小到大的顺序计算得:N N S误差e有效位数2⨯84.95049501392230710-100.7400495 944.99950003618465610-⨯8 100.7499000 965.00044450291170510-⨯11 100.7499990 13(4)通过本题可以看出,不同算法造成的误差是不同的,好的算法可以让计算结果精度更高。

对于本题,当采用从大到小的顺序累加计算时,计算误差随着N的增大而增大;当采用从小到大的顺序累加计算时,计算误差随着N的增大而减小。

因此在N比较大时宜采用从小到达的顺序累加计算。

第二章20.Newton 迭代法(1)给定初值0x 及容许误差ε,编制Newton 法解方程()0f x =根的通用程序;(2)给定方程3()03x f x x =-=,易知其有三个根*1x =,*20x =,*3x =①由Newton 方法的局部收敛性可知存在0δ>,当0(,)x δδ∈-时Newton 迭代序列收敛于根*2x ,试确定尽可能大的δ;②试取若干初始值,观察当0(,1)x ∈-∞-,(1,)δ--,(,)δδ-,(,1)δ,(1,)+∞时Newton 序列是否收敛以及收敛于哪一个根;(3)通过本上机题,你明白了什么?本实验取610ε-=,找到的最大的0.774597δ=②当0(,1)x ∈-∞-时,计算结果如下:x0 xend -1000 -1.732051 -500 -1.732051 -100 -1.732051 -10 -1.732051 -1.5-1.732051Newton 序列收敛于-1.732051当0(1,)xδ∈--时,计算结果如下:x0 xend-0.95 1.732051-0.90 1.732051-0.85 1.732051-0.80 -1.732051-0.78 -1.732051 Newton序列收敛于1.732051或-1.732051当0(,)xδδ∈-时,计算结果如下:x0 xend-0.77 0.000000-0.5 0.000000-0.1 0.0000000.3 0.0000000.77 0.000000 Newton序列收敛于0当0(,1)xδ∈时,计算结果如下:x0 xend0.78 1.7320510.80 1.7320510.85 -1.7320510.90 -1.7320510.95 -1.732051 Newton序列收敛于1.732051或-1.732051当0(1,)x∈+∞时,计算结果如下:x0 xend1.5 1.73205110 1.732051100 1.732051500 1.7320511000 1.732051Newton序列收敛于1.732051(3)通过本题发现,Newton迭代法解方程初始值的选取非常重要,不同的初始值会收敛于方程不同的根,且有些区间是全局收敛,有些区间是局部收敛。

(完整word版)数值分析上机作业1-1解析

(完整word版)数值分析上机作业1-1解析
问题提出:
考虑一个高次的代数多项式
(E1-1)
显然该多项式的全部根为l,2,…,20,共计20个,且每个根都是单重的(也称为简单的)。现考虑该多项式方程的一个扰动
(E1-2)
其中 是一个非常小的数。这相当于是对(E1-1)中 的系数作一个小的扰动。我们希望比较(E1-1)和(E1-2)根的差别,从而分析方程(E1-1)的解对扰动的敏感性。
ve=zeros(1,21);
ve(21-Numb)=ess;
root=roots(poly(1:20)+ve);
x0=real(root); y0=imag(root);
plot(x0',y0','*');
disp(['对扰动项 ',num2str(Numb),'加扰动',num2str(ess),'得到的全部根为:']);
ess分别为1e-6,1e-8.1e-10,1e-12的图像如下:
从实验的图形中可以看出,当ess充分小时,方程E.1.1和方程E.1.2的解相差很小,当ess逐渐增大时,方程的解就出现了病态解,这些解都呈现复共轭性质。
(2)将扰动项加到x18上后,ess=1e-009时方程的解都比较准确,没有出现复共轭现象。ess=1e-008时误差与x19(ess=1e-009)时相当,即扰动加到x18上比加到x19小一个数量级。对x8的扰动ess=1000时没有出现复共轭,误差很小;对x的扰动ess=10e10时没有出现复共轭,误差很小。因此,扰动作用到xn上时,n越小,扰动引起的误差越小。
if((Numb>20)|(Numb<0))errordlg('请输入正确的扰动项:[0 20]之间的整数!');return;end

数值分析上机作业

数值分析上机作业

数值分析上机实验报告选题:曲线拟合的最小二乘法指导老师:专业:学号:姓名:课题八 曲线拟合的最小二乘法一、问题提出从随机的数据中找出其规律性,给出其近似表达式的问题,在生产实践和科学实验中大量存在,通常利用数据的最小二乘法求得拟合曲线。

在某冶炼过程中,根据统计数据的含碳量与时间关系,试求含碳量y 与时间t 的拟合曲线。

二、要求1、用最小二乘法进行曲线拟合;2、近似解析表达式为()33221t a t a t a t ++=ϕ;3、打印出拟合函数()t ϕ,并打印出()j t ϕ与()j t y 的误差,12,,2,1Λ=j ;4、另外选取一个近似表达式,尝试拟合效果的比较;5、*绘制出曲线拟合图*。

三、目的和意义1、掌握曲线拟合的最小二乘法;2、最小二乘法亦可用于解超定线代数方程组;3、探索拟合函数的选择与拟合精度间的关系。

四、计算公式对于给定的测量数据(x i ,f i )(i=1,2,…,n ),设函数分布为 特别的,取)(x j ϕ为多项式j j x x =)(ϕ (j=0, 1,…,m )则根据最小二乘法原理,可以构造泛函令0=∂∂ka H (k=0, 1,…,m ) 则可以得到法方程求该解方程组,则可以得到解m a a a ,,,10Λ,因此可得到数据的最小二乘解曲线拟合:实际工作中,变量间未必都有线性关系,如服药后血药浓度与时间的关系;疾病疗效与疗程长短的关系;毒物剂量与致死率的关系等常呈曲线关系。

曲线拟合是指选择适当的曲线类型来拟合观测数据,并用拟合的曲线方程分析两变量间的关系。

五、结构程序设计在程序结构方面主要是按照顺序结构进行设计,在进行曲线的拟合时,为了进行比较,在程序设计中,直接调用了最小二乘法的拟合函数polyfit ,并且依次调用了plot 、figure 、hold on 函数进行图象的绘制,最后调用了一个绝对值函数abs 用于计算拟合函数与原有数据的误差,进行拟合效果的比较。

数值分析上机作业

数值分析上机作业

姓名:黄金金 学号:220112244指导老师:江风习题1舍入误差与有效数 设∑=-=N j N j S 2211,其精确值为)11123(21+--N N 。

(1)编制按从小到大的顺序11131121222-+⋅⋅⋅+-+-=N S N ,计算N S 的通用程序。

(2)编制按从大到小的顺序1211)1(111222-+⋅⋅⋅+--+-=N N S N ,计算N S 的通用程序。

(3)按两种顺序分别计算642101010,,S S S ,并指出有效位数。

(编制程序时用单精度)(4)通过本上机题,你明白了什么?c++代码:#include <iostream.h>#include <fstream.h>void main(){float S1,S2,S=0.0,N,j;fstream myfile; //定义文件myfile.open("chap0.txt",ios::in|ios::out);for (int i=0;i<3;i++){do //读入三组数据{cout<<"请输入N 值:";cin>>N;cout<<endl;myfile<<"当N = "<<N<<" 时"<<endl<<endl;}while (N<2);S=(float) ((1.5-(1.0/N)-(1.0/(N+1)))/2);myfile<<"精确值S=:"<<S<<endl<<endl;S1=0.0;S2=0.0;for (j=2;j<=N;j++) S1=S1+(float) (1.0/(j*j-1.0));for (j=N;j>=2;j--) S2=S2+(float) (1.0/(j*j-1.0));myfile<<"按从大到小的顺序求和结果S1=:"<<S1<<endl<<endl;myfile<<"按从小到大的顺序求和结果S2=:"<<S2<<endl<<endl;}myfile.close();}输出结果:当N = 100 时精确值S=:0.740049按从大到小的顺序求和结果S1=:0.740049 有效位数6按从小到大的顺序求和结果S2=:0.74005 有效位数5当N = 10000时精确值S=:0.7499按从大到小的顺序求和结果S1=:0.749852 有效位数 4按从小到大的顺序求和结果S2=:0.7499 有效位数 4当N =1000000时精确值S=:0.749999按从大到小的顺序求和结果S1=:0.749852 有效位数 4按从小到大的顺序求和结果S2=:0.749999 有效位数 6体会:通过本题,我认识到了舍入误差对计算结果的影响,所以必须选择合适的计算方法,尽量减少这种误差的影响。

数值分析上机作业最强版

数值分析上机作业最强版

数值分析上机作业姓名:唐皓学号:142460专业:道路与铁道工程院系:交通学院授课教师:吴宏伟日期:2015年1月习题一1 题目17.(上机题)舍入误差与有效数 设2211NN j S j ==-∑,其精确值为1311221N N ⎛⎫-- ⎪+⎝⎭。

(1)编制按从大到小的顺序22211121311N S N =+++---,计算N S 的通用程序; (2)编制按从小到大的顺序2221111(1)121N S N N =+++----,计算N S 的通用程序; (3)按两种顺序分别计算210S ,410S ,610S ,并指出有效位数。

(编制程序时用单精度);(4)通过本上机题你明白了什么?2 通用程序代码2.1 按从小到大的顺序计算N Svoid AscendSum(unsigned long int N)// 计算从大到小的总和 {for (unsigned long int j=2;j<=N;j++) ascendSum+=(float )1.0/(j*j-1);cout<<"Sum From 1 to N (Ascend) is: "<<ascendSum<<endl; Error(ascendSum); Delimiter();} 2.2 按从大到小的顺序计算N Svoid DescendSum(unsigned long int N)//计算从小到大的总和 {for (unsigned long int j=N;j>=2;j--) descendSum+=(float )1.0/(j*j-1);cout<<"Sum From N to 1 (Descend) is: "<<descendSum<<endl; Error(descendSum); Delimiter();}3计算结果展示图1 N=100时的计算结果图2 N=10000时的计算结果图3 N=1000000时的计算结果表1-1 计算结果汇总N S 精确值按从小到大按从大到小N S 值有效位数 N S 值有效位数210S 0.7400494814 0.7400494814 10 0.740049541 6 410S 0.7498999834 0.7498521209 4 0.7498999834 10 610S0.74999898670.75185602920.752992510824 计算结果分析(1)如果采用单精度数据结构进行计算,则相较于双精度的数据结果,由于数据存储字长的限制导致计算机存在较大的舍入误差,因此本程序采用的是双精度数据存储方式。

第四章数值分析上机作业

第四章数值分析上机作业

1.用两种方法解sin 5cos 20.31x x +=-,如何一次求出此方程的四个根。

解:方法一:在Matlab 命令窗口输入命令x=solve('sin(5*x)+cos(2*x)=-0.31')运行后输出结果:x =- 0.36685340479904406504913603551901 - 0.089925518994485866153169602644131*i 方法二:在Matlab 命令窗口输入命令E1=sym('sin(5*x)+cos(2*x)=-0.31');[x1]=solve(E1)运行后输出结果:x1 =- 0.36685340479904406504913603551901 - 0.089925518994485866153169602644131*i 2.用三种方法解方程11852912312x x x x -+-=。

解:方法一:在Matlab 命令窗口输入命令x=solve('9*x^11-12*x^8+x^5-3*x^2=12')运行后输出结果:x =1.1945355092112803561808169303487 - 0.25878939596021341127295614138703 + 0.98996423045277565907337492165509*i - 0.91081125361412082546165956220494 + 0.34557668006489020731472236114125*i - 0.6567748898900820562684890790666 - 0.94093805304063227438930031737768*i - 0.6567748898900820562684890790666 + 0.94093805304063227438930031737768*i 0.34695114229720670305614226506505 + 0.85428006847946699100354057810685*i - 0.25878939596021341127295614138703 - 0.98996423045277565907337492165509*i 0.88215664256156941185655405241917 + 0.47468310614563172153151897912015*i 0.34695114229720670305614226506505 - 0.85428006847946699100354057810685*i 0.88215664256156941185655405241917 - 0.47468310614563172153151897912015*i - 0.91081125361412082546165956220494 - 0.34557668006489020731472236114125*i 方法二:在Matlab 命令窗口输入命令fa=[9,0,0,-12,0,0,1,0,0,-3,0,-12];xk=roots(fa)运行后输出结果:xk =-0.9108 + 0.3456i-0.9108 - 0.3456i-0.6568 + 0.9409i-0.6568 - 0.9409i-0.2588 + 0.9900i-0.2588 - 0.9900i1.1945 + 0.0000i0.8822 + 0.4747i0.8822 - 0.4747i0.3470 + 0.8543i0.3470 - 0.8543i方法三:在Matlab命令窗口输入命令E1=sym('9*x^11-12*x^8+x^5-3*x^2-12=0'); [x1]=solve(E1)运行后输出结果:x1 =1.1945355092112803561808169303487 - 0.25878939596021341127295614138703 + 0.98996423045277565907337492165509*i - 0.91081125361412082546165956220494 + 0.34557668006489020731472236114125*i - 0.6567748898900820562684890790666 - 0.94093805304063227438930031737768*i - 0.6567748898900820562684890790666 + 0.94093805304063227438930031737768*i 0.34695114229720670305614226506505 + 0.85428006847946699100354057810685*i - 0.25878939596021341127295614138703 - 0.98996423045277565907337492165509*i 0.88215664256156941185655405241917 + 0.47468310614563172153151897912015*i 0.34695114229720670305614226506505 - 0.85428006847946699100354057810685*i 0.88215664256156941185655405241917 - 0.47468310614563172153151897912015*i - 0.91081125361412082546165956220494 - 0.34557668006489020731472236114125*3 用MATLAB 方法求函数11852()912312f x x x x x =-+--的导数'()f x 。

数值分析上机作业(2)

数值分析上机作业(2)

一、数值求解如下正方形域上的Poisson 方程边值问题 2222(,)1,0,1(0,)(1,)(1),01(,0)(,1)0,01u u f x y x y x y u y u y y y y u x u x x ⎧⎛⎫∂∂-+==<<⎪ ⎪∂∂⎪⎝⎭⎨==-≤≤⎪⎪==≤≤⎩二、用椭圆型第一边值问题的五点差分格式得到线性方程组为2,1,1,,1,10,1,,0,141,?,?,?,?0,1i j i j i j i j i j ijj N j i i N u u u u u h f i j N u u u u i j N -+-+++----=≤≤====≤≤+, 写成矩阵形式Au=f 。

其中1.三 、编写求解线性方程组Au=f 的算法程序, 用下列方法编程计算, 并比较计算速度。

2.用Jacobi 迭代法求解线性方程组Au=f 。

3.用块Jacobi 迭代法求解线性方程组Au=f 。

4. 用SOR 迭代法求解线性方程组Au=f,用试算法确定最佳松弛因子。

1122N N v b v b u f v b ⎛⎫⎛⎫ ⎪ ⎪ ⎪ ⎪== ⎪ ⎪ ⎪ ⎪⎝⎭⎝⎭4114114ii A -⎛⎫ ⎪- ⎪= ⎪- ⎪-⎝⎭11,12,1,121,22,2,21,2,,2211,12,1,121,22,2,221,2,,(,,...,),(,,...,),......,(,,...,)(,,...,)?,(,,...,)?,......,(,,...,)?1,999,0.10.011T T N N TN N N N N T T N N T N N N N N v u u u v u u u v u u u b h f f f b h f f f b h f f f h N h N ====+=+=+===+取或则或,1,,1,2,...,i j f i j N== 1122NN A I I A A I I A -⎛⎫ ⎪- ⎪= ⎪- ⎪-⎝⎭5.用块SOR 迭代法求解线性方程组Au=f,用试算法确定最佳松弛因子。

数值分析上机

数值分析上机

7 数值分析上机作业
m=0; else if(fabs(t1)<=1) m=0.5*fabs(t1)*fabs(t1)*fabs(t1)-t1*t1+2.0/3.0; else m=-1.0/6.0*fabs(t1)*fabs(t1)*fabs(t1)+t1*t1-2*fabs(t1)+4.0/3.0; return(m); } float func2(float t2) {double n; if(fabs(t2)>=2.0/3.0) n=0; else if(-0.5<=fabs(t2)&&fabs(t2)<=0.5) n=-t2*t2+3.0/4.0; else n=0.5*t2*t2-(3.0/2.0)*fabs(t2)+9.0/8.0; return(n); }
6 数值分析上机作业
int i,j,k; int a[12][12]={{-1,0,1,0,0,0,0,0,0,0,0,0}, {1,4,1,0,0,0,0,0,0,0,0,0}, {0,1,4,1,0,0,0,0,0,0,0,0}, {0,0,1,4,1,0,0,0,0,0,0,0}, {0,0,0,1,4,1,0,0,0,0,0,0}, {0,0,0,0,1,4,1,0,0,0,0,0}, {0,0,0,0,0,1,4,1,0,0,0,0}, {0,0,0,0,0,0,1,4,1,0,0,0}, {0,0,0,0,0,0,0,1,4,1,0,0}, {0,0,0,0,0,0,0,0,1,4,1,0}, {0,0,0,0,0,0,0,0,0,1,4,1}, {0,0,0,0,0,0,0,0,0,-1,0,1}}; float b1,b2; float s1=0,s2=0; for (k=0;k<=500;k++) for (i=0;i<=11;i++) {b1=0; b2=0;

数值分析 上机作业

数值分析 上机作业

1.已知矩阵A=1078775658610975910⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦,B=2345644567036780028900010⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦,错误!未找到引用源。

=11/21/31/41/51/6 1/21/31/41/51/61/7 1/31/41/51/61/71/8 1/41/51/61/71/81/9 1/51/61/71/81/91/10 1/61/71/81/91/101/11⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦(1)用MATLAB函数“eig”求矩阵全部特征值。

(2)用基本QR算法求全部特征值(可用MA TLAB函数“qr”实现矩阵的QR分解)。

解:MATLAB程序如下:求矩阵A的特征值:clear;A=[10 7 8 7;7 5 6 5;8 6 10 9;7 5 9 10];E=eig(A)输出结果:求矩阵B的特征值:clear;B=[2 3 4 5 6;4 4 5 6 7;0 3 6 7 8;0 0 2 8 9;0 0 0 1 0];E=eig(B)输出结果:求矩阵错误!未找到引用源。

的特征值:clear;错误!未找到引用源。

=[1 1/2 1/3 1/4 1/5 1/6; 1/2 1/3 1/4 1/5 1/6 1/7; 1/3 1/4 1/5 1/6 1/7 1/8; 1/4 1/5 1/6 1/7 1/8 1/9;1/5 1/6 1/7 1/8 1/9 1/10; 1/6 1/7 1/8 1/9 1/10 1/11]; E=eig(错误!未找到引用源。

)输出结果:(2)A=1078775658610975910第一步:A0=hess(A);[Q0,R0]=qr(A0);A1=R0*Q0 返回得到:第二部:[Q1,R1]=qr(A1);A2=R1*Q1第三部:[Q2,R2]=qr(A2);A3=R2*Q2现在收缩,继续对A3的子矩阵错误!未找到引用源。

最新(完美版)数值分析上机作业

最新(完美版)数值分析上机作业

一. 上机作业任务一: 用五点差分格式求解Poisson 方程边值问题,P124-------3、4(任选一题)。

二. 上机作业任务二:用Simpson 求积法计算定积分()baf x dx ⎰。

下面两种方法任选一。

(1)变步长复化Simpson 求积法。

(2)自适应Simpson 求积法三. 上机作业任务三:用MATLAB 语言编写连续函数最佳平方逼近的算法程序(函数式M 文件)。

要求算法程序可以适应不同的具体函数,具有一定的通用性。

并用此程序进行数值试验,写出计算实习报告。

所编程序具有以下功能:1. 用Lengendre 多项式做基,并适合于构造任意次数的最佳平方逼近多项式。

可利用递推关系 0112()1,()()(21)()(1)()/2,3,.....n n n P x P x xP x n xP x n P x n n --===---⎡⎤⎣⎦=2. 被逼近函数f(x)用M 文件建立数学函数。

这样,此程序可通过修改建立数学函数的M 文件以适用不同的被逼近函数(要学会用函数句柄)。

3. 要考虑一般的情况]1,1[],[)(+-≠∈b a x f 。

因此,程序中要有变量代换的功能。

4. 计算组合系数时,计算函数的积分采用数值积分的方法。

5. 程序中应包括帮助文本和必要的注释语句。

另外,程序中也要有必要的反馈信息。

6. 程序输入:(1)待求的被逼近函数值的数据点0x (可以是一个数值或向量)(2)区间端点:a,b 。

7. 程序输出:(1)拟合系数:012,,,...,n c c c c(2)待求的被逼近函数值00001102200()()()()()n n s x c P x c P x c P x c P x =++++ 8. 试验函数:()cos ,[0,4]f x x x x =∈+;也可自选其它的试验函数。

9. 用所编程序直接进行计算,检测程序的正确性,并理解算法。

10. 分别求二次、三次、。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3
(2)①
function [ ] = Two_20_2( ) precision = input('请输入搜索精度:'); epsilong = input('请输入允许误差:'); xend = 0; k = 0; while abs( xend-0 ) < epsilong k = k + precision; xend = Two_20_1( k,epsilong ); end fprintf('最大的 delta 值为:%f\n',k); end
xend 1.732051 1.732051 1.732051 1.732051 1.732051
第三章
39.列主元 Gauss 消去法 对于某电路的分析,归结为求解线性方程组 RI V ,其中
0 0 10 0 0 0 31 13 0 13 35 9 0 11 0 0 0 0 0 9 31 10 0 0 0 0 0 0 10 79 30 0 0 0 9 0 R 0 0 0 30 57 7 0 5 0 0 0 0 7 47 30 0 0 0 0 0 0 0 0 30 41 0 0 0 0 0 5 0 0 27 2 0 0 0 0 9 0 0 0 2 29
运行结果:
请输入 N 值:10^2 精确值为:0.740049504950495 从大到小顺序累加得 SN=0.7400495 从小到大顺序累加得 SN=0.7400495 请输入 N 值:10^4 精确值为:0.749900004999500 从大到小顺序累加得 SN=0.7498521 从小到大顺序累加得 SN=0.7499000 请输入 N 值:10^6 精确值为:0.749999000000500 从大到小顺序累加得 SN=0.7498521 从小到大顺序累加得 SN=0.7499990
SN
0.7400495 0.7499000 0.7499990
有效位数 8 8 11
102 104 106
4.950495013922307 109 4.999500036184656 109 5.000444502911705 1013
(4)通过本题可以看出,不同算法造成的误差是不同的,好的算法可以让计算结果精 度更高。对于本题,当采用从大到小的顺序累加计算时,计算误差随着 N 的增大而增大;当 采用从小到大的顺序累加计算时,计算误差随着 N 的增大而减小。因此在 N 比较大时宜采 用从小到达的顺序累加计算。
end end
(3)
function [ ] = One_17_3( ) N = input('请输入 N 值:'); S0 = single( 1/2*(3/2-1/N-1/(N+1)) ); S1 = One_17_1( N ); S2 = One_17_2( N ); fprintf('精确值为:%f\n',S0); fprintf('从大到小顺序累加得 SN=%f\n',S1); fprintf('从小到大顺序累加得 SN=%f\n',S2); end
5
xend 1.732051 1.732051 1.732051 -1.732051 -1.732051
xend 0.000000 0.000000 0.000000 0.000000 0.000000
xend 1.732051 1.732051 -1.732051 -1.732051 -1.732051
解向量如下所示:
0.28923 0.34544 0.71281 0.22061 I 0.43040 0.15431 0.05782 0.201050 0.29023
(3)在本题目的编程之中,我学会了矩阵的数乘和循环语句的嵌套使用,学会了用数 学工具来处理复杂方程的解的问题。 同时也学会了在电路分析等自己的专业领域运用列主元 高斯消去法解决问题。
4
当 x0 (1, ) 时,计算结果如下: x0 -0.95 -0.90 -0.85 -0.80 -0.78 Newton 序列收敛于 1.732051 或-1.732051 当 x0 ( , ) 时,计算结果如下: x0 -0.77 -0.5 -0.1 0.3 0.77 Newton 序列收敛于 0 当 x0 ( ,1) 时,计算结果如下: x0 0.78 0.80 0.85 0.90 0.95 Newton 序列收敛于 1.732051 或-1.732051 当 x0 (1, ) 时,计算结果如下: x0 1.5 10 100 500 1000 Newton 序列收敛于 1.732051 (3)通过本题发现,Newton 迭代法解方程初始值的选取非常重要,不同的初始值会收 敛于方程不同的根,且有些区间是全局收敛,有些区间是局部收敛。此外,发现 Newton 迭 代法虽然使用方便,但是在数据量较大时,寻找最优的迭代区间变得非常困难,本实验为了 找出尽可能大的 值,程序运行了很长一段时间,因此 Newton 迭代法最优收敛区间寻找的 普遍方法可能是一个非常有用的课题。
运行结果:
请输入搜索精度:10^-6 请输入允许误差:10^-6 最大的 delta 值为:0.774597
本实验取 10 ,找到的最大的 0.774597
6
② 当 x0 (, 1) 时,计算结果如下: x0 -1000 -500 -100 -10 -1.5 Newton 序列收敛于-1.732051 xend -1.732051 -1.732051 -1.732051 -1.732051 -1.732051
function [ S ] = One_17_1( N ) S = single( 0 ); for i = 2:N S = S + 1/(i^2-1); end end
(2)
function [ S ] = One_17_2( N ) S = single( 0 ); for i = N:-1:2 S = S + 1/(i^2-1);
数值分析上机作业
(1、2、3、4、6 章)
第一章
17. 舍入误差与有效数 设 SN
j
j 2
N
2
1 13 1 1 ,其精确值为 。 1 2 2 N N 1
1 1 2 2 1 3 1
2
(1)编制按从大到小的顺序 S N (2)编制按从小到大的顺序 S N 程序;
6
% 求解 x=zeros(1,size(A,1)); for z=size(A,1):-1:1 a = A(z,1:end-1); b = sum( a.*x ); x(z) = ( A(z,end)-b ) / A(z,z); end end
(2)消元后所得增广矩阵:
31.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 -13.00000 29.54839 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 -9.00000 28.25873 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 -10.00000 75.46127 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 -11.00000 -3.35044 -31.18563 44.60200 0.00000 0.00000 0.00000 0.00000 -10.00000 -4.19355 -1.27729 -0.45200 -7.17969 45.87319 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 -30.00000 21.38070 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 -5.00000 -0.78472 -0.51319 26.41308 0.00000 0.00000 0.00000 0.00000 -9.00000 -3.57799 -0.56154 -0.36724 -2.42000 27.38950 -15.00000 20.70968 -16.69214 -5.90690 -22.34832 8.49257 -1.44605 4.60810 7.94922
function [ A,x ] = Three_39( A,b ) A = [A,b]; for i=1:size(A,1) % 列主元交换 a=A(i:end,i); f=find(a==max(a)); n=A(f(1)+i-1,:); A(i,:)=A(f(1)+i-1,:); A(f(1)+i-1,:)=n; % 消元 for j=i+1:size(A,1) A(j,:)=A(j,:)-A(i,:)*( A(j,i)/A(i,i) ); end end
2
第二章
20.Newton 迭代法 (1)给定初值 x0 及容许误差 ,编制 Newton 法解方程 f ( x) 0 根的通用程序; (2)给定方程 f ( x)
x3 * * * 3 , x2 3; x 0 ,易知其有三个根 x1 0 , x3 3
①由 Newton 方法的局部收敛性可知存在 0 ,当 x0 (, ) 时 Newton 迭代序
* 列收敛于根 x2 ,试确定尽可能大的 ;
②试取若干初始值,观察当 x0 (, 1) , (1, ) , ( , ) , ( ,1) , (1, ) 时 Newton 序列是否收敛以及收敛于哪一个根; (3)通过本上机题,你明白了什么?
相关文档
最新文档