割线法与隐函数图像.doc

上传人:飞****9 文档编号:135952807 上传时间:2020-06-21 格式:DOC 页数:10 大小:141KB
返回 下载 相关 举报
割线法与隐函数图像.doc_第1页
第1页 / 共10页
割线法与隐函数图像.doc_第2页
第2页 / 共10页
割线法与隐函数图像.doc_第3页
第3页 / 共10页
割线法与隐函数图像.doc_第4页
第4页 / 共10页
割线法与隐函数图像.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《割线法与隐函数图像.doc》由会员分享,可在线阅读,更多相关《割线法与隐函数图像.doc(10页珍藏版)》请在金锄头文库上搜索。

1、专业序号姓名日期实验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,来看结果是否不同。【程序如下】:function mysecant f = inline(x4+2*x2-3-x); a =1.5;b

2、 =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 迭

3、代次数% % yc = f(c)% for k = 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 (errdelta) | (relerrdelta) | (abs(yc)epsilon) % |是

4、或 break end a = b;%单点割线法时,将a用c替换,b不变 b = c; end iter = k;% % -【运行结果如下】:双点割线法:c = 1.12412302970431err = 4.523648122756185e-010iter = 6yc = -7.993605777301127e-015单点割线法(令b为定值):c = 1.12412302972061err = 0.12412302972061iter = 12yc =1.495257251349358e-010单点割线法(令a为定值)c = 1.12412302922453err = 1.026502216

5、561198e-009iter = 17yc = -4.403701847621733e-009【结果分析】:1、 这个实验中,双点割线法显然收敛速度明显快于单点割线法,可知双点割线法的收敛速度为,确实比单一的线性收敛快,并且迭代次数更少。2、 由结果可知,即使是同一种你算法,单点割线法的初值不同,同样会影响迭代次数,当分别以a和b为定值时,迭代次数则分别为17和12,实验4 绘制的隐函数的图像【方法】 众所周知,隐函数一般是不能用显式方式表示的, 故确定隐函数的大致图像是非常重要的. 对于方程 F(x,y) = 0 如果固定 x 就是一个关于 y 的非线性方程,我们可以通过求根的方法求出 y

6、 因此只要对 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) 的迭代初值【程序如下】:% % 隐函数作图 function implicit_function global p % 定义全局变量 n = 101; x = linspace(-5,5,101

7、); y = zeros(1,n); % 定义矩阵,初值是零,这是最常用的定义矩阵的方法 y0 = -4.6; % 第一次迭代初值 for k = 1:n p = x(k); y(k) = fzero(fun,y0); y0 = y(k); end plot(x,y) % 作图 title(隐函数) % 加个标题% %- function z = fun(y) % 定义函数,这是最常用的定义函数的方式 global p x = p; z = y3/(2+0.1*sin(x*y)+x2-4*x;【运行结果如下】:【结果分析】:虽然隐函数的图像无法用显式方式表示的, 但我们任然可以用离散的点来大致

8、的描述出函数的图像,这有利于我们对隐函数的性质的进一步理解。学习和掌握好隐函数的绘制和应用,有利于我们今后的学习。实验5 fsolve命令求解 【实验目的】,通过作图观察根的近似值,再掌握用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); %

9、 第二个方程求函数值,注意这里自变量与函数是颠倒的plot(x,y1,y2,x) % 作图,注意再把自变量与函数颠倒过来grid onaxis(-2 0 1 3) % 限制横坐标与纵坐标的范围,这里要通过不断偿试来得到合适的范围% 通过作图发现在 (0,-1) 附近有一个根,调用 fsolve 求更精确的解clcX0 = -2,0; % 初值X = fsolve(myfun,X0);fprintf(%.2f %.2f,X);% - 定义函数组 myfun -function F = myfun(X)F = sin(X(1)/2-X(2); cos(2)/2-X(1); % 注 这里 F 必须是

10、列向量;% -function study_fsolveclf % 清图像x = -1:0.01:1; % 离散化,步长 0.01,这也是常用的方法y1=sin(x)/2 ; % 第一个方程求函数值,注意所有运算都是点运算,和常数相乘等就不用写点了y2=cos(x)/2; % 第二个方程求函数值,注意这里自变量与函数是颠倒的plot(x,y1,y2,x) % 作图,注意再把自变量与函数颠倒过来grid onaxis(-1 1 -1 1) % 限制横坐标与纵坐标的范围,这里要通过不断偿试来得到合适的范围% 通过作图发现在 (0,-1) 附近有一个根,调用 fsolve 求更精确的解clcX0 =

11、 0.5,0.2; % 初值X = fsolve(myfun,X0);fprintf(x=%.2f y=%.2f,X);% - 定义函数组 myfun -function M = myfun(X)M = sin(X(1)/2-X(2); cos(2)/2-X(1); % 注 这里 F 必须是列向量;% -【运行结果如下】:方程的解:x=-0.208073418273571 y=-0.103287628825787【结果分析】:1、 在函数方程组的求解过程中,我们可以先通过函数图象来大致确定一下根的大致范围,在利用fsolve函数在进行较为精确的求解,这样不仅可以有效的加快运算速度,还可以进一步的了解这个方程组的一些特点2、 从最后结果的图像上来看,我们可以清楚的确定解的范围,从而在利用fsolve函数来精确求解,比较方便。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 工业设计

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号