计算方法上机作业集合

合集下载

数值上机作业1

数值上机作业1

数值计算方法课程设计姓名高振翔学号201211011066班级信计12-2成绩:1编写秦九韶算法程序,并用该程序计算多项式623)(35+-+=x x x x f 在1.3 1.2, ,1.1=x 的值function value=qinjiushao(A,x)n=length(A);F=zeros(n);F(1)=A(1);for i=1:n-1F(i+1)=F(i)*x+A(i+1);endvalue=F(n)disp('真值')polyval(A,x)程序:function s=qinjiuzhao(a,x)n=length(a);s=a(1);for k=2:n;s=s*x+a(k);end3. 调试:a=[1 0 3 –2 6];s=qinjiuzhao(a,1,1)s=qinjiuzhao(a,1,2)s=qinjiuzhao(a,1,3)结果:s=9.4035 s=11.2723 s=13.70392. *用选列主元高斯消去法解线性方程组⎪⎪⎩⎪⎪⎨⎧=+-=-+-=-+-=--02 02 0 21 34343232121x x x x x x x x x x 计算的matlab 程序:tic%运行时间命令A=[-3 -1 0 0;-1 2 -1 0;0 -1 2 -1;0 0 -1 2]; b=[1 0 0 0]'; ];%A 系数矩阵,b 为n 维向量 y=inv(A)*b; %matlab 的计算结果y= -0.2667-0.2000-0.1333-0.0667n=length(b); x=zeros(n,1); %方程个数n;x 未知向量%——以下消为去过程——for k=1:n-1% if A(k,k)=0;% error('Error');% endfor i=k+1:n% A(i,k)=A(i,k)/A(k,k);Aik=A(i,k)/A(k,k)for j=k:nA(i,j)=A(i,j)-Aik*A(k,j);endAb(i)=b(i)-Aik*b(k)endend%——回代——Aik =0.3333A =-3.0000 -1.0000 0 00 2.3333 -1.0000 00 -1.0000 2.0000 -1.00000 0 -1.0000 2.0000b =1.0000-0.3333Aik =A =-3.0000 -1.0000 0 00 2.3333 -1.0000 00 -1.0000 2.0000 -1.00000 0 -1.0000 2.0000b =1.0000-0.3333Aik =A =-3.0000 -1.0000 0 00 2.3333 -1.0000 00 -1.0000 2.0000 -1.00000 0 -1.0000 2.0000b =1.0000-0.3333Aik =-0.4286A =-3.0000 -1.0000 0 00 2.3333 -1.0000 00 0 1.5714 -1.00000 0 -1.0000 2.0000b =1.0000-0.3333-0.1429Aik =A =-3.0000 -1.0000 0 00 2.3333 -1.0000 00 0 1.5714 -1.00000 0 -1.0000 2.0000b =1.0000-0.3333-0.1429Aik =-0.6364A =-3.0000 -1.0000 0 00 2.3333 -1.0000 00 0 1.5714 -1.00000 0 0 1.3636b =1.0000-0.3333-0.1429-0.0909>> x(n)=b(n)/A(n,n)x =-0.0667>> for k=n-1:-1:1S=b(k);for j=k+1:nS=S-A(k,j)*x(j);endx(k)=S/A(k,k)endx =-0.1333-0.0667x =-0.2000-0.1333-0.0667x =-0.2667-0.2000-0.1333-0.0667>> xx =-0.2667-0.2000-0.1333-0.0667>> error=abs(x-ones(n,1)) ))%误差error =1.26671.20001.13331.0667toc%运行时间命令运行时间:348.6710结构分析:在用高斯消去法求解方程组的解,化为阶梯型时,主元过小可能产生麻烦,会产生很大的误差,既小主元要在分母上,产生的误差变化很大,所以应避免采用绝对值最小的主元素,对于一般矩阵来说,最好每一步选取系数矩阵或消元后的低阶矩阵中绝对值最大的元素作为主元素,使高斯消去法具有较好的稳定性,主要使用列主元消去法!小结:在求解方程组时,使用列主元消去法,先判定方程组的系数矩阵非奇异,然后进行行变换,按列主元消去法化为阶梯型,当计算到系数行列式为0时计算停止,然后在回代求解最终求得原方程组的解。

计算方法上机作业——龙格库塔法

计算方法上机作业——龙格库塔法

计算方法上机作业——龙格库塔法龙格库塔法(Runge-Kutta method)是一种常用于求解常微分方程(Ordinary Differential Equation,ODE)的数值解法。

它是由德国数学家卡尔·龙格(Carl Runge)和马丁·威尔海姆·库塔(Martin Wilhelm Kutta)在20世纪初提出的。

龙格库塔法的基本思想是通过数值逼近来计算微分方程的近似解。

在讲解龙格库塔法之前,我们先来简单回顾一下ODE的一阶常微分方程的基本形式:y′(y)=y(y,y)其中,y(y,y)是已知函数。

龙格库塔法的核心是使用差分逼近计算函数的斜率。

假设我们要求解的方程为:y′(y)=y(y,y),y(y)=y₀所需计算的点为y₀,y₁,...,yy,对应的函数值为y₀,y₁,...,yy,其中y是步长的个数。

龙格库塔法通过递推关系式来计算估计值,并不断更新当前点的函数值。

接下来以龙格库塔法的经典四阶形式为例进行说明。

该方法的基本方程如下:yy+1=yy+(y₁+2y₂+2y₃+y₄)/6y₁=ℎy(yy,yy)y₂=ℎy(yy+ℎ/2,yy+y₁/2)y₃=ℎy(yy+ℎ/2,yy+y₂/2)y₄=ℎy(yy+ℎ,yy+y₃)其中y表示当前步骤,ℎ表示步长,yy表示当前点的函数值,y₁,y₂,y₃和y₄则表示对应的斜率。

使用龙格库塔法,我们可以通过不断递归计算来求得指定区间(例如[y,y])上的函数值。

具体步骤如下:1.确定求解区间[y,y]和初始点(y₀,y₀)以及步长ℎ。

2.初始化:设置yy=y₀,yy=y₀。

3.对所有y=0,...,y−1:计算y₁,y₂,y₃和y₄,根据上述递推关系式。

根据递推关系式计算yy+1更新当前点的函数值,即yy+1=y(yy+1)。

更新当前点的y值,即yy+1=yy+ℎ。

4.返回结果:最终求得的函数值。

需要注意的是,选择适当的步长对最终结果的精度和计算效率都有重要影响。

计算方法上机作业集合

计算方法上机作业集合

第一次&第二次上机作业上机作业:1.在Matlab上执行:>> 5.1-5-0.1和>> 1.5-1-0.5给出执行结果,并简要分析一下产生现象的原因。

解:执行结果如下:在Matlab中,小数值很难用二进制进行描述。

由于计算精度的影响,相近两数相减会出现误差。

2.(课本181页第一题)解:(1)n=0时,积分得I0=ln6-ln5,编写如下图代码从以上代码显示的结果可以看出,I 20的近似值为0.7465(2)I I =∫I I 5+I 10dx,可得∫I I 610dx ≤∫I I 5+I 10dx ≤∫I I 510dx,得 16(I +1)≤I I ≤15(I +1),则有1126≤I 20≤1105, 取I 20=1105,以此逆序估算I 0。

代码段及结果如下图所示(3)从I20估计的过程更为可靠。

首先根据积分得表达式是可知,被积函数随着n的增大,其所围面积应当是逐步减小的,即积分值应是随着n的递增二单调减小的,(1)中输出的值不满足这一条件,(2)满足。

设I I表示I I的近似值,I I-I I=(−5)I(I0−I0)(根据递推公式可以导出此式),可以看出,随着n的增大,误差也在增大,所以顺序估计时,算法不稳定性逐渐增大,逆序估计情况则刚好相反,误差不断减小,算法逐渐趋于稳定。

2.(课本181页第二题)(1)上机代码如图所示求得近似根为0.09058 (2)上机代码如图所示得近似根为0.09064;(3)牛顿法上机代码如下计算所得近似解为0.09091第三次上机作业上机作业181页第四题线性方程组为[1.13483.83260.53011.78751.16513.40172.53301.54353.41294.93171.23714.99988.76431.314210.67210.0147][I1I2I3I4]=[9.53426.394118.423116.9237](1)顺序消元法A=[1.1348,3.8326,1.1651,3.4017;0.5301,1.7875,2.5330,1.5435;3.4129,4.9317,8.7643,1.3142;1.2371,4.9998,10.6721,0.0147]; b=[9.5342;6.3941;18.4231;16.9237];上机代码(函数部分)如下function [b] = gaus( A,b )%用b返回方程组的解B=[A,b];n=length(b);RA=rank(A);RB=rank(B);dif=RB-RA;if dif>0disp('此方程组无解');returnendif RA==RBif RA==nformat long;disp('此方程组有唯一解');for p=1:n-1for k=p+1:nm=B(k,p)/B(p,p);B(k,p:n+1)=B(k,p:n+1)-m*B(p,p:n+1);endend %顺序消元形成上三角矩阵b=B(1:n,n+1);A=B(1:n,1:n);b(n)=b(n)/A(n,n);for q=n-1:-1:1b(q)=(b(q)-sum(A(q,q+1:n)*b(q+1:n)))/A(q,q);end %回代求解elsedisp('此方程组有无数组解');endend上机运行结果为>>A=[1.1348,3.8326,1.1651,3.4017;0.5301,1.7875,2.5330,1.5435;3.4129,4.9317,8.7643,1.3142;1.2371,4.9998,10.6721,0.0147]; b=[9.5342;6.3941;18.4231;16.9237];>> X=gaus(A,b)此方程组有唯一解X =1.00001.00001.00001.0000>>(2)列主元消元法A=[1.1348,3.8326,1.1651,3.4017;0.5301,1.7875,2.5330,1.5435;3.4129,4.9317,8.7643,1.3142;1.2371,4.9998,10.6721,0.0147]; b=[9.5342;6.3941;18.4231;16.9237];函数部分代码如下function [b] = lieZhu(A,b )%用b返回方程组的解B=[A,b];RA=rank(A);RB=rank(B);n=length(b);dif=RB-RA;format long;if dif>0disp('该方程组无解');returnendif dif==0if RA==ndisp('该方程组有唯一解');c=zeros(1,n);for i=1:n-1max=abs(A(i,i));m=i;for j=i+1:nif max<abs(A(j,i))max=abs(A(j,i));m=j;endend %求出每一次消元时绝对值最大的一行的行号 if m~=ifor k=i:nc(k)=A(i,k);A(i,k)=A(m,k);A(m,k)=c(k);endd1=b(i);b(i)=b(m);b(m)=d1;%函数值跟随方程一起换位置endfor k=i+1:nfor j=i+1:nA(k,j)=A(k,j)-A(i,j)*A(k,i)/A(i,i);endb(k)=b(k)-b(i)*A(k,i)/A(i,i);A(k,i)=0;endend %完成消元操作,形成上三角矩阵b(n)=b(n)/A(n,n);for i=n-1:-1:1sum=0;for j=i+1:nsum=sum+A(i,j)*b(j);endb(i)=(b(i)-sum)/A(i,i) ;%回代求解其他未知数endendelsedisp('此方程组有无数组解');endend上机运行,结果为>>A=[1.1348,3.8326,1.1651,3.4017;0.5301,1.7875,2.5330,1.5435;3.4129,4.9317,8.7643,1.3142;1.2371,4.9998,10.6721,0.0147]; b=[9.5342;6.3941;18.4231;16.9237];X=lieZhu(A,b)该方程组有唯一解X =1.00001.00020.99990.9999>>根据两种方法运算结果,顺序消元法得到结果比列主元消元法得到的结果精度更高。

应用计算方法

应用计算方法

结果分析:比较发现,经过两种改进迭代法,求重根时迭代速度明显加快。
3-4 试验目的体验 Steffensen’s method 加速技巧 试验内容:先用 Newton 法求解方程 x-tanx=0 再用 Steffensen 法求解,比较迭代步数。精确到 10-4。 迭代公式: P(k+1)=P(k)-(P(k)-tan(P(k)))/(1-(sec(P(k)))^2) 初值 P0=1 Newton 法: function [ p,k ]=fnewton( p0,max,tol ) for k=1:max p=p0-(p0-tan(p0))/(1-(sec(p0))^2); if abs(p-p0)<tol break; end p0=p; end disp(p); disp(k) % fnewton( 1,100,10^(-4) ) Steffensen 法: function [ p1,k ]=steffensen( p0,max,tol ) n=1; p(1)=p0; while n<=max for k=1:2 p(k+1)=p(k)-(p(k)-tan(p(k)))/(1-(sec(p(k)))^2); end p1=p(1)-(p(2)-p(1))^2/(p(3)-2*p(2)+p(1)); f0=p1-(p1-tan(p1))/(1-(sec(p1))^2); if abs(f0)<tol break; end n=n+1; p(1)=p1; end disp(p1); disp(n) % steffensen( 1,100,10^(-4) ) >> steffensen( 1,100,10^(-4) ) -1.3387e-07 3
3-2 试验目的:考察 Newton 法求单根的收敛速度 应用 Newton 迭代法求 3-1 中的方程,并与 3-1 中的迭代法相比较,考察收敛速度。精确到时 10-4 迭代公式: P(k+1)= P(k)-(2P(k)-eP(k)+3)/(2- eP(k)) 初值 P0=1 和-1。 Newton 法: function [ p,k ] = fnewton( p0,max,tol ) for k=1:max p=p0-(2*p0-exp(p0)+3)/(2-exp(p0)); if abs(p-p0)<tol break; end

计算方法作业集

计算方法作业集

计算方法作业集计算方法是一种对计算过程和计算方法的总称,它包括了许多不同的算法和技术,如数值计算、符号计算、分布式计算等等。

在数学和计算机科学中,计算方法被广泛应用于各种领域,如科学计算、工程设计、数据处理等等。

下面是一些常见的计算方法及其简要描述。

1.迭代法迭代法是一种通过不断重复计算来逼近解的算法。

它通常由一个初始值开始,然后使用一个迭代公式来计算新的值,并将新值作为下一次迭代的输入。

重复执行这个过程,直到新值与旧值之差小于某个预定的阈值。

在数值分析中,迭代法被广泛应用于求解线性方程组、最优化问题等等。

2.枚举法枚举法是一种通过列举所有可能的情况来求解问题的算法。

它通常适用于组合优化问题,如旅行商问题、0-1背包问题等等。

枚举法在求解这些问题时,会列举出所有可能的状态,并逐个检查每个状态是否符合问题的要求。

在某些情况下,枚举法可以通过暴力法实现,即列举出所有可能的状态并逐个比较。

3.分治法分治法是一种将问题分解成若干个子问题,然后分别求解子问题,并将子问题的解合并成原问题的解的算法。

它通常被应用于求解大规模、复杂的问题,如归并排序、快速排序等等。

在分治法中,问题被分成若干个子问题,每个子问题都可以独立求解,然后通过合并子问题的解得到原问题的解。

4.贪心算法贪心算法是一种在每一步选择中都选取当前状态下最好或最优(即最有利)的选择,从而希望导致结果是全局最好或最优的算法。

这种算法在求解某些优化问题时具有良好的效果,如霍夫曼编码、最小生成树等等。

贪心算法的关键在于选取局部最优的选择,并希望能够得到全局最优解。

5.动态规划动态规划是一种通过将问题分解为相互重叠的子问题,并存储子问题的解,以避免重复计算的技术。

它通常被应用于求解最优化问题,如最长公共子序列、背包问题等等。

动态规划的关键在于将问题分解为相互重叠的子问题,并存储这些子问题的解以便后续使用。

通过这种方式,动态规划可以避免重复计算,从而提高算法的效率。

求解集合的交集与并集

求解集合的交集与并集

求解集合的交集与并集在数学中,集合是由一组互不相同的元素组成的。

通过集合的交集和并集运算,我们可以找到集合中共有的元素和包含的所有元素。

本文将详细介绍集合的交集和并集的概念、计算方法以及应用场景。

一、集合的交集1. 定义集合A和集合B的交集,表示为A ∩ B,包含同时属于A和B的所有元素。

2. 计算方法计算集合的交集可以通过以下步骤进行:a. 将集合A和集合B中的元素逐个对比;b. 如果某个元素同时存在于A和B中,则将其添加到交集中;c. 最后得到的交集即为A和B的交集。

3. 示例假设集合A={1, 2, 3, 4},集合B={3, 4, 5, 6},计算它们的交集:交集= A ∩ B = {3, 4}4. 应用场景交集运算可以用于实现数据的筛选和匹配。

例如,在数据库查询中,我们可以通过对不同字段进行交集操作,得到满足多个条件的数据。

二、集合的并集1. 定义集合A和集合B的并集,表示为A ∪ B,包含属于A或B的所有元素。

2. 计算方法计算集合的并集可以通过以下步骤进行:a. 将集合A和集合B中的元素逐个对比;b. 将A和B中所有不重复的元素都添加到并集中;c. 最后得到的并集即为A和B的并集。

3. 示例假设集合A={1, 2, 3, 4},集合B={3, 4, 5, 6},计算它们的并集:并集 = A ∪ B = {1, 2, 3, 4, 5, 6}4. 应用场景并集运算可以用于数据的合并和整合。

例如,在多个数据集合合并成一个大数据集时,我们可以使用并集操作将它们的数据整合在一起。

三、交集和并集的关系交集和并集是集合运算中常常遇到的两个概念,它们有一定的关系。

1. 关系表达式交集可以看作是并集的子集。

即如果A和B的交集为C,则C必定是A和B的并集。

表达式如下:C = A ∩ BC ⊆ A ∪ B2. 示例假设集合A={1, 2, 3, 4},集合B={3, 4, 5, 6},计算它们的交集和并集:交集= A ∩ B = {3, 4}并集 = A ∪ B = {1, 2, 3, 4, 5, 6}交集C={3, 4}是并集中的一部分。

集合的基本运算例题讲解

集合的基本运算例题讲解

1集合的基本运算例题讲解题型一 并集运算一般地,由所有属于集合A 或属于集合B 的元素组成的集合,称为集合A 与集合B 的并集,记作,读作“A 并B ”.即B A .{}B x A x x B A ∈∈=或, 求并集的方法(1)求两个有限集的并集 按照并集的定义进行计算,但要特别注意集合元素的互异性.(2)求两个无限集的并集 借助于数轴进行计算.注意两个集合的并集等于这两个集合在数轴上对应的图形所覆盖的全部范围.例1. 已知集合,,则【 】{}31≤≤∈=x N x A {}5,4,3,2=B =B A (A )(B ) {}2{}3,2(C ) (D ){}5,4,3,2{}5,4,3,2,1分析:将一个用描述法表示的集合转化为用列举法表示时,一定要弄清代表元素的含义或特征.求两个集合的并集运算时,可以按照并集的定义进行,也可以用Venn 图求解或借助于数轴求解.解:∵{}{}3,2,131=≤≤∈=x N x A ∴.=B A {}{}{}5,4,3,2,15,4,3,23,2,1= 选择【 D 】.例2. 已知集合,,则____________. {}1≥=x x A {}0322<--=x x x B =B A 分析:先解一元二次不等式,求出集合B ,然后把集合A 、B 在数轴0322<--x x 上画出来,它们对应图形所覆盖的全部范围即为.B A 解:∵{}{}310322<<-=<--=x x x x x B ∴.=B A {}{}{}1311->=<<-≥x x x x x x例3. 已知集合,,若,则等于【 】{}m A ,3,1={}m B ,1=A B A = m (A )0或(B )0或3 3(C )1或 (D )1或3 3分析:,由集合元素的互异性,得,排除C 、D 选项.{}m B ,1=1≠m 因为,根据并集的性质,所以,这样就将两个集合的并集运算A B A = A B ⊆转化为了这两个集合之间的关系,从而可以确定参数的值或取值范围. 解:∵,∴或A B A = 3=m m m =当时,解之得:(不符合题意,舍去)m m =0=m 1=m 综上,或.3=m 0=m 例4. 已知集合,,若,则实数的取值范围是{}012≤-=x x P {}a M =P M P = a __________.分析:∵,∴.P M P = P M ⊆解:{}{}11012≤≤-=≤-=x x x x P ∵,∴,∴P M P = P M ⊆P a ∈∴实数的取值范围是.a {}11≤≤-a a 例5. 已知集合,,且,求的值.{}x A ,3,2,1={}2,3x B ={}x B A ,3,2,1= x 分析:由题意可知:,所以,从而,且.A B A = A B ⊆A x ∈232≠x 解:分为三种情况:①当时,解之得:(不符合题意,舍去);12=x 1-=x 1=x ②当时,解之得:;22=x 2±=x ③当时,解之得:.x x =20=x 综上所述,的值为0或或.x 2±1-注意:在求参数的值时,参数的值要满足集合元素的互异性.例6. 已知集合,,求.{}32>-=x x A {}a x x x B ->-=332B A 分析:对于含参集合参与的集合运算,要注意分类讨论.解:,.{}{}532>=>-=x x x x A {}{}3332-<=->-=a x x a x x x B 当≤5,即≤8时,;3-a a {}53>-<=x a x x B A 或 当时,即时,R .53>-a 8>a =B Aa 3例7.(易错题)已知集合,,且,求由的取值构{}1,1-=A {}1==mx x B A B A = m 成的集合.分析:因为,所以.由于集合B 是一个含参集合,所以要对集合B A B A = A B ⊆分和两种情况进行讨论.∅=B ∅≠B 解:∵,∴.A B A = A B ⊆当时,,满足;0=m ∅=B A B ⊆当时,或: 0≠m {}11-=⎭⎫⎩⎨⎧==m x x B {}1=B ①若,则,解之得:; {}1-=B 11-=m 1-=m ②若,则,解之得:. {}1=B 11=m1=m 综上所述,的取值构成的集合为.m {}1,0,1-例8. 设集合,,若,则实数{}52<<-=x x M {}122+<<-=t x t x N M N M = t 的取值范围是__________.分析:先将并集运算的结果转化为两个集合M , N 之间的关系M N M = ,从而列出关于参数的不等式(组)求解.注意含参集合的分类讨论. M N ⊆t 解:∵,∴.M N M = M N ⊆分为两种情况:①当时,有≥,解之得:≤; ∅=N t -212+t t 31②当时,则有:∅≠N ,解之得:≤2. ⎪⎩⎪⎨⎧≤+-≥-+<-51222122t t t t t <31综上所述,实数的取值范围是.t {}2≤t t 警示:在解决本题时,任意忽略的情况,另外要注意端点值能否取到. ∅=N 例9. 已知集合,,若,求实数的取值范围. {}2,1-=A {}01>+=mx x B B B A = m 分析:注意本题与例7的区别.解:∵,∴.B B A = B A ⊆分为三种情况:①当时,恒成立,∴R ,满足;0=m 01>{}=>+=01mx x B B A ⊆②当时,,有,解之得: 0>m {}⎭⎫⎩⎨⎧->=>+=m x x mx x B 10111-<-m 1<m ∴;10<<m ③当时,,有,解之得: 0<m {}⎭⎬⎫⎩⎨⎧-<=>+=m x x mx x B 10121>-m 21->m ∴. 021<<-m 综上所述,实数的取值范围是. m ⎭⎬⎫⎩⎨⎧<<-121m m 题型二 交集运算一般地,由属于集合A 且属于集合B 的所有元素组成的集合,称为集合A 与集合B 的交集,记作,读作“A 交B ”.B A .{}B x A x x B A ∈∈=且, 求交集的方法(1)求两个有限集的交集 按照交集的定义进行计算,但要特别注意一定要找出两个集合中的所有公共元素.(或可借助于Venn 图)(2)求两个无限集的交集 借助于数轴进行计算.两个集合的解集等于这两个集合在数轴上对应的图形所覆盖的公共范围.例10. 设集合,集合,则【 】{}01>+∈=x Z x A {}02≤-=x x B =B A (A )(B ) {}21<<-x x {}21≤<-x x (C ) (D ){}2,1-{}2,1,0分析:在进行集合的运算之前,要先弄清楚各个集合的本质.本题中集合A 的代表元素为整数,所以集合A 为范围内的整数集.x 1->x 解:∵,{}{}101->∈=>+∈=x Z x x Z x A {}{}202≤=≤-=x x x x B ∴.=B A {}{}2,1,021=≤<-∈x Z x 选择【 D 】.例11. 设集合,,若,则实数的取值范围{}21<≤-=x x A {}a x x B <=∅≠B A a 是__________.分析:说明集合A 、B 有公共元素,在数轴上集合A 、B 所对应的图形覆∅≠B A 盖的区域有公共部分.解:.{}1->a a例12. 设集合,,若,求实数{}52<<-=x x M {}122+<<-=t x t x N N N M = t 的取值范围.分析:若,则由交集的性质知,在得到这两个集合之间的关系N N M = M N ⊆后借助于数轴就可以列出不等式(组)进行求解了.解:∵,∴.N N M = M N ⊆分为两种情况:①当时,满足,有≥,解之得:≤; ∅=N M N ⊆t -212+t t 31②当时,则有:∅≠N,解之得:≤2. ⎪⎩⎪⎨⎧≤+-≥-+<-51222122t t t t t <31综上所述,实数的取值范围是.t {}2≤t t ★例13.(易错题)设集合,,则{}R x x y y A ∈+==,12{}R x x y y B ∈+==,1B A 等于【 】(A )(B ) {}1≥y y {}2,1(C ) (D )()(){}2,1,1,0∅错解:解方程组得:或,故选【 C 】. ⎩⎨⎧+=+=112x y x y ⎩⎨⎧==10y x ⎩⎨⎧==21y x 错因分析:这里好多学生认为是求抛物线和直线的交点坐标所12+=x y 1+=x y 构成的集合,根源在于没有搞清楚集合A , B 的本质,没有弄清楚集合的代表元素的特征.分析:本题中的两个集合都是由函数值构成的,它们的代表元素是函数值.y 表示函数和函数的函数值的交集.B A 12+=x y 1+=x y 解:∵,R .{}{}1,12≥=∈+==y y R x x y y A {}=∈+==R x x y y B ,1∴R .{} 1≥=y y B A {}1≥=y y 选择【 A 】. 变式: 设集合,,则等于【 】(){}1,2+==x y y x A (){}1,+==x y y x B B A (A )(B ) {}1≥y y {}2,1(C ) (D )()(){}2,1,1,0∅例14. 已知集合,集合,则中元素的个(){}1,22=+=y x y x A (){}x y y x B ==,B A 数为【 】(A )3 (B )2 (C )1 (D )0解:解方程组得: ⎩⎨⎧==+xy y x 122或 ⎪⎪⎩⎪⎪⎨⎧==2222y x ⎪⎪⎩⎪⎪⎨⎧-=-=2222y x ∴,共有2个元素.选择【 B 】. B A ⎭⎬⎫⎩⎨⎧⎪⎪⎭⎫ ⎝⎛--⎪⎪⎭⎫ ⎝⎛=22,22,22,22方法二:由后面的学习可以知道,方程是单位圆的方程(以原点为圆心,122=+y x 以1为半径的圆).集合A 是由圆上的所有点构成的,集合B 是由直线122=+y x 上的所有点构成的,所以就是由单位圆与直线的交点构成的,如图所x y =B A 示,交点有两个,故中元素的个数为2.B A例15.(2018沈阳重点高中)设集合,.{}52≤≤-=x x A {}121-≤≤+=m x m x B (1)若,求A 的非空真子集的个数;{}52≤≤-∈=x Z x A (2)若,求实数的取值范围.B B A = m 分析:(1)子集、真子集个数的确定若集合A 含有个元素,则集合A :n (1)含有个子集;n 2(2)含有个非空子集;12-n (3)含有个真子集;12-n (4)含有个非空真子集.22-n (2)若,则,注意分类讨论.B B A = A B ⊆解:(1){}{}5,4,3,2,1,0,1,2-52-=≤≤-∈=x Z x A∵集合A 中含有8个元素∴集合A 的非空真子集的个数为;2542-28=(2)∵,∴.B B A = A B ⊆分为两种情况:①当时,满足,有,解之得:;∅=B A B ⊆121->+m m 2<m ②当时,则有:∅≠B ,解之得:≤≤3. ⎪⎩⎪⎨⎧≤--≥+-≤+51221121m m m m 2m 综上所述,实数的取值范围是. m {}3≤m m 例16. 设,,其中R ,如果{}042=+=x x x A (){}011222=-+++=a x a x x B ∈x ,求实数的取值范围.B B A = a 解:{}{}4,0042-==+=x x x A ∵,∴B B A = A B ⊆分为两种情况:①当时,满足∅=B B B A = ∴,解之得:; ()[]()0141222<--+=∆a a 1-<a ②当时,或或.∅≠B {}0=B {}4-=B {}4,0-=B 若或,则有,解之得: {}0=B {}4-=B ()[]()0141222=--+=∆a a 1-=a 经检验,此时;{}0=B 若,则由根与系数的关系定理可得:{}4,0-=B ,解之得:. ()⎩⎨⎧=--=+-014122a a 1=a 综上所述,实数的取值范围是. a {}11-≤=a a a 或例17. 设集合,,若,求实数的{}3+≤≤=a x a x A {}51>-<=x x x B 或∅=B A a取值范围.分析:对于任意实数,都有,所以本题中集合A 不会是空集.a 3+<a a 解:∵,∴.3+<a a ∅≠A ∵∅=B A ∴,解之得:≤≤2. ⎩⎨⎧≤+-≥531a a 1-a ∴实数的取值范围是. a {}21≤≤-a a ★★例18.(综合性强)已知集合,集合()(){}011222>++++-=a a y a a y y A ,若: ⎭⎬⎫⎩⎨⎧≤≤+-==30,25212x x x y y B ∅=B A (1)求实数的取值范围;a (2)当恒成立时,求的最小值.ax x ≥+12a 分析:(1)求集合A 时要解含参一元二次不等式,可借助于因式分解:()()()()()()()()()[]11111122222222+--=-+--=++-+-=++++-a y a y a y a a y y a a ay a y y a a y a a y 对于集合B ,代表元素是,所以集合B 是函数值的集合,通过配方得:y ()2121252122+-=+-=x x x y ∵0≤≤3,∴2≤≤4,∴;x y {}42≤≤=y y B (2)这是与二次函数有关的恒成立问题,使用数形结合方法.解:(1)()(){}()()[]{}010112222>+--=>++++-=a y a y y a a y a a y y A ∵(这里作差比较与的大小) 04321122>+⎪⎭⎫ ⎝⎛-=-+a a a 12+a a ∴a a >+12∴.{}12+><=a y a y y A 或 {}4230,25212≤≤=⎭⎬⎫⎩⎨⎧≤≤+-==y y x x x y y B∵∅=B A ∴,解之得:≤或≤≤2. ⎩⎨⎧≥+≤4122a a a 3-3a ∴实数的取值范围是;a {}233≤≤-≤a a a 或(2)∵恒成立,即≥0恒成立.ax x ≥+1212+-ax x ∴≤0,解之得:≤≤2. ()42--=∆a 2-a ∴的最小值为.(雅慧,通过这道题你勇敢地挑战一下自己)a 2-题型三 补集运算全集 一般地,如果一个集合含有我们所研究问题中涉及的所有元素,那么就称这个集合为全集,记作U .补集 对于一个集合A ,由全集U 中不属于A 的所有元素组成的集合称为集合A 相对于全集U 的补集,简称集合A 的补集,记作C U A ,即C U A .{}A x U x x ∉∈=且,补集的性质①(C U A ); ②(C U A ); ③ C U (C U A );U A = ∅=A A =④ C U U ; ⑤ C U .∅=U =∅例19. 已知全集,集合,若C U A ,则实数的取{}60<<=x x U {}a x x A <<=1U ≠a 值范围是__________.分析: C U A 说明,且.U ≠∅≠A U A ⊆解:∵C U A ,∴,且.U ≠∅≠A U A ⊆∴实数的取值范围是.a {}61≤<a a 例20. 已知全集,集合,求C U A .{}5,4,3,2,1=U {}042=++=px x x A 分析:集合A 是由方程的解构成的,而方程可能无解、042=++px x 042=++px x 有两个不相等的实数根或有两个相等的实数根,需要分类讨论.解:由题意可知:.U A ⊆分为两种情况:①当时,方程无实数根,∴,解之得: ∅=A 0162<-=∆p 44<<-p ∴C U A C U ;=∅{}5,4,3,2,1==U ②当时,则有≥0,解之得:≤或≥4. ∅≠A 162-=∆p p 4-p 设方程的两个实数根分别为 042=++px x 21,x x 由根与系数的关系定理可得::421=x x 若,则,符合题意,此时,C U A ; 4,121==x x 5-=p {}4,1=A {}5,3,2=若,则,符合题意,此时,C U A . 221==x x 4-=p {}2=A {}5,4,3,1=综上所述,当时,C U A ;44<<-p ={}5,4,3,2,1当时,C U A ;5-=p {}5,3,2=当时,C U A .4-=p {}5,4,3,1=例21. 已知,. {}31≤<-=x x A {}m x m x B 31+<≤=(1)当时,求;1=m B A (2)若C R A ,求实数的取值范围.⊆B m 分析:(1)求两个连续型实数集合的并集时,借助于数轴进行求解能将抽象的问题直观化,但要特别注意端点的实心和空心以及端点值的取舍;(2)求连续型实数集合的补集也是借助于数轴进行.解:(1)当时, 1=m {}{}4131<≤=+<≤=x x m x m x B ∴; {}{}{}414131<<-=<≤≤<-=x x x x x x B A (2)∵,∴C R A {}31≤<-=x x A {}31>-≤=x x x 或∵C R A ,∴分为两种情况:⊆B ①当时,有≥,解之得:≤; ∅=B m m 31+m 21-②当时,则有:或∅≠B ⎩⎨⎧-≤++<13131m m m ⎩⎨⎧>+<331m mm解之得:无解或.3>m 综上,实数的取值范围是.m ⎭⎬⎫⎩⎨⎧>-≤321m m m 或★例22. 设全集,,,(){}R y R x y x I ∈∈=,,()⎭⎬⎫⎩⎨⎧=--=123,x y y x A (){}1,+==x y y x B 求C I A .B 解:()(){}2,1,123,≠+==⎭⎬⎫⎩⎨⎧=--=x x y y x x y y x A ∴集合A 是由直线上除点外的所有点构成的集合 1+=x y ()3,2∴C I A =(){}3,2∵(){}1,+==x y y x B ∴集合B 是由直线上所有的点构成的集合 1+=x y ∴C I A . =B (){}3,2附:函数,即的图象如图所示. 123=--x y 1+=x y ()2≠x例23. 设全集,,C U A ,求实数的值. {}32,3,22-+=a a U {}2,12-=a A {}5=a 分析:∵C U A ,∴,∴.还要注意. U ⊆U ∈55322=-+a a U A ⊆解:∵,C U A {}32,3,22-+=a a U {}5=∴5322=-+a a 整理得:,解之得:.0822=-+a a 4,221-==a aU4321B A 852917643B A U当时,,满足题意; 2=a {}3,2=A 当时,,不满足题意. 4-=a {}9,2=A 综上,实数的值为2.a 例24. 设全集,,( C U B ),, {}*,10N x x x U ∈<=U B U A ⊆⊆,{}9,1=A {}3=B A ( C U A )( C U B ),求集合A , B . {}7,6,4=分析:本题条件较多,考查集合的综合运算.重要结论如图所示,集合A , B 将全集U 分成了四部分,这四部分用集合表示如下: (1)①表示; B A (2)②表示(C U B ); A (3)③表示(C U A ); B (4)④表示(C U A )(C U B ).德·摩根定律(1)C U (C U A )(C U B ); ()=B A (2)C U (C U A )(C U B ).()=B A 解法一: {}{}9,8,7,6,5,4,3,2,1*,10=∈<=N x x x U ∵( C U A )( C U B ),∴C U {}7,6,4=()=B A {}7,6,4∴ {}9,8,5,3,2,1=B A ∵( C U B ) {}9,1=A ∴=B {}8,5,3,2∵,∴.{}3=B A {}9,3,1=A 解法二:由题意作出Venn 图如图所示: 由图可知:,. {}9,3,1=A {}8,5,3,2=B例25. 已知全集R ,集合,集合=U {}0,,32≠∈-==x R x x y y A 且,集合.⎭⎫⎩⎨⎧-+-==x x y x B 522{}a x a x C <<-=5(1)求集合( C U B );A (2)若,求实数的取值范围.()B A C ⊆a 分析:先来确定集合A , B 的本质:集合A 是函数的函数值构成()032≠-=x x y 的集合,即函数的值域;集合B 是使函数有意()032≠-=x x y xx y -+-=522义的自变量的值构成的集合.解:.{}{}{}330,,32<=<=≠∈-==x x y y x R x x y y A 且.{}52522<≤=⎭⎫⎩⎨⎧-+-==x x x x y x B ∴C U B {}52≥<=x x x 或∴( C U B );A {}53≥<=x x x 或(2)由(1)可知: {}32<≤=x xB A ∵,∴分为两种情况:()B A C ⊆①当时,满足,有≥,解之得:≤; ∅=C ()B A C ⊆a -5a a 25②当时,则有:,解之得: ≤3.∅≠C ⎪⎩⎪⎨⎧≤≥-<-3255a a aa a <25综上所述,实数的取值范围是.a {}3≤a a 例26. 若,,,且{}0232=+-=x x x A {}012=-+-=a ax x x B {}022=+-=mx x x C ,求的值和的取值范围.C C A A B A == ,a m 分析:设置本题的目的是帮助雅慧复习由集合间的基本关系确定参数的值或取值范围.本题要先将三个集合之间的运算及其结果转化为集合之间的关系:因为,∴.C C A A B A == ,A C A B ⊆⊆,本来由需要对集合B 分两种情况进行讨论,但考虑到集合B 中的方程结A B ⊆构比较复杂,所以先判断一下方程的根的情况: 012=-+-a ax x ∵≥0()()()22224414-=+-=---=∆a a a a a ∴方程总有两个实数根.012=-+-a ax x 也因此,在处理关系时,一定有,不再对集合B 进行分类讨论. A B ⊆∅≠B 解:{}{}2,10232==+-=x x x A {}()()[]{}011012=---==-+-=a x x x a ax x x B ∴集合B 中必含有元素1,∴. ∅≠B ∵,∴.A B A = A B ⊆①当,即时,,符合题意; 11=-a 2=a {}1=B ②当,即时,,符合题意. 21=-a 3=a {}2,1=B 综上,的值为2或3.a ∵,∴,分为两种情况:C C A = A C ⊆①当时,满足,有,解之得:;∅=C A C ⊆()082<--=∆m 2222<<-m ②当时,则或或:∅≠C {}1=C {}2=C {}2,1=C 若或,则,解之得:.{}1=C {}2=C ()082=--=∆m 22±=m 经检验,当时,或,不符合题意,舍去;22±=m {}2=C {2-=C 若,则由根与系数的关系定理可得:,解之得:,符合题意.{}2,1=C ⎭⎬⎫⎩⎨⎧⨯=+=21221m 3=m 综上所述,的取值范围是或.m 2222<<-m 3=m 题型四 补集思想的应用(正难则反)对于某些问题,如果从正面求解比较困难,则可考虑先求解问题的反面,采用“正难则反”的解题策略.具体地说,就是将研究对象的全体实为全集,求出使问题反面成立的集合A ,则A 的补集即为所求.补集思想的原理或依据是:C U (C U A ).A =例27. 已知集合,,若,求{}R x m mx x x A ∈=++-=,06242{}0<=x xB ∅≠B A 实数的取值范围.m 分析:集合A 是方程的实数根构成的集合,意味着06242=++-m mx x ∅≠B A 方程有负根,则方程的根有以下三种情况:①两负根;②一负根,一零根;③一负根,一正根.分别求解相当麻烦.如果考虑的反面,先求方程无∅≠B A ∅=B A 实数根或两根均非负时的取值范围,然后再用补集思想求解时的m ∅≠B A m 取值范围解:若,则分为两种情况:∅=B A ①当时,,解之得:; ∅=A ()()062442<+--=∆m m 231<<-m ②当时,方程的两个实数根均为非负数,则有:∅≠A 06242=++-m mx x ,解之得:≥. ()()⎪⎩⎪⎨⎧≥+≥≥+--=∆06204062442m m m m m 23综上所述,当时,.1->m ∅=B A ∴当时,实数的取值范围是.∅≠B A m {}1-≤m m 结论:一元二次方程有两个非负实数根的条件是:()002≠=++a c bx ax .⎪⎪⎪⎩⎪⎪⎪⎨⎧≥=⋅≥-=+≥∆0002121ac x x a b x x 例28. 已知集合,,若,求实数{}a y a y y A <+>=或12{}42≤≤=y y B ∅≠B A a 的取值范围.解:当时,则有:∅=B A,解之得:≤或≤≤2. ⎩⎨⎧≥+≤4122a a a 3-3a ∴当时,实数的取值范围是.∅=B A a {}233≤≤-≤a a a 或∴当时,实数的取值范围是.∅≠B A a {}332<<->a a a 或例29. 若集合中至多有1个元素,则实数的取值范围是{}0232=++=x ax x A a __________.分析:题目要求“至多有1个元素”,若采取分类讨论的方法,求解比较麻烦,可考虑用补集思想解决问题.本题中集合A 至多有1个元素的反面是集合A 有两个元素,即方程有两个不相等的实数根.0232=++x ax 解:当集合A 中有两个元素时,方程有两个不相等的实数根,则有:0232=++x ax ,解之得:且 ⎩⎨⎧>-=∆≠0890a a 89<a 0≠a ∴集合A 中有两个元素时实数的取值范围是.a ⎭⎬⎫⎩⎨⎧≠<089a a a 且∴集合A 中至多有1个元素时实数的取值范围是.a ⎭⎬⎫⎩⎨⎧=≥089a a a 或总结:求集合运算中参数的思路(1)将集合中的运算关系转化为两个集合之间的关系;(2)将集合之间的关系转化为方程(组)或不等式(组)是否有解、或解集为怎样的范围; (3)解方程(组)或不等式(组)来确定参数的值或取值范围. 题型五 集合中元素的个数若集合A 为有限集,则用card(A )表示集合A 中元素的个数. 如果集合A 中含有个元素,那么有card(A ). m m =(1)一般地,对于任意两个有限集合A , B ,有 card card(A )card(B )-card . ()=B A +()B A (2)一般地,对于任意三个有限集合A , B , C ,有card card(A )card(B )-card -card -card + ()=C B A +()B A ()C A ()C B card .()C B A。

计算方法上机作业

计算方法上机作业

计算方法上机报告姓名:学号:班级:上课班级:说明:本次上机实验使用的编程语言是Matlab 语言,编译环境为MATLAB 7.11.0,运行平台为Windows 7。

1. 对以下和式计算:∑∞⎪⎭⎫ ⎝⎛+-+-+-+=0681581482184161n n n n S n,要求:①若只需保留11个有效数字,该如何进行计算; ②若要保留30个有效数字,则又将如何进行计算; (1) 算法思想1、根据精度要求估计所加的项数,可以使用后验误差估计,通项为:142111416818485861681n n na n n n n n ε⎛⎫=---<< ⎪+++++⎝⎭;2、为了保证计算结果的准确性,写程序时,从后向前计算;3、使用Matlab 时,可以使用以下函数控制位数: digits(位数)或vpa(变量,精度为数)(2)算法结构1.;0=s⎪⎭⎫⎝⎛+-+-+-+=681581482184161n n n n t n ;2.for 0,1,2,,n i =⋅⋅⋅if 10mt -≤end;3.for ,1,2,,0n i i i =--⋅⋅⋅;s s t =+(3)Matlab 源程序clear; %清除工作空间变量 clc; %清除命令窗口命令m=input('请输入有效数字的位数m='); %输入有效数字的位数s=0;for n=0:50t=(1/16^n)*(4/(8*n+1)-2/(8*n+4)-1/(8*n+5)-1/(8*n+6));if t<=10^(-m) %判断通项与精度的关系break;endend;fprintf('需要将n值加到n=%d\n',n-1); %需要将n值加到的数值for i=n-1:-1:0t=(1/16^i)*(4/(8*i+1)-2/(8*i+4)-1/(8*i+5)-1/(8*i+6));s=s+t; %求和运算ends=vpa(s,m) %控制s的精度(4)结果与分析当保留11位有效数字时,需要将n值加到n=7,s =3.1415926536;当保留30位有效数字时,需要将n值加到n=22,s =3.14159265358979323846264338328。

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

第一次&第二次上机作业上机作业:1.在Matlab上执行:>> 5.1-5-0.1和>> 1.5-1-0.5给出执行结果,并简要分析一下产生现象的原因。

解:执行结果如下:在Matlab中,小数值很难用二进制进行描述。

由于计算精度的影响,相近两数相减会出现误差。

2.(课本181页第一题)解:(1)n=0时,积分得I0=ln6-ln5,编写如下图代码从以上代码显示的结果可以看出,I 20的近似值为0.012712966517465(2)I n =∫x n 5+x 10dx,可得∫x n 610dx ≤∫x n 5+x 10dx ≤∫x n 510dx,得 16(n+1)≤I n ≤15(n+1),则有1126≤I 20≤1105, 取I 20=1105,以此逆序估算I 0。

代码段及结果如下图所示结果是从I 19逆序输出至I 0,所以得到I 0的近似值为0.088392216030227。

(3)从I 20估计的过程更为可靠。

首先根据积分得表达式是可知,被积函数随着n 的增大,其所围面积应当是逐步减小的,即积分值应是随着n 的递增二单调减小的,(1)中输出的值不满足这一条件,(2)满足。

设S n 表示I n 的近似值,S n -I n =(−5)n (S 0−I 0) 根据递推公式可以导出此式),可以看出,随着n 的增大,误差也在增大,所以顺序估计时,算法不稳定性逐渐增大,逆序估计情况则刚好相反,误差不断减小,算法逐渐趋于稳定。

2.(课本181页第二题)(1)上机代码如图所示求得近似根为0.09058(2)上机代码如图所示得近似根为0.09064;(3)牛顿法上机代码如下计算所得近似解为0.09091第三次上机作业上机作业181页第四题线性方程组为[1.1348 3.83260.5301 1.78751.1651 3.40172.5330 1.54353.41294.93171.2371 4.99988.7643 1.314210.67210.0147][x1x2x3x4]=[9.53426.394118.423116.9237](1)顺序消元法A=[1.1348,3.8326,1.1651,3.4017;0.5301,1.7875,2.5330,1.5435;3.4129,4. 9317,8.7643,1.3142;1.2371,4.9998,10.6721,0.0147];b=[9.5342;6.3941;18.4231;16.9237];上机代码(函数部分)如下function [b] = gaus( A,b )%用b返回方程组的解B=[A,b];n=length(b);RA=rank(A);RB=rank(B);dif=RB-RA;if dif>0disp('此方程组无解');returnendif RA==RBif RA==nformat long;disp('此方程组有唯一解');for p=1:n-1for k=p+1:nm=B(k,p)/B(p,p);B(k,p:n+1)=B(k,p:n+1)-m*B(p,p:n+1);endend %顺序消元形成上三角矩阵b=B(1:n,n+1);A=B(1:n,1:n);b(n)=b(n)/A(n,n);for q=n-1:-1:1b(q)=(b(q)-sum(A(q,q+1:n)*b(q+1:n)))/A(q,q);end %回代求解elsedisp('此方程组有无数组解');endend上机运行结果为>>A=[1.1348,3.8326,1.1651,3.4017;0.5301,1.7875,2.5330,1.5435;3.4129,4. 9317,8.7643,1.3142;1.2371,4.9998,10.6721,0.0147];b=[9.5342;6.3941;18.4231;16.9237];>> X=gaus A,b)此方程组有唯一解X =1.0000000000000001.0000000000000001.0000000000000001.000000000000000>>(2)列主元消元法A=[1.1348,3.8326,1.1651,3.4017;0.5301,1.7875,2.5330,1.5435;3.4129,4. 9317,8.7643,1.3142;1.2371,4.9998,10.6721,0.0147];b=[9.5342;6.3941;18.4231;16.9237];函数部分代码如下function [b] = lieZhu(A,b )%用b返回方程组的解B=[A,b];RA=rank(A);RB=rank(B);n=length(b);dif=RB-RA;format long;if dif>0disp('该方程组无解');returnendif dif==0if RA==ndisp('该方程组有唯一解');c=zeros(1,n);for i=1:n-1max=abs(A(i,i));m=i;for j=i+1:nif max<abs(A(j,i))max=abs(A(j,i));m=j;endend %求出每一次消元时绝对值最大的一行的行号if m~=ifor k=i:nc(k)=A(i,k);A(i,k)=A(m,k);A(m,k)=c(k);endd1=b(i);b(i)=b(m);b(m)=d1;%函数值跟随方程一起换位置endfor k=i+1:nfor j=i+1:nA(k,j)=A(k,j)-A(i,j)*A(k,i)/A(i,i); endb(k)=b(k)-b(i)*A(k,i)/A(i,i);A(k,i)=0;endend %完成消元操作,形成上三角矩阵b(n)=b(n)/A(n,n);for i=n-1:-1:1sum=0;for j=i+1:nsum=sum+A(i,j)*b(j);endb(i)=(b(i)-sum)/A(i,i) ;%回代求解其他未知数endendelsedisp('此方程组有无数组解');endend上机运行,结果为>>A=[1.1348,3.8326,1.1651,3.4017;0.5301,1.7875,2.53 30,1.5435;3.4129,4.9317,8.7643,1.3142;1.2371,4.99 98,10.6721,0.0147];b=[9.5342;6.3941;18.4231;16.9237];X=lieZhu(A,b)该方程组有唯一解X =1.0000000000000001.0000000000000020.9999999999999990.999999999999999>>根据两种方法运算结果,顺序消元法得到结果比列主元消元法得到的结果精度更高。

