MATLAB應(yīng)用-求解非線(xiàn)性方程_第1頁(yè)
MATLAB應(yīng)用-求解非線(xiàn)性方程_第2頁(yè)
MATLAB應(yīng)用-求解非線(xiàn)性方程_第3頁(yè)
MATLAB應(yīng)用-求解非線(xiàn)性方程_第4頁(yè)
MATLAB應(yīng)用-求解非線(xiàn)性方程_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第7章 求解非線(xiàn)性方程7.1 多項(xiàng)式運(yùn)算在MATLAB中的實(shí)現(xiàn)一、多項(xiàng)式的表達(dá)n次多項(xiàng)式表達(dá)為:,是n+1項(xiàng)之和在MATLAB中,n次多項(xiàng)式可以用n次多項(xiàng)式系數(shù)構(gòu)成的長(zhǎng)度為n+1的行向量表示a0, a1,an-1,an二、多項(xiàng)式的加減運(yùn)算設(shè)有兩個(gè)多項(xiàng)式和。它們的加減運(yùn)算實(shí)際上就是它們的對(duì)應(yīng)系數(shù)的加減運(yùn)算。當(dāng)它們的次數(shù)相同時(shí),可以直接對(duì)多項(xiàng)式的系數(shù)向量進(jìn)行加減運(yùn)算。當(dāng)它們的次數(shù)不同時(shí),應(yīng)該把次數(shù)低的多項(xiàng)式無(wú)高次項(xiàng)部分用0系數(shù)表示。例2 計(jì)算 a=1, -2, 5, 3; b=0, 0, 6, -1; c=a+b例3 設(shè),求f(x)+g(x)f=3, -5, 2, -7, 5, 6; g=3, 5

2、, -3; g1=0, 0, 0, g;%為了和f的次數(shù)找齊f+g1, f-g1三、多項(xiàng)式的乘法運(yùn)算conv(p1,p2)例4 在上例中,求f(x)*g(x)f=3, -5, 2, -7, 5, 6; g=3, 5, -3; conv(f, g)四、多項(xiàng)式的除法運(yùn)算Q, r=deconv(p1, p2)表示p1除以p2,給出商式Q(x),余式r(x)。Q,和r仍為多項(xiàng)式系數(shù)向量例4 在上例中,求f(x)/g(x)f=3, -5, 2, -7, 5, 6; g=3, 5, -3; Q, r=deconv(f, g)五、多項(xiàng)式的導(dǎo)函數(shù)p=polyder(P):求多項(xiàng)式P的導(dǎo)函數(shù)p=polyder(

3、P,Q):求P·Q的導(dǎo)函數(shù)p,q=polyder(P,Q):求P/Q的導(dǎo)函數(shù),導(dǎo)函數(shù)的分子存入p,分母存入q。參數(shù)P,Q是多項(xiàng)式的向量表示,p,q也是多項(xiàng)式的向量表示。例4 求有理分式的導(dǎo)函數(shù)P=3, 5, 0, -8, 1, -5; %有理分式分子Q=10, 5, 0, 0, 6, 0, 0, 7, -1, 0, -100; %有理分式分母p,q=polyder(P,Q)六、多項(xiàng)式求根多項(xiàng)式求根就是求滿(mǎn)足多項(xiàng)式p(x)0的x值。N次多項(xiàng)式應(yīng)該有n個(gè)根。這些根可能是實(shí)根,也可能是假設(shè)干對(duì)共軛復(fù)根。其調(diào)用格式是x=roots(P)其中P為多項(xiàng)式的系數(shù)向量,求得的根賦給向量x,即x(1)

