Download presentation
Presentation is loading. Please wait.
1
第六单元 第3课 实验 线性非线性方程及方程组求解
第六单元 第3课 实验 线性非线性方程及方程组求解 1. solve函数的使用 2. fsolve函数的使用
2
1. solve函数的使用 代数方程的求解一直都是数学分析中十分重要的内容。一般代数方程包括线性方程、非线性方程以及超越方程等。对于上述的方程类型的求解,Matlab符号数学工具箱提供了求解命令solve,其调用格式为:g=solve(eq) 求解符号表达式eq=0的代数方程,自变量为默认变量(以通过函数findsym来确定),其中eq可以是符号表达式或不带符号的字符串表达式。
3
(1)g=solve(eq,var)求解符号表达式eq=0的代数方程,自变量为var。返回值g是由方程的所有解构成的列向量.
(2)g=solve(eq1,eq2, …, eqn,var1, var2, …,varn) 求解符号表达式或不带符号的字符串表达式eq1,eq2,…,eqn组成的代数方程组,自变量分别为var1,var2,…,varn。当输出参数的个数和方程组的个数相等的时候,方程组的解将分别赋给每个输出参数,并且按照字母表的顺序进行排列。
4
例23-1 求线性代数方程的解。 >> syms x y z >>f1='x+y+z=10'; >>f2='3*x+2*y+z=14'; >>f3='2*x+3*y-z=1'; >> [x,y,z]=solve(f1,f2,f3) x = 1 y = 2 z = 7
5
例23-2 求解非线性方程组的数值解。 >> syms xy >>[x,y]=solve('x^2-2*x*y+y^2=3','x^2-4*x+3=0'); >> solution=[x,y] solution = [ 1, 1+3^(1/2)] [ 1, 1-3^(1/2)] [ 3, 3+3^(1/2)] [ 3, 3-3^(1/2)]
6
例23-3 求解含有参数的非线性方程组的解。 >>syms a b x y >>f1='a+b+x=y'; >>f2='2*a*x-b*y=-1'; >>f3='(a+b)^2=x+y'; >>f4='a*y+b*x=4'; >>[a,b,x,y]=solve(f1,f2,f3,f4); >>a=double(a),b=double(b),x=double(x),y=double(y)
7
% 将解析解的符号常数形式转换为双精度形式
a = i i b = i i x = i i y = i i
8
例23-4 求解超越方程组的解。 >>syms x y >>S=solve('sin(x+y)-exp(x)=0','x^2-y=2'); >>S S= x: [2x1 sym] y: [2x1 sym] 程序的结果中,并没有显示方程组的解,只是显示方程结果的属性和维数。在本例中,变量x和y都是符号变量,维数都是2x1。
9
若要查看各个变量的具体数值,则输入: >>S.x ans= >>S.y
10
2. fsolve函数的使用 格式:x=fsolve(Fun, x0) 一般求解语句
[x, f, flag, out]=fsolve(Fun, x0,opt, p1, p2,…) 若返回的flag 大于0,则表示求解成功,否则求解出现问题, opt 求解控制参数,结构体数据。 例23-4
11
function q = my2deq(p) q=[p(1)*p(1)+p(2)*p(2)-1; 0.75*p(1)^3- p(2)+0.9]; end >> OPT=optimset; OPT.LargeScale='off'; >> [x,Y,c,d] = fsolve('my2deq',[1; 2],OPT) Optimization terminatedsuccessfully: First-order optimality is less than options.TolFun.
12
x = 0.3570 0.9341 Y = 1.0e-009 * 0.1215 0.0964 初值改变有可能得出另外一组解。故初值的选择对解的影响很大,在某些初值下甚至无法搜索到方程的解。
13
例23-5
14
Optimization terminated:first-order optimality is less than options
Optimization terminated:first-order optimality is less than options.TolFun. x = fval = 1.0e-006 *
Similar presentations