matlab ignoreanalyticconstraints,MATLAB函数随笔之计算篇
前言:這些都是我在學(xué)習(xí)MATLAB與數(shù)學(xué)建模時(shí)遇到的一些常用函數(shù),就在這里寫了下。當(dāng)然MATLAB十分強(qiáng)大,函數(shù)眾多,這些只是鳳毛麟角,這篇博客我也會(huì)一直更新有新的函數(shù)就接著寫上,希望對(duì)大家有所幫助。
前言:這些都是我在學(xué)習(xí)MATLAB與數(shù)學(xué)建模時(shí)遇到的一些常用函數(shù),就在這里寫了下。當(dāng)然MATLAB十分強(qiáng)大,函數(shù)眾多,這些只是鳳毛麟角,這篇博客我也會(huì)一直更新有新的函數(shù)就接著寫上,希望對(duì)大家有所幫助。有不足之處還望指出。
這里是MATLAB畫圖篇。
數(shù)值計(jì)算篇
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)
上面化簡一下就是下面這個(gè)
解這個(gè)微分方程
求出sym來不要慌,s.x就能給結(jié)果了,注意這里是s=,要是ans就是ans.x
本題來源B站大仙一品堂
無約束問題的MATLAB解法
2. 無約束極值問題的符號(hào)解
求多元函數(shù)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的極值
具體為啥這樣算,都是高數(shù)上的知識(shí)
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);%各求一階偏導(dǎo)數(shù)
d2f = jacobian(df);%號(hào)求Hessian陣
[xx,yy] =solve(df) %求駐點(diǎn)
xx = double( xx) ;yy = double(yy);%名轉(zhuǎn)化成雙精度浮點(diǎn)型數(shù)據(jù),下面判斷特征值的正負(fù)須是數(shù)值型數(shù)據(jù)
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)是極小值點(diǎn),對(duì)應(yīng)的極小值為 %f\n" ,xx(i),yy(i),f);
elseif all(b<0 )
fprintf("(% f,% f)是極大值點(diǎn),對(duì)應(yīng)的極大值為%f\n" ,xx(i),yy(i),f);
elseif any(b>0) && any(b<0)
fprintf("(% f,%f)不是極值點(diǎn)\n" ,xx(i),yy(i));
else
fprintf("無法判斷(% f,% f)是否是極值點(diǎn)\n",xx(i),yy(i));
end
i=i+1;
end
3.無約束極值問題的數(shù)值解
fminunc 找到指定問題的最小值,minxf(x) ,其中f(x)是一個(gè)返回一個(gè)標(biāo)量的函數(shù),x是一個(gè)向量或者矩陣。
fminsearch 從x0開始,找到函數(shù)fun中的局部最小值x,x0可以是標(biāo)量,向量,矩陣。
求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))%求極小值點(diǎn)
[xy2 ,z2] = fminsearch(g,rand(2,1));%求極大值點(diǎn)
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.求函數(shù)的零點(diǎn)和方程組的解
求f(x)=x3?x2+5?x?3f(x)=x^3-x^2+5*x-3f(x)=x3?x2+5?x?3的零點(diǎn).
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
函數(shù)化簡
(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",默認(rèn)是1,設(shè)置值可以去任意整數(shù),表示化簡的輪次
%"IgnoreAnalyticConstraints",默認(rèn)是false,如果為true,只考慮純粹的化簡,而不顧及“非完全等價(jià)”的可能
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)%這個(gè)是看一下我們的自由變量是啥 是t
lig=limit(g,0)% t趨近于0時(shí)的值
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是精度,精確到小數(shù)點(diǎn)后48位
求導(dǎo)
普通求導(dǎo):sin(∣x∣)sin(|x|)sin(∣x∣)
abs()是求絕對(duì)值,
Y = sign(x) 返回與 x 大小相同的數(shù)組 Y,其中 Y 的每個(gè)元素是:
1,前提是 x 的對(duì)應(yīng)元素大于 0。
0,前提是 x 的對(duì)應(yīng)元素等于 0。
-1,前提是 x 的對(duì)應(yīng)元素小于 0。
x./abs(x),前提是 x 為復(fù)數(shù)。
clear
syms x
x=[-4:0.1:4];
f=sin(abs(x));
d=diff(f)
y=cos(abs(x)).*sign(x);%這里復(fù)制了下d
plot(x,y)%這里plot(x,y),y必須重新定義,不能用前面算出來的d
d1 =
cos(abs(x))*sign(x)
隱函數(shù)求導(dǎo)
泰勒級(jí)數(shù)展開
syms x
r5=taylor(x*exp(x))%默認(rèn)是6級(jí)
r8=taylor(x*exp(x),"Order",8)%這是8級(jí)
pretty(r8)%pretty展開多項(xiàng)式的易讀格式
有限/無限級(jí)數(shù)之和.
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)
符號(hào)計(jì)算篇
1. 隱函數(shù)化簡求解
(1)、
上式化簡為下式
syms t r i
t=solve(1== ((1-i)/i)*exp(-r*t),t)
t =
-log(-i/(i - 1))/r
化簡下面函數(shù)
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)
用符號(hào)法求解
u?w2+z?w2=vu*w^2+z*w^2=vu?w2+z?w2=v
代碼很簡單,自己運(yùn)行看結(jié)果吧,建議用實(shí)時(shí)腳本來運(yùn)行
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)%后面不帶數(shù)字1的話是給出所有的參數(shù)符號(hào),1是最前面那個(gè),也就是我們要求的參數(shù)
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(tǒng)=xy′?(y′)2y=xy"-(y")^2y=xy′?(y′)2的通解和奇解。
(與原微分方程的每一個(gè)解都相切的曲線的方程叫奇解)
clear all
y=dsolve("(Dy)^2-x*Dy+y=0","x")%求解,得到一個(gè)通解,一個(gè)奇解
%%
hold on
hy1=ezplot(y(2),[-6,6,-4,8],1);%奇解的圖像
set(hy1,"Color","r","LineWidth",2)
%%
Sv=symvar(y(1));%自動(dòng)辨認(rèn)基本符號(hào)變量(不定常數(shù)符號(hào))
for k=-2:0.5:2%畫通解,給基本符號(hào)變量賦不同的值
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 ","的解"])
求反函數(shù)
求y=f(x)=1?21+exy=f(x)=1-\frac{2}{1+e^x}y=f(x)=1?1+ex2?
clc,clear
%% 求原函數(shù)積分,并作圖
syms x y real
f(x)=1-2/(1+exp(x));%原函數(shù)
fint(x)=int(f,x,0,x)%原函數(shù)求積分
xk=0:0.1:2;
plot(xk,f(xk),"g",xk,fint(xk))%原函數(shù)以及積分函數(shù)圖像
title("原函數(shù)及其積分函數(shù)")
legend("f(x)","\int^x_0 f(x)dx","Location","best")
%%求反函數(shù)
g(y)=subs(finverse(f),x,y)%求反函數(shù)
gint(y)=int(g,y,0,y)%對(duì)反函數(shù)積分
gf=g(f(x))%驗(yàn)證
fg=f(g(y))
其他函數(shù)篇
3. unifrnd生成(連續(xù))均勻分布的隨機(jī)數(shù)
x=unifrnd(0,12,[1,10]);
y=1:10;
plot(y,x,"*")
x生成了[0,12]內(nèi)的十個(gè)隨機(jī)數(shù)
以上信息來源于網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系站長刪除。
總結(jié)
以上是生活随笔為你收集整理的matlab ignoreanalyticconstraints,MATLAB函数随笔之计算篇的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: glassfish
- 下一篇: MSM8260,OMAP4430,TEG