数学建模社区-数学中国

标题: fprintf函数问题 [打印本页]

作者: 欧阳嫦娥    时间: 2015-7-23 09:56
标题: fprintf函数问题
syms x y
$ Q# T  m" i9 B1 l& I& Q1 `f=x^3-y^3+3*x^2+3*y^2-9*x;# ?$ X" z6 o  l5 D5 [
df=jacobian(f);  %求一阶偏导数! x8 b! B# g2 N- j; x4 n$ S
d2f=jacobian(df); %求Hessian阵4 o* t4 k9 [. ~. A0 V2 F
[xx,yy]=solve(df)  %求驻点
8 L* F$ h2 M! E6 fxx=double(xx);yy=double(yy); %转化成双精度浮点型数据,下面判断特征值的正负,必须是数值型数据
/ L. B. o; O" h; q2 Wfor i=1:length(xx)2 e% i' o$ Q4 u* U, {9 ~
    a=subs(d2f,{x,y},{xx(i),yy(i)});  8 j. J# b4 [: @$ v" Q5 k; f
    b=eig(a);  %求矩阵的特征值
, h$ G* h, E' E3 v- l/ N- Q0 R; S3 T    f=subs(f,{x,y},{xx(i),yy(i)});( T% f/ Y; r7 @9 L3 M
    if all(b>0)7 B3 ^1 @, R- z% F: f0 G+ W2 s" _
        fprintf('(%f,%f)是极小值点,对应的极小值为%f\n',xx(i),yy(i),f);' }# ?# @; E! w! n% {& a6 W8 z
    elseif all(b<0)
- h3 o' P: L3 ]5 L        fprintf('(%f,%f)是极大值点,对应的极大值为%f\n',xx(i),yy(i),f);
& i8 E2 @& d# I    elseif any(b>0) & any(b<0)
$ p1 b' w0 ~# W; y        fprintf('(%f,%f)不是极值点\n',xx(i),yy(i));
$ F4 U. [7 ~: ^5 K2 B/ h    else0 \& \' P2 j: o5 y, H9 [6 J
        fprintf('无法判断(%f,%f)是否是极值点\n',xx(i),yy(i));  2 x3 R9 u7 @( S; M3 k- B
    end
0 M+ }$ d0 c! o- ?( z0 Vend
9 d8 y, R( i2 R/ D9 Y/ p6 s  T0 E( e  k$ L4 z/ @3 A
7 b' d* q3 g! Q' d
xx =/ W& [1 C& D; {3 o" x$ m  n: Q* I& \
% F  G( ?" R+ Y
  1
$ d8 |$ ]7 `4 I3 ?+ ?7 a$ e -3# O! }# z7 C( g% ~; }6 H# M
  15 X3 \& T" m3 L2 ^. [* d9 o: T
-3; N& F0 m/ A0 Q, y
: d5 `7 I$ J1 D/ H) c% v

$ j  P! l+ u- w5 Iyy =
! ^0 B& J% I9 q2 A: ^; K# p- [1 {3 V
; M+ H) u; _& s& h/ U 00 `4 N. r6 e# G9 R5 f( x
0
, q9 m& J- z  J  _5 e, B 20 k5 ^+ g& I6 r& b1 \) w
2
. }. Z! O! s7 u' [2 ^" `$ @! u
$ V; n0 g7 Q: O+ H错误使用 fprintf1 s3 [/ Z+ E8 ?/ f
没有为 'sym' 输入定义函数。$ G& O+ L' ^/ \& R

) l7 V" }+ N6 Y1 }8 b2 Z能告诉我哪里出问题了吗?/ P" Q5 U5 t4 E! ]" j- ]
我用的是2014aMATLAB, e$ \, P) h* S  l

作者: 士心之约    时间: 2015-8-23 09:20
  1. syms x y
    2 F0 l1 ]0 y" o* J6 m/ E2 S! E
  2. f=x^3-y^3+3*x^2+3*y^2-9*x;" P& j( [* o( z* h
  3. df=jacobian(f);  %求一阶偏导数2 K5 Z- x1 Q! U( I8 K  K9 Z- z9 `  B9 W4 S1 O6 A* S; Z5 ]" A
  4. d2f=jacobian(df); %求Hessian阵  t) X, B& E& c0 t
  5. [xx,yy]=solve(df)  %求驻点
    : V+ n8 t# y; Q$ z, \
  6. xx=double(xx);yy=double(yy); %转化成双精度浮点型数据,下面判断特征值的正负,必须是数值型数据  d+ C1 y" F/ b+ b
    5 ^2 u* z9 O* W( F- b
  7. for i=1:length(xx)5 @3 O8 c/ E' T. N; O
  8.     a=subs(d2f,{x,y},{xx(i),yy(i)}); 7 |/ ?0 _, R# v
  9.     b=eig(a);  %求矩阵的特征值0
    - K2 Z- {$ {) t- s" J$ J6 {
  10.     f=subs(f,{x,y},{xx(i),yy(i)});
    ! M  S) {7 m* K
  11.     if all(b>0)
    ( H# a! b3 u5 Q
  12.         fprintf('(%f,%f)是极小值点,对应的极小值为%f\n',xx(i),yy(i),double(f));
    ! T8 [) J' R) ]( [
  13.     elseif all(b<0)
    & J1 {. C, X5 Y% P0 G8 z9 `/ x& {
  14.         fprintf('(%f,%f)是极大值点,对应的极大值为%f\n',xx(i),yy(i),double(f));
      E1 r1 |$ |2 E- N! H5 L
  15.     elseif any(b>0) & any(b<0); D5 [  S* K* c; e% R7 I5 t
  16.         fprintf('(%f,%f)不是极值点\n',xx(i),yy(i));
    , h3 G! {5 ^: o, \7 I' B0 a6 Z
  17.     else% a( u+ E6 _* l
  18.         fprintf('无法判断(%f,%f)是否是极值点\n',xx(i),yy(i));  0 n& G$ F" M$ y1 D
  19.     end% @" t# y# t# }0 E
  20. end
复制代码

6 D2 K, d8 a1 H' r" B9 F8 C




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5