

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 fsolve 函數(shù)解方程X,FV AL,EXITFLAG,OUTPUT,JACOB=FSOLVE(FUN,X0,.) returns theJacobian of FUN at X.ExamplesFUN can be specified using :x = fsolve(myfun,2 3 4,optimset(Display,iter)where myfun is a MA TLAB function such as:function F = myfun(x)F = sin(x);FUN can also be an anonymous function:x = fsolve(x) s
2、in(3*x),1 4,optimset(Display,off)If FUN is parameterized, you can use anonymous functions to capturetheproblem-dependent parameters. Suppose you want to solve the systemofnonlinear equations given in the function myfun, which isparameterizedby its second argument c. Here myfun is an M-file function
3、such asfunction F = myfun(x,c) F = 2*x(1) - x(2) - exp(c*x(1)-x(1) + 2*x(2) - exp(c*x(2);To solve the system of equations for a specific value of c, firstassign thevalue to c. Then create a one-argument anonymous function thatcapturesthat value of c and calls myfun with two arguments. Finally, passt
4、his anonymous function to FSOLVE:c = -1; % define parameter firstx = fsolve(x) myfun(x,c),-5;-5)以 matlab R2008a 版本為例,各版本出錯提示可能有所不同。有不對之處,歡迎指正。1.solve 和 fsolve 的基本含義matlab 給出的關(guān)于 solve 和 fsolve 的基本描述為:solveSymbolic solution of algebraic equationsfsolveSolve system of nonlinear equations可見 solve 用于解決代數(shù)
5、方程(組)的符號(解析)解,而 fsolve 用來解決非線性方程(組)的數(shù)值解。 【在 matlab 里面 solve 命令主要是用來求解代數(shù)方程(即多項式)的解,但是也不是說其它方程一個也不能解,不過求解非代數(shù)方程的能力相當(dāng)有限,通常只能給出很特殊的實數(shù)解。從計算機的編程實現(xiàn)角度講,如今的任何算法都無法準(zhǔn)確的給出任意非代數(shù)方程的所有解,但是我們有很多成熟的算法來實現(xiàn)求解在某點附近的解。matlab 也不例外,它也只能給出任意非代數(shù)方程在某點附近的解,函數(shù)有兩個:fzero 和 fsolve,具體用法請用 help 或 doc 命令查詢吧。如果還是不行,你還可以將問題轉(zhuǎn)化為非線性最優(yōu)化問題,求
6、解非線性最優(yōu)化問題的最優(yōu)解,可以用的命令有:fminbnd, fminsearch, fmincon 等等?!?引自: ,作者:ggbondg)下面舉幾個例子:1 例 1: solve(a*x-1)2ans =31/a4 例 2: solve(exp(x)+sin(x)-2)5ans =6.491注:對于 solve 結(jié)果的顯示,有時看起來比較長,可用 vpa 進(jìn)行精度控制,如: vpa(solve(exp(x)+sin(x)-2),3)ans =.4497 例 3: fsolve(x)exp(x)+sin(x)-2,0) 8Optimization terminated: first-ord
7、er optimality is less thanoptions.TolFun.9ans =10 0.44872.關(guān)于 solve 和 fsolve 求解方程組時的書寫規(guī)則對于 solve,方程可以直接書寫,不需要運算符”.”;對于 fsolve,當(dāng)未知量與未知量有乘除操作或未知量有開方、冪等操作時運算符”.”可寫也可不寫(記得好像必須寫,試了試,發(fā)現(xiàn)不寫也行)。下面舉幾個例子:11 例 4: solve(x+y.2-1,x.2-y-3)12? Error using = solve at 7713 x+y.2-1 is not a valid expression or equation.
8、14 例 5: solve(x+y2-1,x2-y-3)15ans =16 x: 4x1 sym17 y: 4x1 sym18 例 6:function shiyan 19clc20clear21x0=0,0;22fsolve(mf,x0)2324function F=mf(x)25F=x(1)+x(2)2-1;26 x(1)2-x(2)-3;27%Result%28Optimizer appears to be converging to a minimum that is not aroot: 29Sum of squares of the function values is sqrt(
9、options.TolFun).30Try again with a new starting point.31ans =32 1.6268 -0.1537例 7:把例 6 中的 mf 函數(shù),換成如下再試試。function F=mf(x)F=x(1)+x(2).2-1; x(1).2-x(2)-3;例 8:把例 6 的初值 x0 設(shè)為 x0=-2,2;運行結(jié)果為:Optimization terminated: first-order optimality is less thanoptions.TolFun. ans =-2.18751.7854可見,用 fsolve 解非線性方程組,比較
10、依賴處置的選擇,因此建議用 fsolve 解方程時,能大致了解問題的求解區(qū)間,以便選擇合適的初值。3.關(guān)于 solve 和 fsolve 求解時,參數(shù)為多數(shù)值的求解問題來源:#pid426339類似問題描述:k=(5.0e+4):(1e+3):(6e+4);h=1.6e-6;n1=2.2899;n0=1.5040;n2=1.000;解方程組:p1=sqrt(k.2.*n1.2-b.2;p2=sqrt(b.2-k.2.*n2.2);p0=sqrt(b.2-k.2.*n0.2); p1*h-pi-atan(p0./p1)-atan(p2./p1)=0。(見: )解決方法:這是非線性方程組,不過我們
11、可以先用 solve 試試:33 例 9:問題如前所述。考慮用 solve 是否能解。34clear35clc 36k=(5.0e+4):(1e+3):(6e+4);37h=1.6e-6;38n1=2.2899;39n0=1.5040;40n2=1.000;41for i=1:length(k)42y=solve(p1=sqrt(,num2str(k(i),2*,num2str(n1),2-b2),.43 p2=sqrt(b2-,num2str(k(i),2*,num2str(n2),2),.44 p0=sqrt(b2-,num2str(k(i),2.*,num2str(n0),2),.45
12、p1*,num2str(h),-,num2str(pi),-atan(p0/p1)-atan(p2/p1)=0);46end%Result% In solve at 140In shiyan at 9y=solve(p1=sqrt(,num2str(k(i),2*,num2str(n1),2-b2),.p2=sqrt(b2-,num2str(k(i),2*,num2str(n2),2),.p0=sqrt(b2-,num2str(k(i),2.*,num2str(n0),2),. p1*,num2str(h),-,num2str(pi),-atan(p0/p1)-atan(p2/p1)=0);W
13、arning: Warning, solutions may have been lostWarning: Explicit solution could not be found. whos yName Size Bytes Class Attributesy 0 x0 64 sym由此說明利用 solve 并不能解決這個復(fù)雜的非線性方程組,考慮數(shù)值解法。47 例 10:問題如例 9,考慮 fsolve 求解問題。48% 主程序49clear50clc51global k h n1 n2 n052k1=(5.0e+4):(1e+3):(6e+4);53h=1.6e-6;54n1=2.2899
14、;55n0=1.5040;56n2=1.000; 57x0=0 1 0 0;58b=zeros(1,length(k1);59for i=1:length(k1)60 k=k1(i);61 y=fsolve(myfun,x0);62 b(i)=y(4);63end64plot(k1,b);65% 子程序66function F=myfun(x)67global k h n1 n2 n068% p0 p1 p2 b-x(1) x(2) x(3) x(4)69F=sqrt(k2*n12-x(4)2)-x(2);70 sqrt(x(4)2-k2*n22)-x(3);71 sqrt(x(4)2-k2*
15、n02)-x(1);72 x(2)*h-pi-atan(x(1)./x(2)-atan(x(3)./x(2);73% Result% 74y=fsolve(myfun,x0);75Optimizer appears to be converging to a minimum that is not aroot: 76Sum of squares of the function values is sqrt(options.TolFun).77Try again with a new starting point.這說明所選初值并不合理。78例11 例 10 還可以這樣改寫:79% 主程序80c
16、lear81clc82% global k h n1 n2 n083k1=(5.0e+4):(1e+3):(6e+4);84h=1.6e-6;85n1=2.2899;86n0=1.5040;87n2=1.000;88x0=0 1 0 0;89b=zeros(1,length(k1); 90for i=1:length(k1)91 k=k1(i);92 y=fsolve(x)myfun(x,k, h, n1, n2, n0),x0);93 b(i)=y(4);94end95plot(k1,b);96% 子程序97function F=myfun(x,k, h, n1, n2, n0)98% gl
17、obal k h n1 n2 n099% p0 p1 p2 b-x(1) x(2) x(3) x(4)100F=sqrt(k2*n12-x(4)2)-x(2);101 sqrt(x(4)2-k2*n22)-x(3);102 sqrt(x(4)2-k2*n02)-x(1);103 x(2)*h-pi-atan(x(1)./x(2)-atan(x(3)./x(2);例12參見#pid426339 此貼,看看大俠 ChaChing,dingd(1stOpt 解法)等的解法。 注:利用 fsolve 解數(shù)值解,初值的選擇十分重要。而 1stOpt 則對初值的選擇要求比較低,不妨一試。關(guān)于這一點,請參考
18、如下文章:作者:dingd 非線性方程組-1stOpt 與 fsolve 的比較:solve,fsolve 的用法2007-06-03 23:40:42| 分類:tech | 標(biāo)簽:tech:技術(shù)類|字號大中小訂閱solve 是方程,方程組的符號解法;fsolve 是數(shù)值的優(yōu)化方法;兩種方法各有所長吧。第一種,幸運的話,可以得到解析解,就是那種符號解;但是復(fù)雜的方程,往往是得不到的。第二種的話,不出差錯的話,總是可以得到一些可用的數(shù)值解;可不要忽略了第二種哦;舉例如下,syms y;y=solve(5-y2)0.5*(10-y2)0.5*besselj(1,(10-y2)0.5)*bessel
19、j(0,(5-y2)0.5)+y2*bes selj(0,(10-y2)0.5)*besselj(1,(5-y2)0.5)是得不到隱式解的;第二種 定義函數(shù)如下function f=mytest(x)f=(5-x2)0.5*(10-x2)0.5*besselj(1,(10-x2)0.5)*besselj(0,(5-x2)0.5)+x2*besselj(0,( 10-x2)0.5)*besselj(1,(5-x2)0.5)使用x=fsolve(mytest,1+1i)或者x=fsolve(mytest,1+1i)都是可以的;結(jié)果如下f =-0.0136 + 0.1593i f =-0.0136 + 0.1593if =0.0235 + 0.0353if =0.0235 + 0.0353
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 代售電纜合同范例
- ktv合租合同范例
- 辦公機械設(shè)備采購合同范例
- 內(nèi)培老師合同范例
- 業(yè)主欄桿安裝合同范例
- 內(nèi)墻抹灰工程施工合同范例
- 宏康體內(nèi)平衡養(yǎng)加盟代理合同模板
- 2024年中信重工招聘筆試真題
- 機器設(shè)備買賣合同模板
- 二零二五年度解除一手房買賣合同違約責(zé)任承擔(dān)協(xié)議
- 2025屆福建省莆田高中畢業(yè)班第二次質(zhì)量檢測英語試題(原卷版+解析版)
- 2025年安徽中醫(yī)藥高等專科學(xué)校單招職業(yè)適應(yīng)性測試題庫有答案
- 北京大學(xué)DeepSeek系列-DeepSeek與AIGC應(yīng)用
- 2025年無錫職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性測試題庫完整版
- 2025年皖西衛(wèi)生職業(yè)學(xué)院單招職業(yè)技能測試題庫及答案1套
- 《馬云創(chuàng)業(yè)經(jīng)歷》課件
- 常用量具使用方法課件
- 2024年05月安徽農(nóng)商銀行系統(tǒng)社會招考計算機法律專業(yè)員工人員筆試歷年參考題庫附帶答案詳解
- 騰訊云人工智能工程師認(rèn)證考試題(附答案)
- 專題03 透鏡及其應(yīng)用(5大模塊知識清單+5個易混易錯+6種方法技巧+典例真題解析)
- 班級管理案例與應(yīng)用知到智慧樹章節(jié)測試課后答案2024年秋哈爾濱師范大學(xué)
評論
0/150
提交評論