前言:这些都是我在学习MATLAB与数学建模时遇到的一些常用函数,就在这里写了下。当然MATLAB十分强大,函数众多,这些只是凤毛麟角,这篇博客我也会一直更新有新的函数就接着写上,希望对大家有所帮助。

前言:这些都是我在学习MATLAB与数学建模时遇到的一些常用函数,就在这里写了下。当然MATLAB十分强大,函数众多,这些只是凤毛麟角,这篇博客我也会一直更新有新的函数就接着写上,希望对大家有所帮助。有不足之处还望指出。

这里是MATLAB画图篇。

数值计算篇

1. 微分方程

解上式x(t)=?

x=dsolve("Dx=r*x*(1-x/m)","x(0)=x0","t")

x =

-m/(exp(log(1 - m/x0) - r*t) - 1)

上面化简一下就是下面这个

解这个微分方程

求出sym来不要慌,s.x就能给结果了,注意这里是s=,要是ans就是ans.x

本题来源B站大仙一品堂

无约束问题的MATLAB解法

2. 无约束极值问题的符号解

求多元函数f(x,y)=x3?y3+3?x2+3?y3?9?xf(x,y)=x^3-y^3+3*x^2+3*y^3-9*xf(x,y)=x3?y3+3?x2+3?y3?9?x的极值

具体为啥这样算,都是高数上的知识

clear

syms x y

% x=-100:100;

% y=-100:100;

f=x.^3-y.^3+3*x.^2+3*y.^2-9*x;

% plot3(x,y,z)

df = jacobian(f);%各求一阶偏导数

d2f = jacobian(df);%号求Hessian阵

[xx,yy] =solve(df) %求驻点

xx = double( xx) ;yy = double(yy);%名转化成双精度浮点型数据,下面判断特征值的正负须是数值型数据

for i =1: length( xx)

a=subs(d2f,{x,y},{xx(i),yy(i)});

b=eig(a);%名求矩阵的特征值

f =subs( f,{x,y},{xx(i),yy(i)});

f = double( f);

if all(b>0)

fprintf("(% f,%f)是极小值点,对应的极小值为 %f\n" ,xx(i),yy(i),f);

elseif all(b<0 )

fprintf("(% f,% f)是极大值点,对应的极大值为%f\n" ,xx(i),yy(i),f);

elseif any(b>0) && any(b<0)

fprintf("(% f,%f)不是极值点\n" ,xx(i),yy(i));

else

fprintf("无法判断(% f,% f)是否是极值点\n",xx(i),yy(i));

end

i=i+1;

end

3.无约束极值问题的数值解

fminunc 找到指定问题的最小值,minxf(x) ,其中f(x)是一个返回一个标量的函数,x是一个向量或者矩阵。

fminsearch 从x0开始,找到函数fun中的局部最小值x,x0可以是标量,向量,矩阵。

求sin(x)+3sin(x)+3sin(x)+3在4附近的极小值。

clear

f=@(x) sin(x)+3;

[x,y]=fminsearch(f,4)

clc, clear

f=@ (x) x(1)^3 -x(2)^3 +3 *x(1)^2 +3 *x(2)^2 -9 *x(1) ;

g=@ (x) - f(x);

[xy1,z1] = fminunc( f, rand(2,1))%求极小值点

[xy2 ,z2] = fminsearch(g,rand(2,1));%求极大值点

xy2,z2=-z2

xy1 =

1.0000

-0.0000

z1 =

-5.0000

xy2 =

-3.0000

2.0000

ans =

31.0000

可以看到,在(1,0)取得极小值 -5,在(-3,2)取得极大值 31。

4.求函数的零点和方程组的解

求f(x)=x3?x2+5?x?3f(x)=x^3-x^2+5*x-3f(x)=x3?x2+5?x?3的零点.

xishu=[1 -1 2 -3];

roots(xishu)

ans =

-0.1378 + 1.5273i

-0.1378 - 1.5273i

1.2757 + 0.0000i

求方程组的解

syms x y

