欢迎来到天天文库
浏览记录
ID:36937930
大小:46.45 KB
页数:5页
时间:2019-05-02
《最新课件MATLAB数值计算第4章方程求根.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、MATLAB数值计算(读书日记及程序编写)第四章方程求根2第四章方程求根#二分法求的值转化成方程最慢的方法是取初值,取这样得到也可以x0=a,x1=x0+h,进行扫描,若f(x0)*f(x1)<0,则扫描成功,有根区间为[x0,x1],否则继续扫描,如果出现x1>b,表面扫描失败,再缩小步长h,再次扫描。>>formatlong%让显示的值为M=2,a=1,b=2,k=0;whileb-a>epsx=(a+b)/2;ifx^2>Mb=xelsea=xendk=k+1end执行后得到的值为:k=50b=1.414213562373095k=51b
2、=1.414213562373095k=52最后得到的值就是Matlab能表达的最接近的值。#牛顿法求解f(x)=0的牛顿法是在f(x)画一条切线,确定切线与x轴的焦点,通过迭代对于平方根的问题,牛顿法简洁有效,换成f(x)=x^2-M,=2x这样该算法就是反复求x和M/x的平均值,Matlab的程序为:formatlong%让显示的值为xprev=2;%取的不等于初值x的一个值,让判断能继续x=100;%取的初值为3whileabs(x-xprev)>eps*abs(x)xprev=x;x=0.5*(x+2/x)endx=1.83333333
3、3333333x=1.462121212121212x=1.414998429894803x=1.414213780047198x=1.414213562373112x=1.414213562373095x=1.414213562373095可见6步很快就收敛然而,若f(x)不具有连续的、有界的一阶、二阶导数,牛顿法的收敛将变得很慢。#fzero函数直接求根求x^3-1在区间[0,10]上的根fzero(@(x)x^3-1,[0,10])ans=1fzerogui(@(x)x^3-1,[0,10])可以通过在图形界面上选择割点来得到>>fzer
4、ogui(@(x)x^3-1,[0,10])ans=start0.0000000000000000start10.0000000000000000secant0.0100000000000000bisect5.0049999999999999secant0.0498403198384075bisect2.5274201599192034secant0.2032825426923320bisect1.3653513513057676secant0.6575071192259432bisect1.0114292352658554secant0.99
5、50727548572595secant0.9999439297147387iqi1.0000000052288878secant0.9999999999997068secant1.0000000000000000(bisect:二分,secant:交点,可见,经过多次迭代,非常接近真实解x=1同理,要求贝塞尔函数的根,输入直接得到>>fzero(@(x)besselj(0,x),[0,3.83])ans=2.4048输入图形求解,可以得到:>>fzerogui(@(x)besselj(0,x),[0,3.83])
此文档下载收益归作者所有