版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
fsolve函数解方程[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])也可不写也可不写(记得好像必须写,试了试,发现不写也行 )。下面举几个例子:以matlabR2008a以matlabR2008a版本为例,各版本出错提示可能有所不同。有不对之处,欢迎指正。 |l.solve和fsolve 的基本含义matlab给出的关于solve和fsolve 的基本描述为:solveSymbolicsolutionofalgebraicequationsfsolveSolvesystemofnonlinearequations可见solve用于解决代数方程(组)的符号(解析)解,而fsolve用来解决非线性方程(组)的数值解。【在matlab里面solve命令主要是用来求解代数方程 (即多项式)的解,但是也不是说其它方程一个也不能解,不过求解非代数方程的能力相当有限,通常只能给出很特殊的实数解。从计算机的编程实现角度讲,如今的任何算法都无法准确的给出任意非代数方程的所有解,但是我们有很多成熟的算法来实现求解在某点附近的解。 matlab也不例外,它也只能给出任意非代数方程在某点附近的解,函数有两个: fzero和fsolve,具体用法请用help或doc命令查询吧。如果还是不行,你还可以将问题转化为非线性最优化问题, 求解非线性最优化问题的最优解,可以用的命令有:fminbnd,fminsearch,fmincon等等。】(引自:/s/blog_4c4af5c101008w9f.html ,作者:ggbondg)下面举几个例子:例1:>>solve('a*x-1')ans=5 1/a4例2:>>solve('exp(x)+sin(x)-2')、ans=.44867191635127271149118657202662注:对于solve结果的显示,有时看起来比较长,可用 vpa进行精度控制,如:>>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关于solve和fsolve 求解方程组时的书写规则对于solve,方程可以直接书写,不需要运算符” .”;口对于fsolve,当未知量与未知量有乘除操作或未知量有开方、幕等操作时运算符” .”可写||例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=卫1.6268-0.1537例7:把例6中的mf函数,换成如下再试试。functionF=mf(x)F=[x(1)+x(2).A2-1;x(1).A2-x(2)-3];例8:把例6的初值x0设为x0=[-2,2];运行结果为:Optimizationterminated:first-orderoptimalityislessthanoptions.TolFun.ans=-2.18751.7854可见,用fsolve可见,用fsolve解非线性方程组, 比较依赖处置的选择, 因此建议用fsolve解方程时,能大致了解问题的求解区间,以便选择合适的初值。关于solve和fsolve 求解时,参数为多数值的求解问题来源: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)'],...农 ['p0=sqrt(bA2-',num2str(k(i)),'A2.*',num2str(门0),'人2)'],...45 ['p1*',num2str(h),'-',num2str(pi),'-atan(p0/p1)_atan(p2/p1)=0']);-爲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并不能解决这个复杂的非线性方程组,考虑数值解法。:例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];.认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解数值解,初值的选择十分重要。而1stOpt则对初值的选择要求比较低,不妨一试。关于这一点,请参考如下文章:作者:dingd非线性方程组-1stOpt与fsolve的比较:http://www.chi/forum/thread-48384-1-5.htmlsolve,fsolve的用法2007-06-0323:40:42|分类:tech|标签:tech:技术类 |字号大中小订阅solve是方程,方程组的符号解法;fsolve是数值的优化方法;两种方法各有所长吧。第一种,幸运的话,可以得到解析解,就是那种符号解;但是复杂的方程,往往是得不到的。第二种的话,不出差错的话,总是可以得到一些可用的数值解;可不要忽略了第二种哦;举例如下,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)')是得不到隐式解的;第二种定义函数如下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=都是可以的;结果如下
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度共享办公空间使用与经营权转让合同3篇
- 2024年度生物医药研发与许可合同with标的为新药研发及使用权
- 二零二四年度城市园林绿化工程合同with景观设计要求
- 2024年度文化艺术品买卖合同标的保密条款
- 2024版商标许可使用合同许可商标范围与使用期限2篇
- 2024年度工程设备采购合同with履约反担保条款
- 二零二四年度版权质押合同质权人与质权实现
- 北京农村租房合同范本
- 2024年度电线电缆市场推广合作协议2篇
- 电子售合同范本
- 项目申报书(模板)(高校)
- 三只松鼠客户关系管理
- 起诉赠与合同无效民事起诉状合集3篇
- 2024年山东地区光明电力服务公司第二批招聘高频考题难、易错点模拟试题(共500题)附带答案详解
- 《预防踩踏》课件
- 人教版四年级上下册英语单词默写表(汉译英)
- 小学关工委制度范本
- 学校诊断方案
- 超市员工培训消防安全知识
- 新能源小镇建设方案
- 幻肢痛的综合治疗通用课件
评论
0/150
提交评论