数学建模社区-数学中国
标题:
matlab求最值与求导
[打印本页]
作者:
2744557306
时间:
2023-12-22 18:08
标题:
matlab求最值与求导
clear all
3 a6 x* w2 J7 Q- C$ A6 ?
syms x;
m( u/ U) |8 p0 Q
y=(x^2-1)^3+1;
/ W4 J( Z$ A! a t( H6 e R
y1=diff(y,x); %y对x求一阶导
8 P! P# k W2 o: P; a* y0 d
y2=diff(y,x,2); %y对x求二阶导
, i1 S" i$ ^" h4 m
subplot(3,1,1); %把图形窗口分成3×1部分,并激活第1部分
1 N! I$ p1 g; H2 U
ezplot(y,[-1.5,1.5]); %对符号函数在[-1.5,1.5]上绘图
6 i. [8 u& T" Y; s+ ^2 g8 S
subplot(3,1,2);
' Y" N3 Q& j! `1 x! u, R
ezplot(y1,[-1.5,1.5]);
8 ~& ]$ p7 h9 v/ D' O
subplot(3,1,3);
5 j, @" [# q% S: G3 D
ezplot(y2,[-1.5,1.5]);
+ b: n9 Y1 \) x7 j
%通过导数为0的点求最值
! R( Y: K' O/ d+ w
x0=solve('6*(x^2-1)^2*x=0','x'); %求解一阶导数(从workspace中得到)为0的点
" B& X5 |) t8 g) o9 C7 e
y0=subs(y,x,x0); %把x0带入y中的x
0 n( L+ t( L5 f' Z" c( p$ Q
[ymin1,n]=min(eval(y0)); %求y0的最小值
7 r. R |# Z" l
xmin1=x0(n);
: y$ }. k0 S' K" a) \
%通过fminbnd求函数最值
- e3 N, z- j2 l, U1 ^6 ]; I8 X
f=inline('(x^2-1)^3+1','x');
8 z% Z7 N% Y% X; R9 I l6 C$ i
xmin2=fminbnd(f,-1.5,1.5); %在[-1.5,1.5]上求f函数的最小值点
- s- F; e9 I- \5 D
ymin2=f(xmin2);
复制代码
这段Matlab代码主要执行以下任务:
8 y! c$ [, K) _) |2 y
$ _( W* ? p+ o _6 F" j
1.clear all: 清除当前工作区的所有变量。
( k! C& J8 L! N0 `8 ]0 ~9 s
2.syms x;: 声明符号变量 x。
8 L+ U- f* F9 r0 ]0 H
3.y=(x^2-1)^3+1;: 定义符号表达式 y,这个表达式是一个函数 (x^2-1)^3 + 1。
* S3 m* E4 K1 S! U W
4.y1=diff(y,x);: 对 y 关于 x 求一阶导数,结果存储在 y1 中。
( n# K8 s- p& @& w
5.y2=diff(y,x,2);: 对 y 关于 x 求二阶导数,结果存储在 y2 中。
- F) S7 g, g7 s5 i* \
6.subplot(3,1,1);: 将图形窗口分成 3 行 1 列,并激活第 1 部分。
- Q; H+ f! `1 [8 p! C2 V! M6 ]) b
7.ezplot(y,[-1.5,1.5]);: 绘制符号函数 y 在 x 范围 [-1.5, 1.5] 上的图像,显示在第一个子图中。
- G; s% c/ z$ A! [$ l% y4 @
8.subplot(3,1,2);: 激活第 2 部分。
* P% b3 K' u4 p- W- ^7 O2 C
9.ezplot(y1,[-1.5,1.5]);: 绘制一阶导数 y1 在 x 范围 [-1.5, 1.5] 上的图像,显示在第二个子图中。
* V. F5 e4 T4 u. B* O, f
10.subplot(3,1,3);: 激活第 3 部分。
$ J: H! c% l8 `# ^' P! T1 a- U6 |
11.ezplot(y2,[-1.5,1.5]);: 绘制二阶导数 y2 在 x 范围 [-1.5, 1.5] 上的图像,显示在第三个子图中。
; K+ K" u/ {6 n0 q8 g; X; o( M
12.通过导数为 0 的点求最值:
; h* O" ?$ h1 k& j: r3 h
$ I. G* I# ~! v9 }& C$ k
13.x0=solve('6*(x^2-1)^2*x=0','x');: 解一阶导数为 0 的方程,得到导数为 0 的点的 x 值。
1 B6 K* n: ^" [' }2 N8 F. F' y
14.y0=subs(y,x,x0);: 将这些 x 值代入原函数 y 中,得到对应的 y 值。
3 W0 e( A4 ?# V
15.[ymin1,n]=min(eval(y0));: 找到 y0 中的最小值及其索引。
" v1 N0 }3 ^8 {% y: U$ N/ T
16.xmin1=x0(n);: 得到对应的 x 值。
' l! e% m- Y6 w# ~4 Y* E: Z2 n0 K3 f5 F
17.通过 fminbnd 求函数最值:
8 m- Y+ Z5 L! k9 s7 R! T
% o B5 G( J3 r$ \* R+ O
18.f=inline('(x^2-1)^3+1','x');: 定义一个匿名函数 f,表示原函数。
/ X* i& h8 t& y/ n* z* k: p2 {1 H
19.xmin2=fminbnd(f,-1.5,1.5);: 在指定范围 [-1.5, 1.5] 上使用 fminbnd 函数求函数 f 的最小值点。
& |5 b2 Z. D- k1 K; z
20.ymin2=f(xmin2);: 得到对应的最小值。
0 g. I! p- g& l2 l4 m
" A& z$ R7 y; j( y6 w6 o
这段代码的目的是分别绘制原函数、一阶导数、和二阶导数的图像,并通过求导数为 0 的点和 fminbnd 函数分别找到函数的最小值及其对应的 x 值。
2 `. B" j& K6 b8 Q2 V! e
. J9 r8 m' M3 T6 d) N% F5 c! Y6 b
% y3 D$ d3 H& {, G. x, R) y0 S' q
qiudao.m
2023-12-22 18:08 上传
点击文件名下载附件
下载积分: 体力 -2 点
725 Bytes, 下载次数: 0, 下载积分: 体力 -2 点
售价:
2 点体力
[
记录
] [
购买
]
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5