实验二 求线性时不变系统的输出

实验二 求线性时不变系统的输出
实验二 求线性时不变系统的输出

学生实验报告

开课学院及实验室:电子实验楼317 2013年3月19 日

线性控制第二章答案

2.1 Consider the memoryless system with characteristics shown in Fig 2.19, in which u denotes the input and y the output. Which of them is a linear system? Is it possible to introduce a new output so that the system in Fig 2.19(b) is linear? Figure 2.19 Translation: 考虑具有图2.19中表示的特性的无记忆系统。其中u 表示输入,y 表示输出。 下面哪一个是线性系统?可以找到一个新的输出,使得图2.19(b)中的系统是线性 的吗? Answer: The input-output relation in Fig 2.1(a) can be described as: u a y *= Here a is a constant. It is a memoryless system. Easy to testify that it is a linear system. The input-output relation in Fig 2.1(b) can be described as: b u a y +=* Here a and b are all constants. Testify whether it has the property of additivity. Let: b u a y +=11* b u a y +=22* then: b u u a y y *2)(*)(2121++=+ So it does not has the property of additivity, therefore, is not a linear system. But we can introduce a new output so that it is linear. Let: b y z -= u a z *= z is the new output introduced. Easy to testify that it is a linear system. The input-output relation in Fig 2.1(c) can be described as: u u a y *)(= a(u) is a function of input u . Choose two different input, get the outputs: 111*u a y =

陕西科技大学matlab实验1 解非线性方程实验

实验1 解非线性方程实验 成绩 实验类型:●验证性实验 ○综合性实验 ○设计性实验 实验目的:进一步熟练掌握解非线性方程二分法算 法、弦截法算法,提高编程能力和解算非线性方程问题的 实践技能。 实验内容:用二分法算法、牛顿迭代法,弦截法算法解算非线性方程,,计算=0的根 实验原理二分法算法 牛顿迭代法 弦截法算法 实验步骤 1 要求上机实验前先编写出程序代码 2 编辑录入程序 3 调试程序并记录调试过程中出现的问题及修改 程序的过程 4 经反复调试后,运行程序并验证程序运行是否 正确。 5 记录运行时的输入和输出。 实验总结 实验报告:根据实验情况和结果撰写并递交实验报告。 参考程序 一.二分法算法 1.建立二分法的函数文件bisect.m function [c,err,yc]=bisect(f,a,b,delta) %Iput - f is the function input as a string 'f'

% -a and b are the left and right end points % -delta is the tolerance %Output -c is the zero point % -yc=f(c) % -err is the error estimate for c ya=feval(f,a); yb=feval(f,b); if ya*yb > 0,return,end max1=1+round((log(b-a)-log(delta))/log(2)); for k=1:max1 c=(a+b)/2; yc=feval(f,c); if yc==0 a=c; b=c; elseif yb*yc>0 b=c; yb=yc; else a=c; ya=yc; end if b-a < delta,break,end end c=(a+b)/2; err=abs(b-a); yc=feval(f,c); 2.建立f(x)=x^2-5的matlab函数文件fff.m function y=fff(x); y=x.^2-5; 3.在命令窗口中准备调用bisect函数的实参 >> a=2; >> b=3; >> delta=0.0001; 4.在命令窗口中调用bisect函数 >> [x,err,yx]=bisect('fff',a,b,delta) x =

matlab实验一:非线性方程求解-牛顿法

实验一:非线性方程求解 程序1:二分法: syms f x; f=input('请输入f(x)='); A=input('请输入根的估计范围[a,b]='); e=input('请输入根的误差限e='); while (A(2)-A(1))>e c=(A(1)+A(2))/2; x=A(1); f1=eval(f); x=c; f2=eval(f); if (f1*f2)>0 A(1)=c; else A(2)=c; end end c=(A(1)+A(2))/2; fprintf('c=%.6f\na=%.6f\nb=%.6f\n',c,A) 用二分法计算方程: 1.请输入f(x)=sin(x)-x^2/2 请输入根的估计范围[a,b]=[1,2] 请输入根的误差限e=0.5e-005 c=1.404413 a=1.404411 b=1.404415 2.请输入f(x)=x^3-x-1 请输入根的估计范围[a,b]=[1,1.5] 请输入根的误差限e=0.5e-005 c=1.324717 a=1.324715 b=1.324718 程序2:newton法: syms f x; f=input('请输入f(x)='); df=diff(f); x0=input('请输入迭代初值x0='); e1=input('请输入奇异判断e1='); e2=input('请输入根的误差限e2='); N=input('请输入迭代次数限N='); k=1; while (k=N fprintf('失败\n') end 用newton法计算方程: 1.请输入f(x)=x*exp(x)-1 请输入迭代初值x0=0.5 请输入奇异判断e1=0.1e-010 请输入根的误差限e2=0.5e-005 请输入迭代次数限N=10 x=0.567143 迭代次数为:4 2.请输入f(x)=x^3-x-1 请输入迭代初值x0=1 请输入奇异判断e1=0.1e-010 请输入根的误差限e2=0.5e-005

实验报告二 一元非线性方程的解法..

浙江大学城市学院实验报告 课程名称 科学计算 实验项目名称 一元非线性方程的解法 实验成绩 指导老师(签名 ) 日期 2013/10/10 一. 实验目的和要求 1. 用Matlab 软件掌握求解非线性方程的二分法、迭代法和牛顿法,并对结果作初步分析; 2. 通过实例练习用非线性方程求解实际问题。 二. 实验内容和原理 分析应用题2-1,2-2,2-3,2-4,2-5要求将问题的分析过程、Matlab 源程序和运行结果和结果的解释、算法的分析写在实验报告上。 2-1 程序注释 对用二分法、迭代法和牛顿法求一元非线性方程数值解的Matlab 程序的每一句添上注释。 二分法: [x,n]=BisectionMethod(a,b,epsi,Nmax) 迭代法: [x,n]=IterationMethod(x0,epsi,Nmax) Newton 法: [x,n]=NewtonMethod(x0,epsi,Nmax) 2-2 分析应用题 用二分法求方程2 ()sin 04 x f x x =-=和()sin 0x g x e x =-=根的近似值,使误差不超过210-,输出每次二分之后解的近似结果以及二分的次数,其中()0g x =的根只需求最接近 原点的那个根。 2-3 分析应用题 已知方程230x x e -=有以下三种迭代格式,分析三种迭代格式的收敛性,求出迭代精度为610-的数值结果,并比较迭代序列的收敛速度。

1 )1n x += 2)12ln ln3n n x x +=+ 3)136n n x n n n x n x e x x x e +-=-- 2-4 分析应用题 用下列方法求方程1020x e x +-=的近似根,要求误差不超过31102-?,并比较计算量。 1)在区间[0, 1]上用二分法; 2)取初值0x =,并用迭代过程 12(0,1,2,.......) 10 k x k e x k +-==; 3)取初值00x =用牛顿法求解。 2-5 分析应用题 以定期存储为基础的储蓄帐户的累积值可由定期年金方程确定 [(1)1]n P A i i =+- 在这个方程中,A 是帐户中的数额,P 是定期存储的数额,i 是n 个存储期间的每期利率。一个工程师想在20年后退休时储蓄帐户上的数额达到750000美元,而为了达到这个目标,他每个月能存1500美元。为实现他的储值目标,最小利率应是多少?假定利息是月复利的。 三. 操作方法与实验步骤(包括实验数据记录和处理) 2-1 分析应用题 对用二分法、迭代法和牛顿法求一元非线性方程数值解的Matlab 程序的每一句添上注释。 二分法: [x,n]=BisectionMethod(a,b,epsi,Nmax) Function[c,err,yc]=erfen(f,a,b,delta) Ya=feval(f,a); Yb=feval(f,b); If ya*yb>0,break,end Maxl=1+round((log(b-a)-log(delta))/log(2)); For k=1:max1 C=(a+b)/2; Yc=feval(f,c); If yc = 0 a=c; b=c;