(注:matlab使用的是2015b版本,不知道是保留小数位数太少,还是程序原因,顺序消元输出结果总是等于准确解,请老师指正)第四次上机作业7.分析用下列迭代法解线性方程组[ 4−1−1 40−1−1 00 0−1 00−1−1 04−1−1 40 −1−1 00−10 00−1−1 04−1−1 4][x1x2x3x4x5x6]=[5−25−26]的收敛性,并求出使‖X(k+1)−X(k)‖2≤0.0001的近似解及相应的迭代次数。

(1)雅可比迭代法解:上机编写的函数如下function [] = Jacobi(X,b)%雅可比迭代法D=diag(diag(X));%得到对角线元素组成的矩阵B=inv(D)*(D-X);f=inv(D)*b;b(:,:)=0;x1=B*b+f;num=1;while(norm(x1-b)>0.0001)%判断当前的解是否达到精度要求b=x1;x1=B*b+f;num=num+1;end;fprintf('求得的解为:\n');disp(x1);fprintf('迭代次数:%d次\n',num);end上机运行,结果如下>> A=[4,-1,0,-1,0,0;-1,4,-1,0,-1,0;0,-1,4,-1,0,-1;-1,0,-1,4,-1,0;0,-1,0,-1,4,-1;0,0,-1,0,-1,4];>> b=[0;5;-2;5;-2;6];>> Jacobi(A,b)求得的解为:0.9999817650743811.999950181256740.9999750906283681.999950181256740.9999750906283681.99996353014876迭代次数:28次满足要求的解如输出结果所示,总共迭代了28次(2)高斯-赛德尔迭代法上机程序如下所示function [] =Gauss_Seidel( A,b )%高斯赛德尔迭代法D=diag(diag(A));L=D-tril(A);U=D-triu(A);B=inv(D-L)*U;f=inv(D-L)*b;b(:,:)=0;x0=B*b+f;num=1;while(norm(x0-b)>0.0001)num=num+1;b=x0;x0=B*b+f;end;fprintf('结果为\n');disp(x0);fprintf('迭代次数为:%d次\n',num);end>> A=[4,-1,0,-1,0,0;-1,4,-1,0,-1,0;0,-1,4,-1,0,-1;-1,0,-1,4,-1,0;0,-1,0,-1,4,-1;0,0,-1,0,-1,4];>> b=[0;5;-2;5;-2;6];>> Gauss_Seidel(A,b)结果为0.9999601438106581.999956761521390.9999635082998331.999966621628740.9999725271797151.99998400886989迭代次数为:15次满足精度要求的解如上述程序打印输出所示,迭代了15次(3)S OR迭代法(w依次取1.334,1.95,0.95)上机代码如下function [] = SOR(A,b,w )%SOR迭代法¨D=diag(diag(A));L=D-tril(A);U=D-triu(A);B=inv(D-w*L)*((1-w)*D+w*U);f=w*inv(D-w*L)*b;b(:,:)=0;x0=B*b+f;num=1;while(norm(x0-b)>0.0001)num=num+1;b=x0;x0=B*b+f;end;fprintf('结果为\n');disp(x0);fprintf('迭代次数为%d\n',num);end上机运行>> A=[4,-1,0,-1,0,0;-1,4,-1,0,-1,0;0,-1,4,-1,0,-1;-1,0,-1,4,-1,0;0,-1,0,-1,4,-1;0,0,-1,0,-1,4]; >> b=[0;5;-2;5;-2;6];>> SOR(A,b,1.334)结果为1.000018784810091.999986983228581.000018150130682.00000041318053 0.999991858543476 2.0000068413569 迭代次数为13>> SOR(A,b,1.95)结果为0.999984952088107 2.00000960832604 0.999959115182729 2.0000168426006 1.00000443526697 1.99997885113446 迭代次数为241>> SOR(A,b,0.95)结果为0.9999615183093511.999957068252310.9999630548384531.999965805720330.9999711417275891.9999827300678 迭代次数为17由以上输出得到w取值不同的情况下,得到的满足精度要求的结果,迭代次数分别如输出所示第五次上机作业8.从函数表出发,用下列方法计算f(0.15),f(0.31)及f(0.47)的近似值(1)分段线性插值(2)分段二次插值(3)全区间上拉格朗日插值解:(1)线性插值编写函数如下function [R] = div_line( x0,y0,x )%线性插值p=length(x0);n=length(y0);m=length(x);if(p~=n)%x的个数与y的个数不等error('数据输入有误,请重新输入');return;elsefprintf('线性插值\n');for t=1:mz=x(t);if(z<x0(1)||z>x0(p))fprintf('x[%d]不在所给自变量范围内,无法进行插值',t);continue;elsefor i=1:p-1if(z<x0(i+1))break;end;end;R(t)=y0(i)*(x(t)-x0(i+1))/(x0(i)-x0(i+1))+y0(i+1)*(x(t)-x0(i))/(x0(i+1)-x0(i));end;end;end;end上机运行如下>> x0=[0.0 0.1 0.195 0.3 0.401 0.5];>> y0=[0.39894 0.39695 0.39142 0.38138 0.36812 0.35206]; >> x=[0.15 0.31 0.47];>> div_line(x0,y0,x)线性插值ans =0.39404 0.38007 0.35693即结果为f(0.15)≈0.39404,f(0.31) ≈0.38007,f(0.47) ≈0.35693 (2)分段二次插值编写的函数如下function [R] = div2line(x0,y0,x)%分段二次插值p=length(x0);m=length(y0);n=length(x);if(p~=m)error('输入错误,请重新输入数据');end;for t=1:nif(x(t)<x0(1)||x(t)>x0(p))fprintf('x[%d]不在所给区间上',t);continue;end;tag=2;m=abs(x(t)-x0(1))+abs(x(t)-x0(2))+abs(x(t)-x0(3));for i=3:p-1sum=abs(x(t)-x0(i-1))+abs(x(t)-x0(i))+abs(x(t)-x0(i+1));if(sum<m)m=sum;tag=i;endend;fprintf('tag=%d\n',tag);R(t)=y0(tag-1)*(x(t)-x0(tag))*(x(t)-x0(tag+1))/((x0(tag-1)-x0(tag))*(x0(tag-1)-x0(tag+1)))+y0(tag)*(x(t)-x0(tag-1))*(x(t)-x0(tag+1))/((x0(tag)-x0(tag-1))*(x0(tag)-x0(tag+1)))+y0(tag+1)*(x(t)-x0(tag-1))*(x(t)-x0(tag))/((x0(tag+1)-x0(tag-1))*(x0(tag+1)-x0(tag)));End上机运行,执行结果为>> x0=[0.0 0.1 0.195 0.3 0.401 0.5];>> y0=[0.39894 0.39695 0.39142 0.38138 0.36812 0.35206]; >> x=[0.15 0.31 0.47];>>div2line(x0,y0,x)ans =0.39448 0.38022 0.35725即分段二次插值方法下,f(0.15)≈0.39448,f(0.31) ≈0.38022,f(0.47) ≈0.35725(3)上机编写的程序如下function [R] = lagrange(x0,y0,x)%全区间上拉格朗日插值p=length(y0);n=length(x0);m=length(x);%计算函数表和x的长度if p ~= n error('数据输入有误,请重新输入');%若函数表的x与y长度不一致则输入有误else fprintf('拉格朗日插值\n');for t=1:m%利用循环计算每个x的插值s=0.0;z=x(t);for k=1:np=1;for i=1:nif i~=kp=p*(z-x0(i))/(x0(k)-x0(i));endends=s+y0(k)*p;end%根据拉格朗日插值公式求解yR(t)=s;%输出插值结果endend上机运行结果为>> x0=[0.0 0.1 0.195 0.3 0.401 0.5];>> y0=[0.39894 0.39695 0.39142 0.38138 0.36812 0.35206]; >> x=[0.15 0.31 0.47];>> lagrange(x0,y0,x)拉格朗日插值ans =0.39447 0.38022 0.35722即分段二次插值方法下,f(0.15)≈0.39447,f(0.31) ≈0.38022,f(0.47) ≈0.357229.解:上机程序如下,为方便起见,将所有操作分在四个函数中进行入口函数function [] =spline X,Y,xx,y1_0,y1_18 )%输出自变量所对应的函数值M=getM X,Y,y1_0,y1_18);%先得到Ms=xx;k=length xx);for a=1:ks xx a))=getExp X,Y,M,xx a));%计算自变量所在小区间对应曲线的表达式,并根据表达式计算对应的函数值fprintf 's %d)=%f\n',xx a),s xx a))); %输出打印函数值endend获取Mfunction [M] = getM X,Y,y1_0,y1_1)%得到Mn=length X);a=0*X;b=a;c=a;h=a;f=a;b=b+2;h 2:n)=X 2:n)-X 1:n-1); % h 1)不用a 2:n-1)=h 2:n-1)./ h 2:n-1)+h 3:n));c 2:n-1)=1-a 2:n-1);a n)=1;c 1)=1;Yf 2:n)=Y 2:n)-Y 1:n-1);f 2:n-1)=6* Yf 3:n)./h 3:n)-Yf 2:n-1)./h 2:n-1))./ h 2:n-1)+h 3:n));f 1)=6* Yf 2)/h 2)-y1_0)/h 2);f n)=6* y1_1-Yf n)/h n))/h n);M=CalM n,a,b,c,f);%计算Mend计算Mfunction [f] = CalM n,a,b,c,f)% 追赶法求解Meps=0.1e-15; %防止参数过小,是的计算误差过大if abs b 1))<epsdisp '除数为0,停止计算');returnelsec 1)=c 1)/b 1);end%追赶法:根据递推算式计算βfor i=2:n-1b i)=b i)-a i)*c i-1);if abs b i))<epsdisp '除数为0,停止计算');returnelsec i)=c i)/b i);endendb n)=b n)-a n)*c n-1);%追赶法:根据递推算式计算f 1)=f 1)/b 1);for i=2:nf i)= f i)-a i)*f i-1))/b i);end%以下求解Ux=y, x的值存入ffor i=n-1:-1:1f i)=f i)-c i)*f i+1);endreturnend得到自变量所在区间的表达式,并求自变量对应的函数值function [y] = getExp X,Y,M,x)%%根据X、Y、M计算表达式,并根据表达式计算对应的函数值n=length X);h 2:n)=X 2:n)-X 1:n-1);%%判断x落在哪个小区间n1=1;n2=n;while n2~=n1+1n5=fix n1+n2)/2);if x>X n5)n1=n5;elsen2=n5;endend%%%%计算yy=M n1)* X n2)-x)^3/ 6*h n2))+ M n2)* x-X n1))^3/ 6*h n2));y=y+ Y n1)-M n1)*h n2)*h n2)/6)* X n2)-x)/h n2);y=y+ Y n2)-M n2)*h n2)*h n2)/6)* x-X n1))/h n2);%%%结束end上机试运行,过程如下>> X=[0.52 3.1 8.0 17.95 28.65 39.62 50.65 78 104.6 156.6 208.6 260.7 312.5 364.4 416.3 468 494 507 520];>> Y=[5.28794 9.4 13.84 20.2 24.9 28.44 31.1 35 36.5 36.6 34.6 31.0 26.34 20.9 14.8 7.8 3.7 1.5 0.2];>> xx=[2 4 6 12 16 30 60 110 180 280 400 515];>> y1_0=1.86548;>> y1_18=-0.046115;spline(X,Y,xx,y1_0,y1_18)s(2)=7.825123s(4)=10.481311s(6)=12.363477s(12)=16.575574s(16)=19.091594s(30)=25.386402s(60)=32.804283s(110)=36.647878s(180)=35.917148s(280)=29.368462s(400)=16.799784s(515)=0.542713根据上述程序运行结果,可得所有自变量对应的函数值,如上输出结果所示第六次上机作业10.已知一组实验数据试用最小二乘法求它的多项式拟合曲线,并求出最低点位置。

相关文档
最新文档