[x,y]=solve(x^2+y-6,y^2+x-6)

x =

2

-3

21^(1/2)/2 + 1/2

1/2 - 21^(1/2)/2

y =

2

-3

1/2 - 21^(1/2)/2

21^(1/2)/2 + 1/2

函数化简

(1/x3+6/x2+12/x+8)(1/3)(1/x^3+6/x^2+12/x+8)^{(1/3)}(1/x3+6/x2+12/x+8)(1/3)

syms x

f=(1/x^3+6/x^2+12/x+8)^(1/3)

r1=simplify(f)%((2*x + 1)^3/x^3)^(1/3)

% "Steps",默认是1,设置值可以去任意整数,表示化简的轮次

%"IgnoreAnalyticConstraints",默认是false,如果为true,只考虑纯粹的化简,而不顾及“非完全等价”的可能

r2=simplify(f,"Steps",10,"IgnoreAnalyticConstraints",true)%1/x + 2

求极限

sin(t?k)/(t?k),(1?1/x)(k?x)sin(t*k)/(t*k),(1-1/x)^{(k*x)}sin(t?k)/(t?k),(1?1/x)(k?x)

syms t x k

g=sin(t*k)/(t*k);

f=(1-1/x)^(k*x);

symvar(g,1)%这个是看一下我们的自由变量是啥 是t

lig=limit(g,0)% t趋近于0时的值

lig1=subs(lig,k,1) % subs是把t替换成1

lif=limit(f,x,inf)

lif1=subs(lif,k,-1)

lif2=vpa(subs(lif,k,-1),48)%vpa是精度,精确到小数点后48位

求导

普通求导:sin(∣x∣)sin(|x|)sin(∣x∣)

abs()是求绝对值,

Y = sign(x) 返回与 x 大小相同的数组 Y,其中 Y 的每个元素是:

1,前提是 x 的对应元素大于 0。

0,前提是 x 的对应元素等于 0。

-1,前提是 x 的对应元素小于 0。

x./abs(x),前提是 x 为复数。

clear

syms x

x=[-4:0.1:4];

f=sin(abs(x));

d=diff(f)

y=cos(abs(x)).*sign(x);%这里复制了下d

plot(x,y)%这里plot(x,y),y必须重新定义,不能用前面算出来的d

d1 =

cos(abs(x))*sign(x)

隐函数求导

泰勒级数展开

syms x

r5=taylor(x*exp(x))%默认是6级

r8=taylor(x*exp(x),"Order",8)%这是8级

pretty(r8)%pretty展开多项式的易读格式

有限/无限级数之和.

syms n k

f=1/(k*(k+1))

d1=symsum(f,k,1,inf)

d2=symsum(f,k,1,n)

d1 =

1

d2 =

n/(n + 1)

积分

普通积分

int(x^2)

多重积分

∫12∫xx2∫x?yx2yx2+y2+z2dzdydx\int_{1}^{2}\int_{\sqrt{x}}^{x^2}\int_{\sqrt{x*y}}^{x^2y}x^2+y^2+z^2dzdydx∫12?∫x?x2?∫x?y?x2y?x2+y2+z2dzdydx

clear

syms x y z

f=int(int(int(x^2+y^2+z^2,z,sqrt(x*y),x^2*y),y,sqrt(x),x^2),x,1,2)

vpa(f)

符号计算篇

1. 隐函数化简求解

(1)、

上式化简为下式

syms t r i

t=solve(1== ((1-i)/i)*exp(-r*t),t)

t =

-log(-i/(i - 1))/r

化简下面函数

syms b d v1 v2 v3 v4

[v3,v4]=solve(b*v1+d*v2==b*v3+d*v4,b*v1^2+d*v2^2==b*v3^2+d*v4^2,v3,v4)

v3 =

(b*v1 - d*v1 + 2*d*v2)/(b + d)

v4 =

(2*b*v1 - b*v2 + d*v2)/(b + d)

用符号法求解

u?w2+z?w2=vu*w^2+z*w^2=vu?w2+z?w2=v