求解非线性方程实验报告

一.实验目的: 通过本节实验课的学习,要求我们理解并掌握二分法、不动点迭代、牛顿切线法及弦截法解非线性方程求根的原理,掌握相应的算法原理,通过计算机解决实验问题 二.实验内容: 1、用对分区间法方程 1-x-sinx=0 在区间[0,1]上的误差小于10^(-4)的一个根,并记录对方区间的次数。 2、用不动点迭代法求解方程下 x-log(x)=2(x>1) 要求相对误差容限e=10^(-8)。 3、用Newton法求方程 x^3-x-1=0 在区间[-3,3]上的误差不大于10^(-5)的根,分别取初值x0=1.5, x0=0, x0=-1进行计算,比较他们的迭代次数。 三. 实验方案(程序设计说明)[包括算法设计思路,必要的流程图,界面设计 说明、使用模块及变量的说明等。] 1、二分法是对区间收索法的一种改进,具体做法为:先求一区间的中点,并计算其 函数值,若恰好有函数值为0,就是方程的根,若不为0,在判断此点的函数值与两端的函数值乘积的情况,取小于0的那个端点在进行上述对分,直到满足要求为止。 2、迭代法分为两种,一种是从任何可取的初值出发都能保证收敛,称之为大范围收 敛的方法。另一类称之为局部收敛法,即为了保证收敛必须选取初值充分接近于所要求的解。迭代法的基本思想是一种逐渐逼近的方法,首先给定一个粗造的初值,然后用一个迭代公式,反复矫正这个初值,直到满足预先给出的精确要求为止。 3、双点弦接法与Newton法不同,两者有本质的区别,它分为两步,不属于不动点 迭代法。 四. 实验步骤或程序(经调试后正确的源程序) (填写主要步骤与程序代码等,不够可附页) 1、f=inline('x+sin(x)-1'); a=0; b=1; dlt=1.0e-4; k=1; while abs(b-a)>dlt c=(a+b)/2; if f(c)==0 break; elseif f(c)*f(b)<0 a=c;