4、,x(2),x(n)分別代表多項(xiàng)式的n個(gè)根。該命令每次只能求一個(gè)一元多項(xiàng)式的根,該指令不能用于求方程組的解,必須把多項(xiàng)式方程變成Pn (x) = 0的形式;例4 求方程的解。首先將方程變成Pn (x) = 0的形式:roots(1 -1 0 -1)例5 求多項(xiàng)式x4+8x3-10的根。A=1,8,0,0,-10;x=roots(A)假設(shè)已知多項(xiàng)式的全部根,則可以用poly函數(shù)建立起該多項(xiàng)式,其調(diào)用格式為:P=poly(x)假設(shè)x為具有n個(gè)元素的向量,則poly(x)建立以x為其根的多項(xiàng)式,且將該多項(xiàng)式的系數(shù)賦給向量P。例6 已知 f(x)=3x5+4x3-5x2-7.2x+5(1) 計(jì)算f(x

5、)=0 的全部根。(2) 由方程f(x)=0的根構(gòu)造一個(gè)多項(xiàng)式g(x),并與f(x)進(jìn)行比照。P=3,0,4,-5,-7.2,5;X=roots(P) %求方程f(x)=0的根G=poly(X) %求多項(xiàng)式g(x)將這個(gè)結(jié)果乘以3,就與f(x)一致7.2 求解非線(xiàn)性方程f ( x ) = 0方程求根的一般形式是求以下方程的根:f ( x ) = 0 (l)實(shí)際上,就是尋找使函數(shù) f ( x等于零的變量x,所以求方程l的根,也叫求函數(shù) f ( x的零點(diǎn)。如果變量x是列陣,則方程l就代表方程組。當(dāng)方程l中的函數(shù) f (x是有限個(gè)指數(shù)、對(duì)數(shù)、三角、反三角或冪函數(shù)的組合時(shí),則方程l被稱(chēng)為超越方程,例如

6、 e-x - sinx / 2 ) lnx = 0 就是超越方程。當(dāng)方程l中的函數(shù)fx是多項(xiàng)式時(shí),即 fxPnx= anxn + an-1xn alx + a0,則方程l就成為下面的多項(xiàng)式方程,也稱(chēng)代數(shù)方程:Pnx= anxn + an-1xn alx + a0 = 0 ( 2 ) Pnx的最高次數(shù)n等于2、3時(shí),用代數(shù)方法可以求出方程2的解析解,但是,當(dāng)n 5時(shí),伽羅瓦Galois定理已經(jīng)證明它是沒(méi)有代數(shù)求根方法的。至于超越方程,通常很難求出其解析解。所以,方程l的求解經(jīng)常使用作圖法或數(shù)值法,而電腦的發(fā)展和普及又為這些方法提供了廣闊的發(fā)展前景,使之成為科學(xué)和工程中最實(shí)用的方法之一。本章首先介

7、紹求解 f ( x ) = 0 的 MATLAB 符號(hào)法指令,然后介紹求方程數(shù)值解的基本原理,最后再介紹求解 f ( x ) = 0 的 MATLAB 數(shù)值法指令。一、符號(hào)方程求解在MATLAB中,求解用符號(hào)表達(dá)式表示的代數(shù)方程可由函數(shù)solve實(shí)現(xiàn),其調(diào)用格式為:solve(s):求解符號(hào)表達(dá)式s的代數(shù)方程,求解變量為默認(rèn)變量。當(dāng)方程右端為0時(shí),方程可以不標(biāo)出等號(hào)和0,僅標(biāo)出方程的左端。solve(s,v):求解符號(hào)表達(dá)式s的代數(shù)方程,求解變量為v。solve(s1,s2,sn,v1,v2,vn):求解符號(hào)表達(dá)式s1,s2,sn組成的代數(shù)方程組,求解變量分別v1,v2,vn。例1 解以下方程

8、。1x= solve('1/(x+2)+4*x/(x2-4)=1+2/(x-2)', 'x')2f=sym('x-(x3-4*x-7)(1/3)=1')x= solve(f)3x= solve('2*sin(3*x-pi/4)=1')4x= solve('x+x*exp(x)-10', 'x') %僅標(biāo)出方程的左端二、求方程f ( x ) = 0數(shù)值解的基本方法并非所有的方程 f ( x ) = 0 都能求出精確解或解析解,不存在這種解的方程就需要用數(shù)值解法求出近似解,有幾種常見(jiàn)的數(shù)值解法基本原理:

9、二分法。 1 求實(shí)根的二分法原理設(shè)方程 f (x) =0中的函數(shù) f ( x為實(shí)函數(shù),且滿(mǎn)足: 函數(shù) f (x在 a , b上單調(diào)、連續(xù); 方程 f (x) = 0 在a , b內(nèi)只有一個(gè)實(shí)根 x*。則求方程 f (x) = 0 的根,就是在a, b內(nèi)找出使f (x為零的點(diǎn)x*:f (x*) = 0 ,即求函數(shù) f ( x ) 的零點(diǎn)。因?yàn)?f (x單調(diào)連續(xù),由連續(xù)函數(shù)的性質(zhì)可知,假設(shè)任意兩點(diǎn)aj,bjÎ a , b ,而且滿(mǎn)足條件 f (aj) f (bj) < 0 ,則閉區(qū)間aj , bj 上必然存在方程的根x*,即 x*Îaj , bj。據(jù)此原理提出求實(shí)根的二分

10、法如以下圖所示,圖1 方程求根二分法原理示意圖先用中點(diǎn)將區(qū)間a, b平分為兩個(gè)子區(qū)間 (a,b1和b1, b),方程的根必然在子區(qū)間兩端點(diǎn)上函數(shù)值之積小于零的那一半中,即不在(a ,b1內(nèi),就在b1 ,b )內(nèi),除非 f(b1) = 0 ,于是尋根的范圍縮小了一半。圖1中的根x*在區(qū)間中點(diǎn)左側(cè),即 x*Î(a , bl。再將新的含根區(qū)間( a , b1分成兩半,重復(fù)上述步驟確定出更新的含根子區(qū)間。如此重復(fù)n次,設(shè)含根區(qū)間縮小為an, bn,則方程的根x*Îan, bn, 這一系列含根的子區(qū)間滿(mǎn)足:( a , b ) D É ( al , bl ) É (

11、 a2 , b2 ) É É ( a0, b0É 由于含根區(qū)間范圍每次減半,子區(qū)間的寬度為 (n = 1,2,.),顯然當(dāng)n¥時(shí),(bn一an0,即子區(qū)間收斂于一點(diǎn)x*,這個(gè)點(diǎn)就是方程的根。假設(shè)n為有限整數(shù),取最后一個(gè)子區(qū)間的中點(diǎn) 作為方程根的近似值,它滿(mǎn)足 f ( xn0 ,于是有:這就是近似值xn的絕對(duì)誤差限。假定預(yù)先要求的誤差為e,由便可以求出滿(mǎn)足誤差要求的最小等分次數(shù)n。下面是二分法的程序function c,err,yc =bisect (f,a,b,delta) %Input - f is the function input as a st

12、ring f% - a and b are the left and right end points %. - delta is the tolerance %Output - c is the zero% - yc=f(c) % - err is the error estimate for c ya=feval (f,a); yb=feval (f,b); if ya*yb>0, break, end %表示無(wú)解,結(jié)束maxl=l+round( (log (b-a) -log (delta)/log (2); %從誤差表達(dá)式得到最小等分次數(shù)nfor k=1:max1c=(a+b)/

13、2; %取區(qū)間中點(diǎn)yc=feval (f,c); if yc=0a=c; b=c; %這時(shí)解已經(jīng)找到elseif yb*yc>0b=c; %區(qū)間減半yb=yc; else a=c; ya=yc; end if b-a < delta, break, endendc=(a+b)/2; err=abs(b-a); yc=feval (f, c)2 迭代法迭代法是計(jì)算數(shù)學(xué)中的一種重要方法,用途很廣,求解線(xiàn)性方程組和矩陣特征值時(shí)也要用到它。這里結(jié)合非線(xiàn)性方程的迭代法求解,介紹一下它的基本原理。迭代法基本原理迭代法的基本原理就是構(gòu)造一個(gè)迭代公式,反復(fù)用它得出一個(gè)逐次逼近方程根的數(shù)列,數(shù)列中每

14、個(gè)元素都是方程根的近似值,只是精度不同。迭代法求解方程 f ( x ) = 0 1時(shí),先把方程等價(jià)地變換成形式 f ( x ) = xg(x) = 0 , 2移項(xiàng)得出:x = g(x) ( 3 ) 假設(shè)函數(shù)g (x連續(xù),則稱(chēng)3為迭代函數(shù)。用它構(gòu)造出迭代公式:xk+1= g ( xk , k = 0 , l , 2 , ( 4 )從初始值 x0出發(fā),便可得出迭代序列: x k = x0, x1, x2,.xk,. 5 如果迭代序列5 收斂,且收斂于x*,則由式4有:可見(jiàn) x*便是方程l的根。迭代法幾何意義:如以下圖所示,解方程f ( x ) = 0可以等價(jià)地變換成求解 x = g ( x ),圖

15、 4 - 2 方程求根迭代法原理示意圖在幾何上,就等價(jià)求曲線(xiàn)yx 和yg ( x 交點(diǎn)P*的坐標(biāo) x*。求迭代序列5) ,就等于從圖中x0點(diǎn)出發(fā),由函數(shù)yg ( x0得出yP0,代入函數(shù)yx中得出Q1,再把Q1的x坐標(biāo) x1代入方程y= g ( x 得出P1,如此繼續(xù)下去,便可在曲線(xiàn)yg ( x )上得到一系列的點(diǎn)P0,P1, ,Pk, ,這些點(diǎn)的x坐標(biāo)便是迭代數(shù)列 xl , x2 , , xk, ,它趨向于方程l ) 的根 x*,數(shù)列的元素就是方程根的近似值。數(shù)列的收斂就等價(jià)于曲線(xiàn)yx 和yg ( x 能夠相交于一點(diǎn)。迭代公式收斂定理要想用迭代法求出方程根的近似值,迭代序列4 - 5必須收斂

16、。下面的定理給出了迭代法的收斂條件,同時(shí)也給出了迭代公式的誤差。收斂定理:方程 x = g ( x 在 a , b 內(nèi)有根 x*,如果: 當(dāng)xÎa,b時(shí),g( xÎa,b; g ( x可導(dǎo),且存在正數(shù) q < 1,使得對(duì)于任意xÎa,b都有|g( x )|£ q < 1,則有以下結(jié)論。 方程x = g ( x在a , b內(nèi)有唯一的根x*。 迭代公式 xk+1 = g ( xk對(duì)a , b內(nèi)任意初始近似根 x0均收斂于x*。 近似根 xk的誤差估計(jì)公式為: (4 - 6)3 切線(xiàn)法切線(xiàn)法就是從函數(shù)曲線(xiàn)上的一點(diǎn)出發(fā),不斷用曲線(xiàn)的切線(xiàn)代替曲線(xiàn),求得

17、收斂于根的數(shù)列。切線(xiàn)法原理:解非線(xiàn)性方程f( x ) = 0 的切線(xiàn)法也稱(chēng)牛頓法,它是把方程線(xiàn)性化的一種近似方法,用函數(shù) f (x的切線(xiàn)代替曲線(xiàn)產(chǎn)生一個(gè)收斂于方程根的迭代序列,從而得到方程的近似根。把函數(shù) f ( x在某一初始值 x 。點(diǎn)附近展開(kāi)成泰勒級(jí)數(shù): (4 - 7)取其線(xiàn)性部分,近似地代替函數(shù)f (x可得方程的近似式:設(shè),解該近似方程可得:把函數(shù) f ( x 在xl點(diǎn)附近展開(kāi)成泰勒級(jí)數(shù),取其線(xiàn)性部分替代函數(shù)f (x),設(shè),得:如此繼續(xù)做下去,就可以得到牛頓迭代公式: ,k = 0 , l , 2 , ( 8 ) 由式8得出的迭代序列 xl , x2 , ,xk ,在一定的條件下收斂于方

18、程的根x*。 2 幾何意義圖 4 一 3 方程求根切線(xiàn)法原理示意圖選取初值x0后,過(guò)點(diǎn)作曲線(xiàn)的切線(xiàn),其方程為。設(shè)切線(xiàn)與X釉的交點(diǎn)為x1,則,再過(guò)作切線(xiàn),與x軸的交點(diǎn)為, 如此不斷作切線(xiàn),求與x軸的交點(diǎn),便可得出的一系列的交點(diǎn)x1,x2,xk,它們逐漸逼近方程的根x*。3 切線(xiàn)法的收斂性理論可以證明,在有根區(qū)間a, b上,如果、連續(xù)且不變號(hào),則只要選取的初始近似根x0滿(mǎn)足 f ( x 。,切線(xiàn)法必定收斂。它的收斂速度經(jīng)推導(dǎo)可得出: ( 9)是個(gè)常數(shù),式(9)說(shuō)明用牛頓迭代公式在某次算得的誤差,與上次誤差的平方成正比,可見(jiàn)牛頓迭代公式的收斂速度很快。4 . 2 . 4 割線(xiàn)法弦截法應(yīng)用切線(xiàn)法的牛頓

19、迭代公式時(shí),每次都得計(jì)算導(dǎo)數(shù),假設(shè)將該導(dǎo)數(shù)用差商代替,就成為割線(xiàn)法有時(shí)稱(chēng)快速弦截法的迭代公式:,k = 0 , l , 2 , ( 4 一 10 )割線(xiàn)法的幾何意義也很明顯。如圖 所示,圖 4 一 4 方程求根割線(xiàn)法原理示意圖過(guò)點(diǎn)x0,f( x0和x1,f (x1)作函數(shù)yf(x曲線(xiàn)的割線(xiàn),交X軸于點(diǎn)x2,再過(guò)點(diǎn)x1,f (x1)和x2,f (x2)作曲線(xiàn)的割線(xiàn),交X軸于點(diǎn)x3,一直做下去,則得到一系列割線(xiàn)與 X 軸的交點(diǎn),這些交點(diǎn)序列將趨于方程的根 x*。非線(xiàn)性方程的數(shù)值解法還有許多,這里僅介紹了幾種基本方法的原理。二分法簡(jiǎn)單方便,但收斂速度慢;迭代法雖然收斂速度稍微快點(diǎn),但需要判斷能否收斂

20、;只要初值選取得當(dāng),切線(xiàn)法具有恒收斂且收斂速度快的優(yōu)點(diǎn),但需要求出函數(shù)的導(dǎo)數(shù);弦截法不需要求導(dǎo)數(shù),特別是前面介紹的快速弦截法,收斂速度很快,但是需要知道兩個(gè)近似的初始根值才能作出弦,要求的初始條件較多。這些方法各有千秋,需根據(jù)具體情況選用。三、方程f(x) = 0數(shù)值解的MATLAB實(shí)現(xiàn)MATLAB中求方程數(shù)值解的方法很多,有的是專(zhuān)用指令,有的是根據(jù)方程性質(zhì)而借用其他專(zhuān)用指令求得的。4 . 3 . 2 求函數(shù)零點(diǎn)指令 fzero求解方程f ( x ) = 0的實(shí)數(shù)根也就是求函數(shù)f ( x的零點(diǎn)。MATLAB中設(shè)有求函數(shù)f (x零點(diǎn)的指令fzero,可用它來(lái)求方程的實(shí)數(shù)根。該指令的使用格式為:f

21、zero (fun, x0, options) 輸入?yún)?shù)fun為函數(shù)f (x的字符表達(dá)式、內(nèi)聯(lián)函數(shù)名或M函數(shù)文件名。 輸入?yún)?shù)x0為函數(shù)某個(gè)零點(diǎn)的大概位置不要取零或存在的區(qū)間xi,xj,要求函數(shù)f (x在x0點(diǎn)左右變號(hào),即f (xi)f (xj) < 0。 輸入?yún)?shù)options可有多種選擇,假設(shè)用optimset ('disp', 'iter'代替options 時(shí),將輸出尋找零點(diǎn)的中間數(shù)據(jù)。 該指令無(wú)論對(duì)多項(xiàng)式函數(shù)還是超越函數(shù)都可以使用,但是每次只能求出函數(shù)的一個(gè)零點(diǎn),因此在使用前需摸清函數(shù)零點(diǎn)數(shù)目和存在的大體范圍。為此,一般先用繪圖指令plot, f

22、plot或ezplot 畫(huà)出函數(shù)f (x的曲線(xiàn),從圖上估計(jì)出函數(shù)零點(diǎn)的位置。例 4 一 5 求方程 x2 + 4sin(x) = 25 的實(shí)數(shù)根-2x < 2。解:一、fun為函數(shù)f (x的字符表達(dá)式l首先要確定方程實(shí)數(shù)根存在的大致范圍。為此,先將方程變成標(biāo)準(zhǔn)形式f(x) = x2 + 4sin(x) - 25 = 0。作f(x)的曲線(xiàn)圖:x=-2*pi:0.1:2*pi;f=x.2+4*sin(x)-25;plot(x,f);grid on;從曲線(xiàn)上可以看出,函數(shù)的零點(diǎn)大約在x1 - 4和x2 5附近。(2直接使用指令 fzero 求出方程在x1 - 4時(shí)的根。x1= fzero (&

23、#39;x2+4*sin(x)-25',-4)假設(shè)鍵入:fzero ('x2+4*sin(x)-25',-4, optimset('disp', 'iter'),將顯示迭代過(guò)程。中間數(shù)據(jù)說(shuō)明,求根過(guò)程中不斷縮小探測(cè)范圍,最后得出- 4附近滿(mǎn)足精度的近似根。(3求x2 5的根:x2= fzero ('x2+4*sin(x)-25',5)二、fun為函數(shù)f (x的M函數(shù)文件名將方程x2 + 4sin(x) = 25編成M函數(shù)文件實(shí)用中在函數(shù)較為復(fù)雜、而又多次重復(fù)調(diào)用時(shí),才這樣做,用fzero求解。(1)在M文件編輯調(diào)試窗中鍵入

24、:function yy = li4_5(x)yy= x2+4*sin(x)-25;以li4_5為文件名存盤(pán),退出編輯調(diào)試窗,回到指令窗。(2確定根的大體位置;(3) 在指令窗中鍵入下述指令可求出 - 4 附近的根:x1= fzero (' li4_5',-4)鍵入下述指令可求出5附近的根:x2= fzero (' li4_5',5)三、fun為函數(shù)f (x的內(nèi)聯(lián)函數(shù)名內(nèi)聯(lián)函數(shù)是MATLAB提供的一個(gè)對(duì)象(Object)。它的性狀表現(xiàn)和函數(shù)文件一樣,但內(nèi)聯(lián)函數(shù)的創(chuàng)建比較容易。inline('CE')'CE'是字符串,CE為不包含賦

25、值符號(hào)“=”的表達(dá)式。上式把串表達(dá)式轉(zhuǎn)化為輸入宗量自動(dòng)生成的內(nèi)聯(lián)函數(shù)。上述調(diào)用格式將自動(dòng)地對(duì)CE進(jìn)行辮識(shí),把CE中由字母數(shù)字組成的連續(xù)字符認(rèn)做變量,除“預(yù)定義變量名如 i , j , pi ) ”和“常用函數(shù)名如 sin )”以外的由字母數(shù)字組成的連續(xù)字符將被認(rèn)做變量。但注意:假設(shè)連續(xù)字符后緊接“左圓括號(hào)”,那么將不被當(dāng)作輸入宗量。如 x ( 1 ) ,就不會(huì)認(rèn)做輸入宗量處理。inline('CE',arg1,arg2,)上述調(diào)用格式把串表達(dá)式轉(zhuǎn)化為arg1,arg2等指定輸入宗量的內(nèi)聯(lián)函數(shù);這種調(diào)用格式是創(chuàng)建內(nèi)聯(lián)函數(shù)的最穩(wěn)妥、可靠途徑。輸入宗量字符可表達(dá)得更自如。將函數(shù)f (

26、x寫(xiě)成內(nèi)聯(lián)函數(shù)的形式:f = inline ('x2+4*sin(x)-25')這時(shí)內(nèi)聯(lián)函數(shù)名為f分別求x1 - 4和x2 5時(shí)的根:x1= fzero (f,-4), x2= fzero (f,5)例4-6 求f(x)=x-10x+2=0在附近的根。從f(x)的曲線(xiàn)看(x=-2.5:0.01:0.5; fx=x-10.x+2; plot(x,fx),(1) 建立函數(shù)文件。(function 輸出變量列表=函數(shù)名(輸入變量列表) function fx=funx(x) fx=x-10.x+2; (2) 調(diào)用fzero函數(shù)求根。 z=fzero('funx',0.

27、5)例2 求在和作為迭代初值時(shí)的零點(diǎn)。從f(x)的曲線(xiàn)看(x=-7:0.01:2; f= x-1./x+5; plot(x,f),曲線(xiàn)的零點(diǎn)有兩個(gè),一個(gè)在x=-5附近,另一個(gè)在x=1附近 (1) 建立函數(shù)文件fz.m。 function f=fz(x) f= x-1./x+5; (2) 調(diào)用fz.函數(shù)求根。 fzero('fz',-5) %以-5作為迭代初值 fzero('fz',1) %以1作為迭代初值7. 3 求解非線(xiàn)性方程組數(shù)值解的迭代法一、符號(hào)方程組求解在MATLAB中,求解用符號(hào)表達(dá)式表示的方程組仍然可由函數(shù)solve實(shí)現(xiàn),其調(diào)用格式與解用符號(hào)表達(dá)式表

28、示的方程一樣。例 解以下方程組。1x y=solve('1/x3+1/y3=28', '1/x+1/y=4', 'x,y')2u v=solve('u3+v3=98', 'u+v=2', 'u,v')3x y=solve('x+y=98', 'x(1/3)+y(1/3)=2', 'x,y')回車(chē)后出現(xiàn)下面的提示W(wǎng)arning: Explicit solution could not be found.> In D:MATLAB6p5toolbox

29、symbolicsolve.m at line 136如果做代換:,方程3就變成方程2,就可解這個(gè)問(wèn)題說(shuō)明,符號(hào)求解并不是萬(wàn)能的。如果用MATLAB得出無(wú)解或未找到所期望的解時(shí),應(yīng)該用其它方法試探求解。4x y=solve('x2+y2=5', '2*x2-3*x*y-2*y2') %變量由默認(rèn)規(guī)則確定二、求解非線(xiàn)性方程組的基本方法對(duì)于非線(xiàn)性方程組以二元方程組為例,其他可以類(lèi)推 ( 11) 的數(shù)值解求法,跟一元非線(xiàn)性方程的切線(xiàn)法牛頓法雷同,也是把非線(xiàn)性函數(shù)線(xiàn)性化,近似替代原方程得出數(shù)值解,所以也叫作牛頓迭代法。假設(shè)方程組11的初始估計(jì)值為x0,y0,可以把方程組

30、11中的兩個(gè)函數(shù)f1(x,y)和f2(x,y)在x0,y0處用二元泰勒級(jí)數(shù)展開(kāi),只取線(xiàn)性部分,移項(xiàng)得出: (12)假設(shè)系數(shù)矩陣行列式,則方程組12的解為:,方程組11中的兩個(gè)函數(shù)f1(x,y)和f2(x,y)在(x1,y1)處,再用二元泰勒級(jí)數(shù)展開(kāi),只取線(xiàn)性部分, 如此繼續(xù)替代下去,直到方程組的根到達(dá)所要求的精度,就完成了方程組的求解。求解方程組11還有許多其他方法,如“最速下降法”,它是利用方程組11構(gòu)成所謂模函數(shù),通過(guò)求模函數(shù)極小值的方法得到方程組的數(shù)值解,諸如此類(lèi)在此不再一一列舉。三、求方程組數(shù)值解的指令fsolve是用最小二乘法求解非線(xiàn)性方程組 F (X 0 的指令,變量X可以是向量或

31、矩陣,方程組可以由代數(shù)方程或者超越方程構(gòu)成。它的使用格式為:fsolve ( 'fun' , X0 , OPTIONS ) 參數(shù) fun 是編輯并存盤(pán)的M函數(shù)文件的名稱(chēng),可以用代替單引號(hào)對(duì)它進(jìn)行標(biāo)識(shí)。 M函數(shù)文件主要內(nèi)容是方程 F ( X ) = 0 中的函數(shù) F (X) ,即方程左邊的函數(shù)。 參數(shù)X0是向量或矩陣,為探索方程組解的起始點(diǎn)。求解將從X0出發(fā),逐漸趨向,最終得到滿(mǎn)足精度要求、最接近X0的近似根X* : F ( X* 0 。由于X0是向量或矩陣,無(wú)法用畫(huà)圖方法進(jìn)行估計(jì),實(shí)際問(wèn)題中常常是根據(jù)專(zhuān)業(yè)知識(shí)、物理意義等進(jìn)行估計(jì)。 該指令輸出一個(gè)與X0同維的向量或矩陣,為方程組

32、的近似數(shù)值解。 參數(shù)OPTIONS為設(shè)置選項(xiàng),用它可以設(shè)置過(guò)程顯示與否、誤差、算法 ,具體內(nèi)容可用 help查閱。通??梢允÷栽擁?xiàng)內(nèi)容。例 求方程組在x01 ,y01,z01附近的數(shù)值解。解l在文本編輯調(diào)試窗中編輯 M函數(shù)文件。首先將方程組變換成 F ( X ) = 0 的形式, x, y, z看成向量X的三個(gè)分量。function ms=li4_7(X)ms(1) = X(1).2 - 10* X(1) + X(2).2 + X(3) +7;ms(2) = X(1).*X(2).2 - 2* X(3);ms(3) = X(1).2 + X(2).2 - 3* X(2) + X(3).2; 這里,X (lx , X (2y , X (3z,輸出參量 ms 也有三個(gè)分量用“l(fā)i4_7”為M函數(shù)文件名存盤(pán)。(2在指令窗中鍵入:fsolve (' li4_7',1 1 1)假設(shè)鍵入:x = fsolve (li4_7,1 1 1, optimset('Display', 'iter')則得出求解過(guò)程。該方程也可以用 MA

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論