




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
fsolve函数解方程 X,FVAL,EXITFLAG,OUTPUT,JACOB=FSOLVE(FUN,X0,.) returns the Jacobian of FUN at X. Examples FUN can be specified using : x = fsolve(myfun,2 3 4,optimset(Display,iter) where myfun is a MATLAB function such as: function F = myfun(x) F = sin(x); FUN can also be an anonymous function: x = fsolve(x) sin(3*x),1 4,optimset(Display,off) If FUN is parameterized, you can use anonymous functions to capture the problem-dependent parameters. Suppose you want to solve the system of nonlinear equations given in the function myfun, which is parameterized by its second argument c. Here myfun is an M-file function such as function 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, first assign the value to c. Then create a one-argument anonymous function that captures that value of c and calls myfun with two arguments. Finally, pass this anonymous function to FSOLVE: c = -1; % define parameter first x = fsolve(x) myfun(x,c),-5;-5) 以matlab R2008a版本为例,各版本出错提示可能有所不同。有不对之处,欢迎指正。1.solve 和 fsolve的基本含义matlab给出的关于solve 和 fsolve的基本描述为:solveSymbolic solution of algebraic equationsfsolveSolve system of nonlinear equations可见solve用于解决代数方程(组)的符号(解析)解,而fsolve用来解决非线性方程(组)的数值解。【在matlab里面solve命令主要是用来求解代数方程(即多项式)的解,但是也不是说其它方程一个也不能解,不过求解非代数方程的能力相当有限,通常只能给出很特殊的实数解。从计算机的编程实现角度讲,如今的任何算法都无法准确的给出任意非代数方程的所有解,但是我们有很多成熟的算法来实现求解在某点附近的解。matlab也不例外,它也只能给出任意非代数方程在某点附近的解,函数有两个:fzero和fsolve,具体用法请用help或doc命令查询吧。如果还是不行,你还可以将问题转化为非线性最优化问题,求解非线性最优化问题的最优解,可以用的命令有:fminbnd, fminsearch, fmincon等等。】(引自:/s/blog_4c4af5c101008w9f.html,作者:ggbondg)下面举几个例子:1 例1: solve(a*x-1)2 ans =3 1/a4 例2: solve(exp(x)+sin(x)-2)5 ans =6 .44867191635127271149118657202662注:对于solve结果的显示,有时看起来比较长,可用vpa进行精度控制,如: vpa(solve(exp(x)+sin(x)-2),3)ans =.4497 例3: fsolve(x)exp(x)+sin(x)-2,0)8 Optimization terminated: first-order optimality is less than options.TolFun.9 ans =10 0.44872.关于solve 和 fsolve求解方程组时的书写规则对于solve,方程可以直接书写,不需要运算符”.”;对于fsolve,当未知量与未知量有乘除操作或未知量有开方、幂等操作时运算符”.”可写也可不写(记得好像必须写,试了试,发现不写也行)。下面举几个例子: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.14 例5: solve(x+y2-1,x2-y-3)15 ans =16 x: 4x1 sym17 y: 4x1 sym18 例6:function shiyan19 clc20 clear21 x0=0,0;22 fsolve(mf,x0)2324 function F=mf(x)25 F=x(1)+x(2)2-1;26 x(1)2-x(2)-3;27 %Result%28 Optimizer appears to be converging to a minimum that is not a root:29 Sum of squares of the function values is sqrt(options.TolFun).30 Try again with a new starting point.31 ans =32 1.6268 -0.1537例7:把例6中的mf函数,换成如下再试试。function F=mf(x)F=x(1)+x(2).2-1;x(1).2-x(2)-3;例8:把例6的初值x0设为x0=-2,2;运行结果为:Optimization terminated: first-order optimality is less than options.TolFun.ans =-2.18751.7854可见,用fsolve解非线性方程组,比较依赖处置的选择,因此建议用fsolve解方程时,能大致了解问题的求解区间,以便选择合适的初值。3.关于solve 和 fsolve求解时,参数为多数值的求解问题来源:/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;解方程组: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。(见:/forum/thread-83102-1-1.html)解决方法:这是非线性方程组,不过我们可以先用solve试试:33 例9:问题如前所述。考虑用solve是否能解。34 clear35 clc36 k=(5.0e+4):(1e+3):(6e+4);37 h=1.6e-6;38 n1=2.2899;39 n0=1.5040;40 n2=1.000;41 for i=1:length(k)42 y=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 p1*,num2str(h),-,num2str(pi),-atan(p0/p1)-atan(p2/p1)=0);46 end%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);Warning: Warning, solutions may have been lostWarning: Explicit solution could not be found. whos yName Size Bytes Class Attributesy 0x0 64 sym由此说明利用solve并不能解决这个复杂的非线性方程组,考虑数值解法。47 例10:问题如例9,考虑fsolve求解问题。48 % 主程序49 clear50 clc51 global k h n1 n2 n052 k1=(5.0e+4):(1e+3):(6e+4);53 h=1.6e-6;54 n1=2.2899;55 n0=1.5040;56 n2=1.000;57 x0=0 1 0 0;58 b=zeros(1,length(k1);59 for i=1:length(k1)60 k=k1(i);61 y=fsolve(myfun,x0);62 b(i)=y(4);63 end64 plot(k1,b);65 % 子程序66 function F=myfun(x)67 global k h n1 n2 n068 % p0 p1 p2 b-x(1) x(2) x(3) x(4)69 F=sqrt(k2*n12-x(4)2)-x(2);70 sqrt(x(4)2-k2*n22)-x(3);71 sqrt(x(4)2-k2*n02)-x(1);72 x(2)*h-pi-atan(x(1)./x(2)-atan(x(3)./x(2);73 % Result%74 y=fsolve(myfun,x0);75 Optimizer appears to be converging to a minimum that is not a root:76 Sum of squares of the function values is sqrt(options.TolFun).77 Try again with a new starting point.这说明所选初值并不合理。78 例11 例10还可以这样改写:79 % 主程序80 clear81 clc82 % global k h n1 n2 n083 k1=(5.0e+4):(1e+3):(6e+4);84 h=1.6e-6;85 n1=2.2899;86 n0=1.5040;87 n2=1.000;88 x0=0 1 0 0;89 b=zeros(1,length(k1);90 for 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);94 end95 plot(k1,b);96 % 子程序97 function F=myfun(x,k, h, n1, n2, n0)98 % global k h n1 n2 n099 % p0 p1 p2 b-x(1) x(2) x(3) x(4)100 F=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参见/forum/viewthread.php?tid=82658&page=1#pid426339此贴,看看大侠ChaChing,dingd(1stOpt解法)等的解法。注:利用fsolve解数值解,初值的选择十分重要。而1stOpt则对初值的选择要求比较低,不妨一试。关于这一点,请参考如下文章:作者:dingd非线性方程组-1stOpt与fsolve的比较:/forum/thread-48384-1-5.htmlsolve,fsolve的用法 2007-06-03 23:40:42| 分类: tech | 标签:tech:技术类 |字号大中小 订阅solve是方程,方程组的符号解法;fsolve是数值的优化方法;两种方法各有所长吧。第一种,幸运的话,可以得到解析解,就是那种符号解;但是复杂的方程,往往是得不到的。第二种的话,不出差错的话,总是可以得到一些可用的数值解;可不要忽略了第二种哦;举例如下,syms y;y=solve(5-y2)0.5*(10-y2)0.5*besselj(1,(10-y2)0.5)*besselj(0,(5-y2)0.5)+y2*besselj(0,(10-y2)0.5)*besselj(1,(5-y2)0.5)是得不到隐式解的;第二种定义函数如下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)都是可以的;结果如下f = -0.0136 + 0.1593if = -0.0136 + 0.1593if = 0.0235 +
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年山东省齐河县一中高三生物第一学期期末经典模拟试题
- 国家开放大学《学前儿童卫生与保健》期末考试题库及答案-字母
- 期中说课稿-2025-2026学年中职基础课-基础模块3-教科版(2021)-(英语)-52
- 智能家居互联互通标准下的智能家居行业市场细分领域分析报告
- 为老年人打造一个友好的养老环境的协议
- 供热事故责任协议
- 2025年质量改进方法考试题及答案
- 第13课 口字头说课稿-2025-2026学年小学书法人美版五年级下册-人美版
- 福建省莆田市2025-2026学年生物高三第一学期期末学业水平测试试题
- 2025年小鹏安全生产培训测试题及答案
- T-CITSA 57-2025 高速公路基础设施主数据标准
- 质量风险预警系统-洞察及研究
- 住院病人防止走失课件
- 2025年临床助理医师考试试题及答案
- 2025年南康面试题目及答案
- 2025年全国学宪法讲宪法知识竞赛考试题库(含答案)
- 定增基金管理办法
- 汽车标定工程师培训课件
- 速叠杯教学课件
- GB/T 45767-2025氮化硅陶瓷基片
- 2025年第十届“学宪法、讲宪法”活动知识竞赛题库及答案
评论
0/150
提交评论