代码很简单,自己运行看结果吧,建议用实时脚本来运行

clear

syms u v w z

E=u*w^2+z*w^2-v

g(z)=u*w^2+z*w^2==v

symvar(E,1)%后面不带数字1的话是给出所有的参数符号,1是最前面那个,也就是我们要求的参数

symvar(g(z),1)

r1=solve(E)

r2=solve(g(z))

s1=solve(E,z)

s2=solve(g(z),z)

ans=simplify(subs(E,z,s1))%subs就是把s1换成z

ans1=simplify(g(s2))

微分方程

求通解和奇解

图示微分方y=xy′?(y′)2y=xy"-(y")^2y=xy′?(y′)2的通解和奇解。

(与原微分方程的每一个解都相切的曲线的方程叫奇解)

clear all

y=dsolve("(Dy)^2-x*Dy+y=0","x")%求解,得到一个通解,一个奇解

%%

hold on

hy1=ezplot(y(2),[-6,6,-4,8],1);%奇解的图像

set(hy1,"Color","r","LineWidth",2)

%%

Sv=symvar(y(1));%自动辨认基本符号变量(不定常数符号)

for k=-2:0.5:2%画通解,给基本符号变量赋不同的值

y2=subs(y(1),Sv(1),k);

ezplot(y2,[-6,6,-4,8],1)

end

hold off

box on

legend("奇解","通解","Location","Best")

ylabel("y")

title(["\fontsize{14}微分方程"," (y "")^2 – xy "" + y = 0 ","的解"])

求反函数

求y=f(x)=1?21+exy=f(x)=1-\frac{2}{1+e^x}y=f(x)=1?1+ex2?

clc,clear

%% 求原函数积分,并作图

syms x y real

f(x)=1-2/(1+exp(x));%原函数

fint(x)=int(f,x,0,x)%原函数求积分

xk=0:0.1:2;

plot(xk,f(xk),"g",xk,fint(xk))%原函数以及积分函数图像

title("原函数及其积分函数")

legend("f(x)","\int^x_0 f(x)dx","Location","best")

%%求反函数

g(y)=subs(finverse(f),x,y)%求反函数

gint(y)=int(g,y,0,y)%对反函数积分

gf=g(f(x))%验证

fg=f(g(y))

其他函数篇

3. unifrnd生成(连续)均匀分布的随机数

x=unifrnd(0,12,[1,10]);

y=1:10;

plot(y,x,"*")

x生成了[0,12]内的十个随机数

以上信息来源于网络,如有侵权,请联系站长删除。