信号与线性系统题解 阎鸿森 第二章

信号与线性系统题解 阎鸿森 第二章 习题答案 2.1 (1) 已知连续时间信号()x t 如图P2.1(a)所示。试画出下列各信号的波形图,并加以标 注。 (a) (2)x t - (b) (1)x t - (c) (22)x t + (2) 根据图P2.1(b)所示的信号()h t ,试画出下列各信号的波形图,并加以标注。 (a) (3)h t + (b) (2)2 t h - (c) (12)h t - (3) 根据图P2.1(a)和(b)所示的()x t 和()h t ,画出下列各信号的波形图,并加以标注。 (a) ()()x t h t - (b) (1)(1)x t h t -- (c) (2)(4)2 t x h t -+ 图P2.1 解:(1) 各信号波形如下图所示:

(a) (b)(c) 1 2 (2)x t -(1)x t -(22)x t +t t t 22 22111 11210 01 -1-1 -2 -2 -3 5 (2) 各信号波形如下图所示: (a) (b)(c) 12 12 -32 (3)h t +(2)2t h -(12) h t -t t t 00 1 1 1 12468 1-2-3-4-5- (3) 各信号波形如下图所示: ()()x t h t -(1)(1)x t h t --(2)2 t x -(a) (b) (c) t t t ∴(2/2)(4)0 x t h t -+=00 111112 2222 2 1-1-4 6 2 - 2.2 已知信号(52)x t -的波形图如图P2.2所示,试画出()x t 的波形图,并加以标注。 (52) x t -t 3252 1123 图P2.2 解:波形如下图所示:

南航金城信号与线性系统课后答案 第二章 连续系统的时域分析习题解答

