fsolve傳遞未知參量解方程_第1頁(yè)
fsolve傳遞未知參量解方程_第2頁(yè)
fsolve傳遞未知參量解方程_第3頁(yè)
fsolve傳遞未知參量解方程_第4頁(yè)
fsolve傳遞未知參量解方程_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

fsolve函數(shù)解方程[X,FVAL,EXITFLAG,OUTPUT,JACOB]=FSOLVE(FUN,XO,..JreturnstheJacobianofFUNatX.ExamplesFUNcanbespecifiedusing@:x=fsolve(@myfun,[234],optimset('Display','iter'))wheremyfunisaMATLABfunctionsuchas:functionF=myfun(x)F=sin(x);FUNcanalsobeananonymousfunction:x=fsolve(@(x)sin(3*x),[14],optimset('Display','off))IfFUNisparameterized,youcanuseanonymousfunctionstocapturetheproblem-dependentparameters.Supposeyouwanttosolvethesystemofnonlinearequationsgiveninthefunctionmyfun,whichisparameterizedbyitssecondargumentc.HeremyfunisanM-filefunctionsuchasfunctionF=myfun(x,c)F=[2*x(1)-x(2)-exp(c*x(1))-x(1)+2*x(2)-exp(c*x(2))];Tosolvethesystemofequationsforaspecificvalueofc,firstassignthevaluetoc.Thencreateaone-argumentanonymousfunctionthatcapturesthatvalueofcandcallsmyfunwithtwoarguments.Finally,passthisanonymousfunctiontoFSOLVE:c=-1;%defineparameterfirstx=fsolve(@(x)myfun(x,c),[-5;-5])也可不寫也可不寫(記得好像必須寫,試了試,發(fā)現(xiàn)不寫也行 )。下面舉幾個(gè)例子:以matlabR2008a以matlabR2008a版本為例,各版本出錯(cuò)提示可能有所不同。有不對(duì)之處,歡迎指正。 |l.solve和fsolve 的基本含義matlab給出的關(guān)于solve和fsolve 的基本描述為:solveSymbolicsolutionofalgebraicequationsfsolveSolvesystemofnonlinearequations可見solve用于解決代數(shù)方程(組)的符號(hào)(解析)解,而fsolve用來解決非線性方程(組)的數(shù)值解?!驹趍atlab里面solve命令主要是用來求解代數(shù)方程 (即多項(xiàng)式)的解,但是也不是說其它方程一個(gè)也不能解,不過求解非代數(shù)方程的能力相當(dāng)有限,通常只能給出很特殊的實(shí)數(shù)解。從計(jì)算機(jī)的編程實(shí)現(xiàn)角度講,如今的任何算法都無(wú)法準(zhǔn)確的給出任意非代數(shù)方程的所有解,但是我們有很多成熟的算法來實(shí)現(xiàn)求解在某點(diǎn)附近的解。 matlab也不例外,它也只能給出任意非代數(shù)方程在某點(diǎn)附近的解,函數(shù)有兩個(gè): fzero和fsolve,具體用法請(qǐng)用help或doc命令查詢吧。如果還是不行,你還可以將問題轉(zhuǎn)化為非線性最優(yōu)化問題, 求解非線性最優(yōu)化問題的最優(yōu)解,可以用的命令有:fminbnd,fminsearch,fmincon等等?!?引自:/s/blog_4c4af5c101008w9f.html ,作者:ggbondg)下面舉幾個(gè)例子:例1:>>solve('a*x-1')ans=5 1/a4例2:>>solve('exp(x)+sin(x)-2')、ans=.44867191635127271149118657202662注:對(duì)于solve結(jié)果的顯示,有時(shí)看起來比較長(zhǎng),可用 vpa進(jìn)行精度控制,如:>>vpa(solve('exp(x)+sin(x)-2'),3).449例3:>>fsolve(@(x)exp(x)+sin(x)-2,0)QOptimizationterminated: first-order optimalityisless thanoptions.TolFun.-ans=.1- 0.4487關(guān)于solve和fsolve 求解方程組時(shí)的書寫規(guī)則對(duì)于solve,方程可以直接書寫,不需要運(yùn)算符” .”;口對(duì)于fsolve,當(dāng)未知量與未知量有乘除操作或未知量有開方、幕等操作時(shí)運(yùn)算符” .”可寫||例4:>>solve('x+y.A2-1','x.A2-y-3')I???Errorusing==>solveat77I?:'x+y.A2-1'isnotavalidexpressionorequation.i4例5:>>solve('x+yA2-1','xA2-y-3')I::ans=:令 x:[4x1sym],1'■■■ y:[4x1sym].I-".例6:functionshiyanI;;clcclear二x0=[0,0];二fsolve(@mf,xO)23二:functionF=mf(x)二F=[x(1)+x(2)A2-1;x(1)A2-x(2)-3];二%%%%%Result%%%%%%總Optimizerappearstobeconvergingtoaminimumthatisnotaroot:I:Sumofsquaresofthefunctionvaluesis>sqrt(options.TolFun).j?Tryagainwithanewstartingpoint.Mans=衛(wèi)1.6268-0.1537例7:把例6中的mf函數(shù),換成如下再試試。functionF=mf(x)F=[x(1)+x(2).A2-1;x(1).A2-x(2)-3];例8:把例6的初值x0設(shè)為x0=[-2,2];運(yùn)行結(jié)果為:Optimizationterminated:first-orderoptimalityislessthanoptions.TolFun.ans=-2.18751.7854可見,用fsolve可見,用fsolve解非線性方程組, 比較依賴處置的選擇, 因此建議用fsolve解方程時(shí),能大致了解問題的求解區(qū)間,以便選擇合適的初值。關(guān)于solve和fsolve 求解時(shí),參數(shù)為多數(shù)值的求解問題來源:http://www.chi/forum/viewthread.php?tid=82658&page=1#pid426339類似問題描述:k=(5.0e+4):(1e+3):(6e+4) ;h=1.6e-6;n1=2.2899;n0=1.5040;n2=1.000;解方程組:TOC\o"1-5"\h\zp1=sqrt(k.A2.*門1.人2七.人2 ;p2=sqrt(b.A2-k.A2.*n292) ;p0=sqrt(b.A2-k.A2.*n092) |p1*h-pi-atan(p0./p1)-atan(p2./p1)=0 。 ( 見:http://www.chi/forum/thread-83102-1-1.html )解決方法:這是非線性方程組,不過我們可以先用 solve試試:::;?:;例9:問題如前所述??紤]用 solve是否能解。込clear??clc.<■>k=(5.0e+4):(1e+3):(6e+4);37h=1.6e-6;丁n1=2.2899;gn0=1.5040;n2=1.000;J.lfori=1:length(k)工.y=solve(['p1=sqrt(',num2str(k(i)),'A2*',num2str(門1),'人2七人2)'],...屯 ['p2=sqrt(bA2-',num2str(k(i)),'A2*',num2str(門2)','人2)'],...農(nóng) ['p0=sqrt(bA2-',num2str(k(i)),'A2.*',num2str(門0),'人2)'],...45 ['p1*',num2str(h),'-',num2str(pi),'-atan(p0/p1)_atan(p2/p1)=0']);-爲(wèi)end%%%%%Result%%%%%>Insolveat140Inshiyanat9y=solve(['p1=sqrt(',num2str(k(i)),'A2*',num2str(門1),'人2七人2)'],...['p2=sqrt(bA2-',num2str(k(i)),'A2*',num2str(門2)','人2)'],...['p0=sqrt(bA2-',num2str(k(i)),'A2.*',num2str(n0),'A2)'],...['p1*',num2str(h),'-',num2str(pi),'-atan(p0/p1)atan(p2/p1)=0']);Warning:Warning,solutionsmayhavebeenlostWarning:Explicitsolutioncouldnotbefound.>>whosyNameSizeBytesClassAttributesy0x0 64sym由此說明利用solve并不能解決這個(gè)復(fù)雜的非線性方程組,考慮數(shù)值解法。:例10:問題如例9,考慮fsolve求解問題。人%主程序clearClC-,|globalkhn1n2n0匸k仁(5.0e+4):(1e+3):(6e+4);Sh=1.6e-6;<n1=2.2899;、、n0=1.5040;-n2=1.000;、x0=[0100];.認(rèn)b=zeros(1,length(kl));fori=1:length(k1)"i. k=k1(i);;.l y=fsolve(@myfun,x0);邈 b(i)=y(4);bendplot(k1,b);、%子程序2functionF=myfun(x)瓦globalkhn1n2n0■'<%p0plp2b——x(1)x(2)x(3)x(4)二F=[sqrt(kA2*n"2-x(4F2)-x(2);i. sqrt(x(4)A2-kA2*n2A2)-x(3);■/I sqrt(x(4)A2-kA2*n0A2)-x(1);H x(2)*h-pi-atan(x(1)./x(2))-atan(x(3)./x(2))];5%%%%%Result%%%%%%%%%我y=fsolve(@myfun,x0);:'Optimizerappearstobeconvergingtoaminimumthatisnotaroot:Sumofsquaresofthefunctionvaluesis>sqrt(options.TolFun).Tryagainwithanewstartingpoint.這說明所選初值并不合理。<例11例10還可以這樣改寫::.%主程序clear自clc%globalkhn1n2n0廠k1=(5.0e+4):(1e+3):(6e+4);“h=1.6e-6;守n1=2.2899;、n0=1.5040;亍,n2=1.000;箱x0=[0100];為.b=zeros(1,length(k1));;:-:fori=1:length(k1)91 k=k1(i);魚 y=fsolve(@(x)myfun(x,k, h,n1, n2, n0),x0);小 b(i)=y(4);Uend:「plot(k1,b);匚%子程序T;functionF=myfun(x,k,h,n1,n2,n0)冷%globalkhn1n2n0“%p0p1p2b——x(1)x(2)x(3)x(4).11F=[sqrt(kA2*n1A2-x(4)A2)-x(2);」Hsqrt(x(4)A2-kA2*n2A2)-x(3);.1-■sqrt(x(4)A2-kA2*n0A2)-x(1);.1“x(2)*h_pi_atan(x(1)./x(2))_atan(x(3)./x(2))];例12參見http://www.chi/forum/viewthread.php?tid=82658&page=1#pid426339此貼,看看大俠ChaChing,dingd(1stOpt解法)等的解法。注:利用fsolve解數(shù)值解,初值的選擇十分重要。而1stOpt則對(duì)初值的選擇要求比較低,不妨一試。關(guān)于這一點(diǎn),請(qǐng)參考如下文章:作者:dingd非線性方程組-1stOpt與fsolve的比較:http://www.chi/forum/thread-48384-1-5.htmlsolve,fsolve的用法2007-06-0323:40:42|分類:tech|標(biāo)簽:tech:技術(shù)類 |字號(hào)大中小訂閱solve是方程,方程組的符號(hào)解法;fsolve是數(shù)值的優(yōu)化方法;兩種方法各有所長(zhǎng)吧。第一種,幸運(yùn)的話,可以得到解析解,就是那種符號(hào)解;但是復(fù)雜的方程,往往是得不到的。第二種的話,不出差錯(cuò)的話,總是可以得到一些可用的數(shù)值解;可不要忽略了第二種哦;舉例如下,symsy;y=solveC(5-yA2)A0.5*(10-yA2)A0.5*besselj(1,(10-yA2)A0.5)*besselj(0,(5-yA2)A0.5)+yA2*besselj(0,(10-yA2)A0.5)*besselj(1,(5-yA2)A0.5)')是得不到隱式解的;第二種定義函數(shù)如下functionf=mytest(x)f=(5-xA2)A0.5*(10-xA2)A0.5*besselj(1,(10-xA2)A0.5)*besselj(0,(5-xA2)A0.5)+xA2*besselj(0,(10-xA2)A0.5)*besselj(1,(5-xA2)A0.5)使用x=fsolve(mytest,1+1i)或者x=fsolve(@mytest,1+1i)f=f=都是可以的;結(jié)果如下

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論