正在加载图片...
MATLAB优化工具箱解非线性方程组 MATLAB优化工具箱解非线性方程 fsolve:●量F(x)=0求 e fsolve(af, x0) 量彩式 需自行编制程序,如对切线法编写名为 newton,m的m文件 Ix, fv, ef, out, jac I -fsolve(@f, xO, opt, Pl, P2, 多项式求根 输入 r=roots(c) 输入多项式的系数c(按降幂排列),输出 op中蛇制数冥(如 MaxFun Evals,Maer等) 输出一与 fzero类似 r为f(x)=0的全部根 ou中场着出' firstorderopt,即最(点)是弹度向量 入f(x)=0的全部根r,输出c为多项 (限上是1,P分量续隐增取最大的良 式的系数(按降幂排列) jac’着出x胤开对度的可比气阵 df= polder(c)输入多项式的系数c(按降幂排列),输出 df为多项式的微分的系数。 滤:Sol函也可求市奇子工具) 求解八x)=0的 newton. m文件 例解x+x2=4,x2-x2=1 function ly, z]-newton(fv, df, xO, n, tol) F(x)= x+xi F(x) x(IxO; y-x0; b-l: k-l: while abs(bAtol"abs(x(k)) x(k+lx(k)-feval(fv, x(k)feval(df, x(k)); F(x2)△x2=-F(x2),x4+=x4+Ax,k=0,1 x(k+l)-x(k); x(k+1); 被录exam0602 Newton.m;0|0000 error(Error: Reached maximum iteration times): exam0602 Fsolve m 2.589286,122500 kek-1; 精确解x=(√5/2,√3/2 3(s8110.1.22545 4(15811,1224745) fv是f(x)的函数句柄,d是f(x)的函数句柄 =(581183122444755819124745 (学学奖 实例1路灯照明 实例1路灯照明 function y=zhaoming(x) 2+(-x)2)h=5,h2=6,=20 y=2+5*x(5^2+x^2)(5/2)3°6°(20-x62+(20-x)2)(5/2 C"(x)= xO=0,10,20 +x2)V2+(x-x x(kizero(zhaoming, xo(k)), enc(k=2*5/(5~2+x(k)2y(3/2H+36/62+(20-x(k)2y(3 0.028489979.3382991419.9766958120 16142434so474 C(x)有3个脏点:(9,10)内的是最小点,0或20附近的是最大点 x=93383是C(x)的最小值点,x=19.9767是C(x)的最大值点5 fsolve: 多变量方程组F(x)=0求解 输出 ---- 与fzero类似, 但: ’out’中还输出’firstorderopt’, 即结果(x点)处梯度向量 的范数(实际上是1-范数,即分量按绝对值取最大的值); ’jac’ 输出x点所对应的雅可比矩阵 输入 ---- 与fzero类似, 但: ’x0’是迭代初值, ’opt’中控制参数更多(如MaxFunEvals, MaxIter等) x= fsolve(@f, x0 ) 最简形式 [x, fv, ef, out, jac ] = fsolve(@f, x0, opt, P1, P2, ... ) 一般形式 注: solve函数也可求解(符号工具箱) MATLAB优化工具箱解非线性方程组 需自行编制程序,如对切线法编写名为 newton.m 的 m 文件 牛顿法 当 f (x) 为多项式时可用 r=roots(c) 输入多项式的系数 c(按降幂排列),输出 r 为 f (x) = 0 的全部根; c=poly(r) 输入 f (x) = 0 的全部根 r,输出 c 为多项 式的系数(按降幂排列); df=polyder(c) 输入多项式的系数 c(按降幂排列),输出 df 为多项式的微分的系数。 多项式求根 MATLAB优化工具箱解非线性方程 function [y,z]=newton(fv,df,x0,n,tol) x(1)=x0; y=x0; b=1; k=1; while abs(b)>tol*abs(x(k)) x(k+1)=x(k)-feval(fv,x(k))/feval(df,x(k)); b=x(k+1)-x(k); y=x(k+1); k=k+1; if(k>n) error('Error: Reached maximum iteration times'); end end k=k-1; fv是f(x)的函数句柄,df是f ’(x)的函数句柄 求解f(x)=0的newton.m文件 Newton.m 4, 1 2 2 2 1 2 2 2 例 解 x1 + x = x − x = ⎥ ⎦ ⎤ ⎢ ⎣ ⎡ − ′ = ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎣ ⎡ − − + − = 1 2 1 2 2 2 2 1 2 2 2 1 , ( ) 2 1 4 ( ) x x x x F x x x x x F x ( ) ( ), k k k F′ x ∆x = −F x xk+1 = xk + ∆xk , k = 0,1,L T x (1,1) 0 取 = k xk 0 (1.000000, 1.000000) 1 (1.750000, 1.250000) 2 (1.589286, 1.225000) 3 (1.581160, 1.224645) 4 (1.581139, 1.224745) 5 (1.581139, 1.224745) T T x (1.58113883,1.22474487) ( 5 / 2, 3/ 2) = 精确解 = 演示 exam0602Newton.m; exam0602Fsolve.m; exam0602Solve.m 实例1 路灯照明 ( ) ( ) 0 ( ) ( ) '( ) 3 3 5 2 2 2 2 2 5 2 2 1 1 1 = + − − + + = − h s x P h s x h x Ph x C x 5 6 20 2 3 1 2 1 2 = = = = = h h s P P , , , 0 5 10 15 20 0 0.02 0.04 0.06 0.08 0.1 C(x) 0 5 10 15 20 -4 -2 0 2 4 6 x 10-3 dC(x) ( ) ( )3 2 2 2 2 2 3 2 2 1 1 1 ( ) ( ) h s x P h h x Ph C x + − + + = C (x)有3个驻点: (9,10)内的是最小点,0或20附近的是最大点 实例1 路灯照明 function y=zhaoming(x) y=2*5*x/(5^2+x^2)^(5/2)-3*6*(20-x)/(6^2+(20-x)^2)^(5/2); x0=[0,10,20]; for k=1:3 x(k)=fzero(@zhaoming,x0(k)); c(k)=2*5/(5^2+x(k)^2)^(3/2)+3*6/(6^2+(20-x(k))^2)^(3/2); end [x;c] C(x) 0.08197716 0.08198104 0.01824393 0.08447655 0.08447468 x 0 0.02848997 9.33829914 19.97669581 20 x =9.3383是C(x)的最小值点,x =19.9767是C(x)的最大值点
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有