X 第二章 连续系统的时域分析习题解答 2-1 图题2-1所示各电路中,激励为f (t ),响应为i 0(t )和u 0(t )。试列写各响应关于激励微分算子方程。 解: . 1)p ( ; )1(1)p ( , 111 , 1 111)( )b (; 105.7)625(3 102 ; )(375)()6253(4) ()()61002.041( )a (0202200 204006000f i p f p u p f p p p u i f p p p p p f t u pf i p pu i t f t u p t f t u p =+++=++?++=+=+++= ++= ?=+??==+?=++-- 2-2 求图题2-1各电路中响应i 0(t )和u 0(t )对激励f (t )的传输算子H (p )。 解:. 1 )()()( ; 11)()()( )b (; 625 3105.7)()()( ; 6253375)()()( )a (22 0 20 40 0 +++==+++== +?==+== -p p p p t f t i p H p p p t f t u p H p p t f t i p H p t f t u p H f i f u f i f u 2-3 给定如下传输算子H (p ),试写出它们对应的微分方程。 . ) 2)(1() 3()( )4( ; 323)( )3(; 3 3)( )2( ; 3)( )1( +++=++=++=+= p p p p p H p p p H p p p H p p p H 解:; 3d d 3d d )2( ; d d 3d d )1( f t f y t y t f y t y +=+=+ . d d 3d d 2d d 3d d )4( ; 3d d 3d d 2 )3( 2222t f t f y t y t y f t f y t y +=+++=+ 2-4 已知连续系统的输入输出算子方程及0– 初始条件为: . 4)(0y ,0)(0y )y(0 ),()2(1 3)( )3(; 0)(0y ,1)(0y ,0)y(0 ),()84() 12()( )2(; 1)(0y ,2)y(0 ),()3)(1(4 2)( )1(---2 ---2 --=''='=++==''='=+++-=='=+++= t f p p p t y t f p p p p t y t f p p p t y f (u 0(t ) (b) u 0(t ) (a) 图题2-1

遗传算法解非线性方程组的Matlab程序

遗传算法解非线性方程组的Matlab程序 程序用MATLAB语言编写。之所以选择MATLB,是因为它简单,但又功能强大。写1行MATLAB程序,相当于写10行C++程序。在编写算法阶段,最好用MATLAB语言,算法验证以后,要进入工程阶段,再把它翻译成C++语言。 本程序的算法很简单,只具有示意性,不能用于实战。 非线性方程组的实例在函数(2)nonLinearSumError1(x)中,你可以用这个实例做样子构造你自己待解的非线性方程组。 %注意:标准遗传算法的一个重要概念是,染色体是可能解的2进制顺序号,由这个序号在可能解的集合(解空间)中找到可能解 %程序的流程如下: %程序初始化,随机生成一组可能解(第一批染色体) %1: 由可能解的序号寻找解本身(关键步骤) %2:把解代入非线性方程计算误差,如果误差符合要求,停止计算 %3:选择最好解对应的最优染色体 %4:保留每次迭代产生的最好的染色体,以防最好染色体丢失 %5: 把保留的最好的染色体holdBestChromosome加入到染色体群中 %6: 为每一条染色体(即可能解的序号)定义一个概率(关键步骤) %7:按照概率筛选染色体(关键步骤) %8:染色体杂交(关键步骤) %9:变异 %10:到1 %这是遗传算法的主程序,它需要调用的函数如下。 %由染色体(可能解的2进制)顺序号找到可能解: %(1)x=chromosome_x(fatherChromosomeGroup,oneDimensionSet,solutionSum); %把解代入非线性方程组计算误差函数:(2)functionError=nonLinearSumError1(x); %判定程是否得解函数:(3)[solution,isTrue]=isSolution(x,funtionError,solutionSumError); %选择最优染色体函数: %(4)[bestChromosome,leastFunctionError]=best_worstChromosome(fatherChromosomeGroup,functionError); %误差比较函数:从两个染色体中,选出误差较小的染色体 %(5)[holdBestChromosome,holdLeastFunctionError]... % =compareBestChromosome(holdBestChromosome,holdLeastFunctionError,... % bestChromosome,leastFuntionError) %为染色体定义概率函数,好的染色体概率高,坏染色体概率低 %(6)p=chromosomeProbability(functionError); %按概率选择染色体函数: %(7)slecteChromosomeGroup=selecteChromome(fatherChromosomeGroup,p); %父代染色体杂交产生子代染色体函数 %(8)sonChrmosomeGroup=crossChromosome(slecteChromosomeGroup,2); %防止染色体超出解空间的函数 %(9)chromosomeGroup=checkSequence(chromosomeGroup,solutionSum) %变异函数 %(10)fatherChromosomeGroup=varianceCh(sonChromosomeGroup,0.8,solutionN); %通过实验有如下结果: %1。染色体应当多一些

信号与线性系统题解第二章

第二章习题答案 收集自网络 2.1 (1) 已知连续时间信号()x t 如图P2.1(a)所示。试画出下列各信号的波形图,并加以标 注。 (a) (2)x t - (b) (1)x t - (c) (22)x t + (2) 根据图P2.1(b)所示的信号()h t ,试画出下列各信号的波形图,并加以标注。 (a) (3)h t + (b) (2)2 t h - (c) (12)h t - (3) 根据图P2.1(a)和(b)所示的()x t 和()h t ,画出下列各信号的波形图,并加以标注。 (a) ()()x t h t - (b) (1)(1)x t h t -- (c) (2)(4)2 t x h t -+ 图P2.1 解:(1) 各信号波形如下图所示:

(a) (b)(c) 1 2 (2)x t -(1)x t -(22)x t +t t t 22 22111 11210 01 -1-1 -2 -2 -3 5 (2) 各信号波形如下图所示: (a) (b)(c) 12 12 -32 (3)h t +(2)2t h -(12) h t -t t t 00 1 1 1 12468 1-2-3-4-5- (3) 各信号波形如下图所示: ()()x t h t -(1)(1)x t h t --(2)2 t x -(a) (b) (c) t t t ∴(2/2)(4)0 x t h t -+=00 111112 2222 2 1-1-4 6 2 - 2.2 已知信号(52)x t -的波形图如图P2.2所示,试画出()x t 的波形图,并加以标注。 (52) x t -t 3252 1123 图P2.2 解:波形如下图所示:

实验四非线性方程求根

《数值分析》课程设计实验报告 实验四 非线性方程求根 一、问题提出 设方程3()310f x x x =--=有三个实根**121.8793,0.34727,x x ==- *3 1.53209x =-现采用下面六种不同计算格式,求 f(x)=0的根*1 x 或*2x 1、 2 31x x x += 2、 313 x x -= 3、 x = 4、 213 x x =- 5、 x = 6、 32131()31 x x x x x --=-- 二、实验步骤 #include "stdio.h" #include main() { float x0=1.8793; printf("初值是%f\n",x0);/*输出x0*/ float x1,x2,x3; x1=x0; int i; for(i=1;i<21;i++) { x2=(3*x1+1)/(x1*x1);//第一种迭代方式 //x2=(x1*x1*x1-1)/3;//第二种迭代方式

//x2=pow(3*x1+1,1.0/3);//第三种迭代方式 //x2=1/(x1*x1-3);//第四种迭代方式 //x2=sqrt(3+1/x1);//第五种迭代方式 //x2=x1-(1/3.0)*((x1*x1*x1-3*x1-1)/(x1*x1-1));//第六种迭代方式 x3=x2-x1; printf("第%d 次迭代值为%f,相邻两次迭代值差值为%f\n",i,x2,x3);/*输出x2*/ x1=x2; if(x3<0) x3=-x3; if(x3<0.000001)//误差精度 break; } } 当迭代格式为231x x x +=时,实验结果为 由相邻两次迭代值差值结果可知,迭代过程处于发散状态。 当迭代格式为313 x x -=,实验结果为

21实验2 解非线性方程实验

vh 实验 2 解非线性方程实验 专业班级 数学122 学号 姓名 报告日期 2014.4.7 . 实验类型:●验证性实验 ○综合性实验 ○设计性实验 实验目的:进一步熟练掌握解非线性方程的二分法算法、Steffensen 算法、牛顿迭代法,提高编程能力和解算非线性方程问题的实践技能。 实验内容:用二分法算法(取[a,b]=[1,2])、Steffensen 算法(取5.10=x )、牛顿迭代法(取5.10=x )解算非线性方程01)(3=--=x x x f 的根 实验原理 二分法算法实验步骤 Steffensen 算法 牛顿迭代法 1 要求上机实验前先编写出程序代码 2 编辑录入程序 3 调试程序并记录调试过程中出现的问题及修改程序的过程 4 经反复调试后,运行程序并验证程序运行是否正确。 5 记录运行时的输入和输出。 实验思考 试验改变 Steffensen 算法的迭代初值进行计算,试验改变 牛顿迭代算法的迭代初值进行计算,分别对比计算结果并作出分析总结 数学建模与应用:请建立数学模型并应用你的程序解决一个物理计算问题--木质球体浸入水中深度问题。假若球体是由密度为ρ=0.638且半径为r=10cm 的长叶松木质球体构成的,问球体浸入水中深度是多少?又假若球体是由密度为ρ=0.638且三个长半轴分别为a=10cm,b=15cm,c=20cm 的长叶松木质椭圆球体构成的,问球体浸入水中深度是多少?(建模可参考课本32页) 实验报告书写要求:根据实验情况和结果撰写并递交实验报告。实验报告应当有算法原理简介,算法流程图,程序代码,运行调试记录,计算结果阐释;对于数学建模的应用问题要有分析建模的过程、求解计算的过程、实际问题解答或阐释的内容。 实验总结(学会了......; 掌握了......; 训练了......; 发现了......; 今后学习中......有待提高。) 参考程序 1.用二分法算法(取[a,b]=[1,2]) 解算非线性方程01)(3=--=x x x f 的根 function [c,err,yc]=bisect(f,a,b,delta)

非线性方程组解法实验报告

《数值分析》实验报告 实验序号:实验三题目名称: 非线性方程解法 学号: 姓名: 任课教师: 专业班级: 1、实验目的: 编写用迭代法、牛顿法、对分区间法、弦线法解非线性方程的程序; 2、实验分析: 计算方法分析: 1-迭代法分析 (1)选取初值x0,并确定方程f(x)=0的等价形式x=φ(x); (2)计算x1=φ(x0); (3)如果|x1-x0|<ε则停止计算;否则用x1代替x0,重复步骤(2)和(3)的过程;2-牛顿法分析: (1)解非线性方程f(x)=0的Newton法是把非线性化的一种近似方法,把f(x)在点x0附近展开成Taylor级数; (2)取其线性部分作为非线性方程f(x)=0的近似方程; (3)再把在附近张开成Taylor级数,也取其线性部分作为f(x)=0的近似方程; (4)对于n=0,1,2,……Nmax,求xn+1,并计算f(xn+1),若或|xn+1-xn|<ε(容许误差), 则停止计算; 3-对分区间法分析 (1)找出f(0)=x的根在存在区间(a,b),并计算出端点的函数值飞f(a),f(b)。 (2)计算f(x)在区间中点值f((a+b)/2). (3)判断:若f((a+b)/2)~0,则计算停止。否则,若f((a+b)/2)与f(a)异号,则根位于(a,a+b/2)中,以(a+b)/2代替b;若f((a+b)/2)与f(b)异号, 则根位于(a+b/2,b)中,以a+b/2代替a。 (4)重复步骤(2)和(3)的过程,知道区间缩小到容许误差范围之内,此时,区间中点即可作为所要求的根。 4-弦线法分析 (1)选定初始值x0,x1,并计算f(x0),f(x1)。

解非线性方程的数值计算方法用Matlab实现

湖北民族学院《数值分析》实验报告 实验名称 解非线性方程的数值计算方法 实验时间 2011年 11月 9日 姓名 王亚敏 班级 0209408 学号 020940807 成绩 实验报告内容要求: 一、实验目的与要求;二、实验内容;三、算法描述(数学原理或设计思路、计算公式、计算步骤); 四、程序代码;五、数值结果;六、计算结果分析(如初值对结果的影响;不同方法的比较;该方法的特点和改进等);七、实验中出现的问题,解决方法及体会(整个实验过程中(包括程序编写,上机调试等)出现的问题及其处理等广泛的问题). 一、实验目的: ① 掌握二分法、不动点迭代法、牛顿迭代法、Steffensen 迭代法等常用的非线性方程迭代算法; ② 培养编程与上机调试能力. 二、实验内容: 1.请分别用二分法、不动点迭代法、牛顿迭代法、Steffensen 迭代法求方程 32 ()330f x x x x =+--=在1.5 附近的根. 参考答案:原方程在1.5 附近的根为1.732051x = 2.请自选两个非线性方程,分别用二分法、不动点迭代法、牛顿迭代法、Steffensen 迭代法求解. 三、算法 (一) 1.二分法 计算()0f x =的二分法如下: ① 输入求根取间[,]a b 和误差控制量ε,定义函数()f x . 如果 ()()0f a f b <,转②;否则退出选用其它求根方法 ② 当a b ε->时,计算中点()/2x a b =+以及()f x 的值; 分情况处理 ()f x ε<:停止计算,,转④ ()()0f a f x <:修正区间[,][,]ax ab → ()()0f x f b <:修正区间[,][,]xb ab → ③ *2a b x += ④ 输出近似根* x 2.不动点(简单)迭代法算法思想 先将f(x)=0化成x=φ(x),然后取x 0,计算 x n+1=φ(x n ) n=0,1,2,… 若要求x * 满足f(x * )=0,则x * =)(*x ?,称x * 为函数)(x ?的一个不动点。

牛顿法解非线性方程组实验报告

实验名称: 牛顿法解非线性方程组 1 引言 我们已经知道,线性方程组我们可以采取Jacobi 迭代法,G-S 迭代法以及SOR 迭代方法求解。而在科学技术领域里常常提出求解非线性方程组的问题,例如,用非线性函数拟合实验数据问题、非线性网络问题,用差分法求解非线性微分方程问题等。 我们在解非线性方程组时,也考虑用迭代法求解,其思路和解非线性方程式一样,首先要将F(x)=0转化为等价的方程组 12(,,,),(1,2, )i i n x g x x x i n == 或者简记为x =g (x ),其中:,:n n n i g R R g R R →→ 112 2()()(),()n n n g x g x g R g x ???? ????????==∈???? ???????????? x x x x x 迭代法:首先从某个初始向量(0)x 开始,按下述逐次代入方法构造一向量序列(){}k x : (1)()() 1(,,),(1,2,,)k k k i i n x g x x i n +== 其中,()()() ()12 (,,,)k k k k T n x x x =x 。 或写成向量形式:(1)()(),(0,1,2,)k k g k +==x x 如果()*lim k k →∞ ≡x x (存在),称(){}k x 为收敛。且当()i g x 为连续函数时,可得 *()*(lim )()k k g g →∞ ==x x x 说明*x 为方程组的解。又称为x =g (x )的不动点。 本实验中采用牛顿迭代法来求解非线性方程组。 2 实验目的和要求 运用matlab 编写一个.m 文件,要求用牛顿法非线性方程组: 12(0)(1)()3211 cos 02,(取(0,0),要求10)1sin 0 2 T k k x x x x x x x +-∞ ?-=??=-

实验二 非线性方程求根实验报告

实验报告 学院:电子信息工程 实验课程:计算方法 学生姓名: 学号: 专业班级:通信工程 实验二非线性方程求根 1 目的与要求 (1)进一步熟练掌握求解非线性方程的二分法与Newton迭代法。 (2)掌握二分法与Newton迭代法的算法,能运用程序设计语言和此方法编制软件求出任意指定一元三次方程在给定点附近的根。 2 实验内容 用二分法和Newton迭代法求方程 310 x x --=在 1.5 附近的根,精确到 3 10-,输出每次的迭代结果

并统计所用的迭代次数。 3 实验原理 (1)二分法实验原理 取[a,b]区间二等分的中点x1 =(a+b)/2 (1)若f(x1)=0,则x1是f(x)=0的实根。 (2)若f(a)f(x1)<0 成立,则x* 必在区间(a, x1)内,取a1=a,b1= x1;否则x*必在区间(x1,b)内,则取a1= x1,b1=b,这样,得到新区间[a1,b1],其长度为[a,b]的一半。 (3)如此继续下去,进行n次等分 (2)Newton迭代法实验原理 4 程序设计 (1)流程图 二分法程序流程图

Newton迭代法程序流程图

(2)程序代码 ①二分法求非线性方程根#include #include double fun1(double x) {

return x*x*x-x-1; } double fun2(double x1,double x2) { return (x1+x2)/2; } main() { int n=1; float a,b,c; printf("二分法求非线性方程的根\n"); scanf("a=%f,b=%f",&a,&b); if (fun1(a)*fun1(b)<0) { while(fabs(b-a)>1e-3) { c=fun2(a,b); if (fun1(a)*fun1(c)<0) { b=c;

信号与线性系统分析习题答案_(吴大正_第四版__高等教育出版社)

第一章 信号与系统(二) 1-1画出下列各信号的波形【式中)() (t t t r ε=】为斜升函数。 (2)∞<<-∞=-t e t f t ,)( (3))()sin()(t t t f επ= (4))(sin )(t t f ε= (5))(sin )(t r t f = (7))(2)(k t f k ε= (10))(])1(1[)(k k f k ε-+= 解:各信号波形为 (2)∞<<-∞=-t e t f t ,)(

(3))()sin()(t t t f επ= (4))(sin )(t t f ε=

(5)) t f= r ) (sin (t (7)) f kε = t ) ( 2 (k

(10))(])1(1[)(k k f k ε-+= 1-2 画出下列各信号的波形[式中)()(t t t r ε=为斜升函数]。 (1))2()1(3)1(2)(-+--+=t t t t f εεε (2))2()1(2)()(-+--=t r t r t r t f (5) )2()2()(t t r t f -=ε (8))]5()([)(--=k k k k f εε

(11))]7()()[6 sin( )(--=k k k k f εεπ (12))]()3([2)(k k k f k ---=εε 解:各信号波形为 (1) )2()1(3)1(2)(-+--+=t t t t f εεε (2) )2()1(2)()(-+--=t r t r t r t f

(5) )2()2()(t t r t f -=ε (8) )]5()([)(--=k k k k f εε

实验7非线性方程求解

实验7 非线性方程求解 实验目的: 1. 1. 掌握用MA TLAB 软件求解非线性方程和方程组的基本用法,并对结果作出初步的 分析 2. 2. 练习用非线性方程组建立实际问题的模型并进行求解 实验内容: 6-3.(1)小张夫妇以按揭方式贷款买了一套价值20万的房子,首付了5万元,没有还款1000元,15年还清。问贷款利率是多少? (2)某人与贷款50万元购房,他咨询了两家银行,第一家银行开出的条件是每月还4500元,15年还清;第二家银行开出的条件是每年还45000元,20年还清。从利率方面看,那家银行较优惠(简单的假设年利率=月利率*12)? 解:(1)问题的建模:假设需付的款为0a ,每月付款b 元,经n 年后还清,付款利率为r ,于是对与按揭付款的方式不难列出以下的方程组: '00a a = '10211*(1)*(1)*(1)n n a a r b a a r b a a r b -=+-=+-=+-M 于是有 : 223123'*122*1210*122*121*120*121 *12 0(1)*(1)(1)*(1)*(1)(1)(1(1)(1)(1)) (1)(1(1)(1)(1)(1)) (1)1(1) * n n n n n n n n n n a a r b b r a r b b r b r a r b r r r a r b r r r r r a r b r ----+=+--+=+--+-+=+-+++++++=+-++++++++++-=+-M L L 如果对于年利率则不用考虑第一次要付的钱,所以易得: 0(1)1(1)* n n n r a a r b r +-=+- 按照上述的关系得到了本题的m 文件: function y=rate(x,a0,n,b,opt) if opt>=0%如果是〉0则按照月利率算 y=a0*(1+x)^(n*12)-b*((1+x)^(n*12)-1)/x;%计算月利率, else y=a0*(1+x)^n-b*((1+x)^n-1)/x;%计算年利率 end 主文件: clear all ;

实验2利用matlab解非线性、微分方程组答案

实验2 利用matlab解(非)线性、微分方程(组)-答案1、对于下列线性方程组: (1)请用直接法求解; (2)请用LU分解方法求解; (3)请用QR分解方法求解; (4)请用Cholesky分解方法求解。 (1) >> A=[2 9 0;3 4 11;2 2 6] A = 2 9 0 3 4 11 2 2 6 >> B=[13 6 6]' B = 13 6 6 >> x=inv(A)*B x = 7.4000 -0.2000 -1.4000 或: >> X=A\B X = 7.4000 -0.2000 -1.4000 (2) >> [L,U]=lu(A); >> x=U\(L\B) x = 7.4000 -0.2000 -1.4000 (3) >> [Q,R]=qr(A); >> x=R\(Q\B) x = 7.4000 -0.2000 -1.4000 (4)

>> chol(A) ??? Error using ==> chol Matrix must be positive definite. 2、设迭代精度为10-6,分别用Jacobi 迭代法、Gauss-Serdel 迭代法求解下列线性方程组,并比较此两种迭代法的收敛速度。 Jacobi 迭代法: >> A=[10 -1 0;-1 10 -2;0 -2 10]; >> B=[9 7 5]'; >> [x,n]=jacobi(A,B,[0,0,0]',1e-6) x = 0.9937 0.9368 0.6874 n = 11 Gauss-Serdel 迭代法: >> A=[10 -1 0;-1 10 -2;0 -2 10]; >> B=[9 7 5]'; >> [x,n]=gauseidel(A,B,[0,0,0]',1e-6) x = 0.9937 0.9368 0.6874 n = 7 3、求解非线性方程010=-+x xe x 在2附近的根。 首先建立M 文件f.m function f=f(x) f=x+x*exp(x)-10; 然后在主窗口调用: >> x=fzero('f',2) x = 1.6335 或直接采取以下方法: x=solve('x+x*exp(x)-10') x = 1.6335 4、求下列非线性方程组在(0.5,0.5) 附近的数值解。 (1) 建立函数文件f.m 。 function q=f(p) x=p(1); y=p(2); q(1)=cos(x)+y*exp(x)-2;

非线性方程求解数值分析上机实验报告

实验报告一 题目:非线性方程求解 摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。本实验采用两种常见的求解方法二分法和Newton法及改进的Newton法。 前言:(目的和意义) 掌握二分法与Newton法的基本原理和应用。 数学原理: 对于一个非线性方程的数值解法很多。在此介绍两种最常见的方法:二分法和Newton 法。 对于二分法,其数学实质就是说对于给定的待求解的方程f(x),其在[a,b]上连续,f(a)f(b)<0,且f(x)在[a,b]内仅有一个实根x*,取区间中点c,若,则c恰为其根,否则根据f(a)f(c)<0是否成立判断根在区间[a,c]和[c,b]中的哪一个,从而得出新区间,仍称为[a,b]。重复运行计算,直至满足精度为止。这就是二分法的计算思想。 Newton法通常预先要给出一个猜测初值x0,然后根据其迭代公式 产生逼近解x*的迭代数列{x k},这就是Newton法的思想。当x0接近x*时收敛很快,但是当x0选择不好时,可能会发散,因此初值的选取很重要。另外,若将该迭代公式改进为 其中r为要求的方程的根的重数,这就是改进的Newton法,当求解已知重数的方程的根时,在同种条件下其收敛速度要比Newton法快的多。 程序设计: 本实验采用Matlab的M文件编写。其中待求解的方程写成function的方式,如下function y=f(x); y=-x*x-sin(x); 写成如上形式即可,下面给出主程序。 二分法源程序: clear %%%给定求解区间 b=1.5; a=0;

%%%误差 R=1; k=0;%迭代次数初值 while (R>5e-6) ; c=(a+b)/2; if f12(a)*f12(c)>0; a=c; else b=c; end R=b-a;%求出误差 k=k+1; end x=c%给出解 Newton法及改进的Newton法源程序: clear %%%% 输入函数 f=input('请输入需要求解函数>>','s') %%%求解f(x)的导数 df=diff(f); %%%改进常数或重根数 miu=2; %%%初始值x0 x0=input('input initial value x0>>'); k=0;%迭代次数 max=100;%最大迭代次数 R=eval(subs(f,'x0','x'));%求解f(x0),以确定初值x0时否就是解 while (abs(R)>1e-8) x1=x0-miu*eval(subs(f,'x0','x'))/eval(subs(df,'x0','x')); R=x1-x0; x0=x1; k=k+1; if (eval(subs(f,'x0','x'))<1e-10); break end if k>max;%如果迭代次数大于给定值,认为迭代不收敛,重新输入初值 ss=input('maybe result is error,choose a new x0,y/n?>>','s');

相关文档
最新文档