割线法与隐函数图像.docx
- 文档编号:687135
- 上传时间:2022-10-12
- 格式:DOCX
- 页数:8
- 大小:120.62KB
割线法与隐函数图像.docx
《割线法与隐函数图像.docx》由会员分享,可在线阅读,更多相关《割线法与隐函数图像.docx(8页珍藏版)》请在冰豆网上搜索。
割线法与隐函数图像
专业 序号 姓名 日期
实验3割线法
【实验目的】学会分别用单点割线法和双点割线法来求解方程的根
【实验内容】
用割线法求方程在区间(1,1.5)内之间的根()。
【方法】
双点割线法:
设a,b为迭代初值,求两点(a,f(a))与(b,f(b))的连线(割线)与x轴的交点记为c,
再把迭代初值换成b,c,重复计算.
单点割线法:
设a,b为迭代初值,求两点(a,f(a))与(b,f(b))的连线(割线)与x轴的交点记为c,
但只把一个迭代初值a换成c或把b换成c,来看结果是否不同。
【程序如下】:
functionmysecant
f=inline('x^4+2*x^2-3-x');
a=1.5;b=1;
delta=1e-9;epsilon=1e-9;max1=20;
[c,err,iter,yc]=secant(f,a,b,delta,epsilon,max1)
%---------------------------------------------------------
function[c,err,iter,yc]=secant(f,a,b,delta,epsilon,max1)
%[c,err,iter,yc]=secant(f,a,b,delta,epsilon,max1)
%输入:
f连续函数
%%a,b迭代初值
%%delta,epsilon容差
%%max1最大迭代次数
%%输出:
c近似根
%%err误差
%%iter迭代次数
%%yc=f(c)
%
fork=1:
max1
ya=feval(f,a);%ya=f(a)
yb=feval(f,b);
c=b-f(b)*(b-a)/(f(b)-f(a));%割线与x轴交点的横坐标
err=abs(c-b);%相邻两次迭代的误差
relerr=err/(abs(c)+eps);%相对误差,eps是matlab常数(机器精度)约为1e-16
%为什么分母要加上一个小常数?
yc=feval(f,c);
if(err break end a=b;%单点割线法时,将a用c替换,b不变 b=c; end iter=k; %%------------------------------------- 【运行结果如下】: 双点割线法: c= 1.12412302970431 err= 4.523648122756185e-010 iter= 6 yc= -7.993605777301127e-015 单点割线法(令b为定值): c= 1.12412302972061 err= 0.12412302972061 iter= 12 yc= 1.495257251349358e-010 单点割线法(令a为定值) c= 1.12412302922453 err= 1.026502216561198e-009 iter= 17 yc= -4.403701847621733e-009 【结果分析】: 1、这个实验中,双点割线法显然收敛速度明显快于单点割线法,可知双点割线法的收敛速度为,确实比单一的线性收敛快,并且迭代次数更少。 2、由结果可知,即使是同一种你算法,单点割线法的初值不同,同样会影响迭代次数,当分别以a和b为定值时,迭代次数则分别为17和12, 实验4绘制的隐函数的图像 【方法】众所周知,隐函数一般是不能用显式方式表示的,故确定隐函数的大致图像是非常重要的. 对于方程F(x,y)=0如果固定x就是一个关于y的非线性方程,我们可以通过求根的方法求出y 因此只要对x离散化x(k),k=1,2,...,再求得y(k),把点((x(k),y(k)))连起来 就能得到由方程F(x,y)=0所确定的隐函数y=f(x)的大致图像 【实验要求】 绘制由下面方程所确定的隐函数y=f(x)的图像 这里把[-5,5]用linspace命令100等分 第一次初值用y0=-4.6,以后用y(k)作为下一次求y(k+1)的迭代初值 【程序如下】: %%隐函数作图 functionimplicit_function globalp%定义全局变量 n=101; x=linspace(-5,5,101); y=zeros(1,n);%定义矩阵,初值是零,这是最常用的定义矩阵的方法 y0=-4.6;%第一次迭代初值 fork=1: n p=x(k); y(k)=fzero(@fun,y0); y0=y(k); end plot(x,y)%作图 title('隐函数')%加个标题 %%------------------------------ functionz=fun(y)%定义函数,这是最常用的定义函数的方式 globalp x=p; z=y^3/(2+0.1*sin(x*y))+x^2-4*x; 【运行结果如下】: 【结果分析】: 虽然隐函数的图像无法用显式方式表示的,但我们任然可以用离散的点来大致的描述出函数的图像,这有利于我们对隐函数的性质的进一步理解。 学习和掌握好隐函数的绘制和应用,有利于我们今后的学习。 实验5fsolve命令求解 【实验目的】 ,通过作图观察根的近似值,再掌握用fsolve命令来求更精确的解 【实验内容】 由于每个方程都可以表示显式函数,故可以通过作图观察根的大致位置(两个曲线的交点) 解下列方程 在|x|<1,|y|<1内求解 【程序如下】: clf%清图像 x=-1.5: 0.01: 1.5;%离散化,步长0.01,这也是常用的方法 y1=(3-x)/2;%第一个方程求函数值,注意所有运算都是'点'运算,和常数相乘等就不用写'点'了 y2=sqrt((5-x.^2)/2);%第二个方程求函数值,注意这里自变量与函数是颠倒的 plot(x,y1,y2,x)%作图,注意再把自变量与函数颠倒过来 gridon axis([-2013])%限制横坐标与纵坐标的范围,这里要通过不断偿试来得到合适的范围 %通过作图发现在(0,-1)附近有一个根,调用fsolve求更精确的解 clc X0=[-2,0];%初值 X=fsolve(@myfun,X0);fprintf('%.2f%.2f',X); %------------定义函数组myfun---------------- functionF=myfun(X) F=[sin(X (1))/2-X (2); cos (2)/2-X (1)]; %[注]这里F必须是列向量; %---------------------------------------------- functionstudy_fsolve clf%清图像 x=-1: 0.01: 1;%离散化,步长0.01,这也是常用的方法 y1=sin(x)/2;%第一个方程求函数值,注意所有运算都是'点'运算,和常数相乘等就不用写'点'了 y2=cos(x)/2;%第二个方程求函数值,注意这里自变量与函数是颠倒的 plot(x,y1,y2,x)%作图,注意再把自变量与函数颠倒过来 gridon axis([-11-11])%限制横坐标与纵坐标的范围,这里要通过不断偿试来得到合适的范围 %通过作图发现在(0,-1)附近有一个根,调用fsolve求更精确的解 clc X0=[0.5,0.2];%初值 X=fsolve(@myfun,X0);fprintf('x=%.2fy=%.2f',X); %------------定义函数组myfun---------------- functionM=myfun(X) M=[sin(X (1))/2-X (2); cos (2)/2-X (1)]; %[注]这里F必须是列向量; %---------------------------------------------- 【运行结果如下】: 方程的解: x=-0.208073418273571y=-0.103287628825787 【结果分析】: 1、在函数方程组的求解过程中,我们可以先通过函数图象来大致确定一下根的大致范围,在利用fsolve函数在进行较为精确的求解,这样不仅可以有效的加快运算速度,还可以进一步的了解这个方程组的一些特点 2、从最后结果的图像上来看,我们可以清楚的确定解的范围,从而在利用fsolve函数来精确求解,比较方便。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 割线 函数 图像
![提示](https://static.bdocx.com/images/bang_tan.gif)