matlab ignoreanalyticconstraints,MATLAB函数随笔之计算篇相关推荐

  1. MATLAB函数随笔之计算篇

    前言:这些都是我在学习MATLAB与数学建模时遇到的一些常用函数,就在这里写了下.当然MATLAB十分强大,函数众多,这些只是凤毛麟角,这篇博客我也会一直更新有新的函数就接着写上,希望对大家有所帮助. ...

  2. [转载]在Matlab中Bessel函数怎么表示计算

    在Matlab中Bessel函数怎么表示计算 百度知道:https://zhidao.baidu.com/question/559660704716601644.html MATLAB提供了计算贝塞尔 ...

  3. MATLAB中Bessel函数的表示计算

    MATLAB提供了计算贝塞尔函数的函数,具体包括: besselj - 第一类贝塞尔函数,或简称贝塞尔函数: bessely - 第二类贝塞尔函数,又称诺伊曼函数(Neumann function): ...

  4. matlab besselk,【在MATLAB中Bessel函数怎么表示计算】作业帮

    1.  Matlab中,支持下列各种Bessel函数的计算: BESSELJ(NU,Z)    Bessel function of the first kind BESSELY(NU,Z)    B ...

  5. Matlab中cq是什么,Matlab中gradient函数(梯度计算原理)

    Gradient(F)函数求的是数值上的梯度,假设F为矩阵. >> x=[6,9,3,4,0;5,4,1,2,5;6,7,7,8,0;7,8,9,10,0] x = 6       9   ...

  6. cumsum在matlab中,matlab中cumsum函数和sum函数详解

    调用格式及说明 matlab中cumsum函数通常用于计算一个数组各行的累加值.在matlab的命令窗口中输入doc cumsum或者help cumsum即可获得该函数的帮助信息. 调用格式及说明 ...

  7. fir滤波器等纹波matlab,基于Matlab的FIR滤波器设计与实现

    基于Matlab的FIR滤波器设计与实现 一.摘要 前面一篇文章介绍了通过FDATool工具箱实现滤波器的设计,见"基于Matlab中FDATool工具箱的滤波器设计及相关文件的生成&quo ...

  8. matlab 细化函数,MATLAB图像处理工具箱函数(细化篇).doc

    MATLAB图像处理工具箱函数(细化篇) 第3章 MATLAB数字图像处理工具箱 3.1 MATLAB图像预处理 3.1.1 图像处理的基本操作 1. 读入并显示一幅图像 clear %清除所有的工作 ...

  9. matlab中pwelch函数计算功率谱密度

    出处:Matlab用pwelch函数计算功率谱 - 知乎 (zhihu.com) 1:函数形式 [pxx,f] = pwelch(x,window,noverlap,NFFT,fs) 该函数可以自适应 ...

  10. 信息论 | 计算离散信源的信息量和熵的MATLAB实现(函数封装调用)

    <信息论基础> 实验报告 姓名 XX 班级 XXXXXX 学号 2020XXXXXXXX 实验项目 计算离散信源的熵 日期 2022.10.21 实验环境 联想电脑 MATLAB R201 ...

最新文章

  1. 1.43千米外隔墙透视!这项黑科技已被中科大潘建伟团队实现
  2. 【Ethereum】以太坊ERC20 Token标准完整说明
  3. c#_限制TextBox输入类型仅可为“-” “.” 数字
  4. PyCairo 中的形状和填充
  5. 【Python】SQLAlchemy长时间未请求,数据库连接断开的原因、解决方案
  6. 前端学习(1387):多人管理项目7登录 数据库连接
  7. ArcEngine 9.3.1与64位操作系统 80040154
  8. 使用Nsight查找CE3的渲染bug
  9. 放肆的使用UIBezierPath和CAShapeLayer画各种图形
  10. AR+LBS街景实景红包PokemonGo游戏捉妖夺宝营销解决方案定制开发暨百度高德地图Unity插件SDK
  11. Java 9 揭秘(15. 增强的弃用注解)
  12. AU更新 AUTOIT
  13. 世纪联华开了家新零售门店,网易严选也要入驻
  14. 你还记得它吗?Visual FoxPro,红极一时的狐狸头
  15. 单光感pid巡线_PID非常好的光感巡线思路
  16. 分享大三改进后的python写的【银行管理系统】,超详细 【内附源码】
  17. 建立统分结合、职责明确的疾控可持续发展信息化体系
  18. teamview 解除限制使用时间方法(判断长时间使用 会限制使用时间)
  19. BQ25798双电源输入4节电池升降压充电与最大功率跟踪于光伏板应用
  20. RF 电路设计中的常见问题及解决方案

热门文章

  1. 自我介绍计算机应用技术,计算机应用专业的新生自我介绍
  2. 【破解】PyCharm2018专业版激活(激活到2100年)
  3. 【数据分析】如何构建指标体系 设计一份优质报表
  4. html5课程总结500字,高中月考总结与反思500字(精选5篇)
  5. i7 8700k 安装linux,Intel i7 8700K核显UHD620安装黑苹果仿冒HD620方法
  6. appleid注册服务器错误,连接apple id 服务器时出错(Apple ID 验证连接失败,试试这招)...
  7. 管理科学与工程 国内核心期刊 国外a刊及SCI
  8. 问佛__如果浮躁了,静下来看看,慢慢体会下
  9. 大学计算机基础 - 第七章练习题
  10. Fortify 5.1漏洞整改方案