好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

实验指导书非线性方程(组)的数值解法.docx

26页
  • 卖家[上传人]:奇异
  • 文档编号:274787774
  • 上传时间:2022-04-09
  • 文档格式:DOCX
  • 文档大小:148.19KB
  • / 26 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 仅供个人参考实验指导书—非线性方程(组)的数值解法隔根区间的求法(确定根的初始近似值):作图法,逐步搜索法等求根的方法:二分法,迭代法,牛顿法,割线法,抛物线法,迭代法的加速等Forpersonaluseonlyinstudyandresearch;notforcommercialuse实验平台:MATLAB件说明:与方程求根有关的MATLAB函数另见MATLAB学习资料Forpersonaluseonlyinstudyandresearch;notforcommercialuse一、搜索根的方法及其MATLAB序求解非线性方程根的近似值时,首先需要判断方程有没有根?如果有根,有几个根?如果有根,需要搜索根所在的区间或确定根的初始近似值(简称初始值).搜索根的近似位置白^常用方法有三种:作图法、逐步搜索法和二分法等,使用这些方法的前提是高等数学中的零点定理.1 .作图法及其MATLAB序(1)作函数y=f(x)在区间[a,b]的图形的MATLAB程序一x=a:h:b;%h是步长y=f(x);plot(x,y)grid,gtext('y=f(x)')说明:①此程序在MATLAB的工作区输入,运行后即可出现函数y=f(x)的图形.此图形与x轴交点的横坐标即为所要求的根的近似值.②区间[a,b]的两个端点的距离b-a和步长h的绝对值越小,图形越精确.(2)作函数y=f(x)在区间[a,b]的图形的MATLAB程序二将y=f(x)化为h(x)=g(x),其中h(x)和g(x)是两个相等的简单函数x=a:h:b;y1=h(x);y2=g(x);plot(x,y1,x,y2)grid,gtext('y1=h(x),y2=g(x)')说明:此程序在MATLAB的工作区输入,运行后即可出现函数y1=h(x)和y2=g(x)的图形.两图形交点的横坐标即为所要求的根的近似值.2 .逐步搜索法及其MATLAB序逐步搜索法也称试算法.它是求方程f(x)=0根的近似值位置的一种常用的方法.逐步搜索法依赖于寻找连续函数f(x)满足f(a)与f(b)异号的区间[a,b].一旦找到区间,无论区间多大,通过某种方法总会找到一个根.MATLAB的库函数中没有逐步搜索法的程序,现根据逐步搜索法的计算步骤和它的收敛判定准则编写其MATLAB程序如下,命名为zhubussm.输入输出说明:输入区间端点a和b的值,步长h和精度tol,运行后输出迭代次数k=(b-a)/h+1,方程f(x)=0根的近似值r.function[k,r]=zhubuss(a,b,h,tol)%输入的量:%琲Db是闭区间[a,b]的左、右端点;%h是步长;%tol是预先给定的精度.%运行后输出的量:%k是搜索点的个数;%r是方程在[a,b]上的实根的近似值,其精度是tol;X=a:h:b;Y=funs(X);%f(x)的M文件,对应名称为funs.m的函数文件n=fix((b-a)/h)+1;m=0;X(n+1)=X(n);Y(n+1)=Y(n);fork=2:nX(k)=a+k*h;Y(k)=funs(X(k));%程序中调用的funs.m为函数sk=Y(k)*Y(k-1);ifsk<=0,m=m+1;r(m)=X(k);endxielv=(Y(k+1)-Y(k))*(Y(k)-Y(k-1));if(abs(Y(k))>[k,r]=zhubuss(-2,2,0.001,0.0001)运行后输出的结果k=4001r=-1.2240-1.0000-1.0000-0.99901.2250即搜索点的个数为k=4001,其中有5个是方程2-+2丁-31-3=0的近似根,即r=-1.2240,-1.0000,-1.0000,-0.9990,1.2250,其精度为0.0001.在程序中将y=2.*x.A3+2.*x.A2-3.*x-3用y=sin(cos(2.*x.A3))代替,可得到方程sin(cos(2x3))=0在区间卜2,2]上的根的近似值如下r=-1.9190-1.7640-1.5770-1.3300-0.92200.92301.33101.57801.76501.9200二分法及其MATLAB程序1.二分法的MATLAB程序二分法的MATLAB主程序一:function[k,x,wuca,yx]=erfen(a,b,abtol)a(1)=a;b(1)=b;ya=fun(a(1));yb=fun(b(1));%f(x)的M文件,对应名称为fun.m的函数文件ifya*yb>0,disp('注意:ya*yb>0,请重新调整区间端点a和b.'),returnendmax1=-1+ceil((log(b-a)-log(abtol))/log(2));%ceil是向+00方向取整%max1符合误差要求的迭代次数fork=1:max1+1a;ya=fun(a);b;yb=fun(b);x=(a+b)/2;yx=fun(x);wuca=abs(b-a)/2;k=k-1;[k,a,b,x,wuca,ya,yb,yx]ifyx==0a=x;b=x;elseifyb*yx>0b=x;yb=yx;elsea=x;ya=yx;endifb-a

      方法1作图法.在MATLAB工作窗口输入如下程序>>x=-4:0.1:4;y=x.A3-x+4;plot(x,y)grid,gtext('y=xA3-x+4')画出函数f(x)=x3-x+4的图像.从图像可以看出,此曲线有两个驻点士1都在x轴的上方,在(-2,-1)内曲线与x轴只有一个交点,则该方程有唯一一个实根,且在(-2,-1)内.方法2试算法.在MATLAB工作窗口输入程序>>x=-4:1:4,y=x.A3-x+4运行后输出结果x=-4-3-2-101234y=-56-20-2444102864由于连续函数f(x)满足,所以此方程在(-2,-1)内有一个实根.(2)用二分法的主程序计算.在MATLAB工作窗口输入程序>>[k,x,wuca,yx]=erfen(-2,-1,0.001)运行后屏幕显示用二分法计算的过程(现已被列入下表),其余结果为k=9,x=-1.7959,wuca=9.7656e-004yx=0.0037次数k左端点ak右端点bk中点xk函数值f(ak)函数值f(bk)函数值f(xk)0-2.0000-1.0000-1.50000.5000-2.00004.00002.12501-2.0000-1.5000-1.75000.2500-2.00002.12500.39062-2.0000-1.7500-1.87500.1250-2.00000.3906-0.71683-1.8750-1.7500-1.81250.0625-0.71680.3906-0.14184-1.8125-1.7500-1.78130.0313-0.14180.39060.12965-1.8125-1.7813-1.79690.0156-0.14180.1296-0.00486-1.7969-1.7813-1.78910.0078-0.00480.12960.06277-1.7969-1.7891-1.79300.0039-0.00480.06270.02908-1.7969-1.7930-1.79490.0020-0.00480.02900.01219-1.7969-1.7949-1.79590.0010-0.00480.01210.0037二分法的MATLAB主程序二:function[c,err,yc,k]=bisect(f,a,b,delta)ya=feval(f,a);yb=feval(f,b);ifya*yb>0,return,endmax1=1+round((log(b-a)-log(delta))/log(2));fork=1:max1c=(a+b)/2;yc=feval(f,c);ifyc==0a=c;b=c;elseifyb*yc>0b=c;yb=yc;elsea=c;ya=yc;endifb-a1)&(xdpiancha>0.5)&(k>3)disp(请用户注意:此迭代序列发散,请重新输入新的迭代公式')return;endif(piancha<0.001)&(xdpiancha<0.0000005)&(k>3)disp(祝贺您!此迭代序列收敛,且收敛速度较松’)return;endp=[(i-1)pianchaxdpianchaxk]';例4求方程,0)二#+2尸10的一个正根.解首先建立迭代函数的M文件(注意调用主程序时要相应修改函数名)functiony=fun1(x)y=(10-xA2)/2;functiony=fun2(x)y=10/(x+2);在MATLAB工作窗口输入程序>>[k,piancha,xdpiancha,xk]=diedai1(2,5)运行后输出用迭代公式仆+1=(1°一只”2的结果[k,piancha,xdpiancha,xk]=1.000000000000001.000000000000000.333333。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.