Matlab简单实例学习.docx
- 文档编号:5934328
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:34
- 大小:331.47KB
Matlab简单实例学习.docx
《Matlab简单实例学习.docx》由会员分享,可在线阅读,更多相关《Matlab简单实例学习.docx(34页珍藏版)》请在冰豆网上搜索。
Matlab简单实例学习
Matlab程序代码
绘制
的函数图象。
fv
clear;
t=0:
0.02:
10;
f1=10/sqrt(7.75).*exp(-1.5*t);
f2=sin(sqrt(7.75).*t);
y=f1.*f2;
plot(t,y,'-k',t,y,'ok');
xlabel('t');ylabel('y(t)');title('函数图像')
axis([-210-0.52])
拉氏变换
clear;
clc;
symsstfs1fs2fs3ft1ft2ft3;
L=1,C=0.1,R=[1.535];
h1=1/(L*C*s^2+R
(1)*C*s+1);
h2=1/(L*C*s^2+R
(2)*C*s+1);
h3=1/(L*C*s^2+R(3)*C*s+1);
fs1=h1*(1/s);
fs2=h2*(1/s);
fs3=h3*(1/s);
ft1=ilaplace(fs1,s,t);
ft2=ilaplace(fs2,s,t);
ft3=ilaplace(fs3,s,t);
ezplot(t,ft1);
holdon;
ezplot(t,ft2);
holdon;
ezplot(t,ft3);
信号编码
对[11011101001]进行编码。
clear;
clc;
c=[11011101001]
fori=1:
length(c)
ifi==1
d1(i)=0;d2(i)=0;
elseifi==2
d1(i)=c(i-1);d2(i)=c(i-1);
elseifi==3
d1(i)=mod(c(i-1)+c(i-2),2);
d2(i)=c(i-1);
else
d1(i)=mod(c(i-1)+c(i-2),2);
d2(i)=mod(c(i-1)+c(i-3),2);
end
end
d1
d2
迭代法
使用一般迭代法求解方程的
解。
第一根:
clear;
clc;
x0=10;err=1;
while(err>10^-6)
F1=x0;
F2=log(3*x0^2);
err=abs(F1-F2);
x0=F2;
end
x0
第二根:
clear;
clc;
x=1;err=1;
while(err>10^-6)
F1=x;
F2=sqrt(exp(x)/3);
err=abs(F1-F2);
x=F2;
end
x
第三根:
clear;
clc;
x=10;err=1;
while(err>10^-6)
F1=x;
F2=-sqrt(exp(x)/3);
err=abs(F1-F2);
x=F2;
end
x
牛顿迭代法
使用牛顿迭代法求解方程
的解。
symsxfxfx1;
fx=2*x^3-4*x^2+3*x-6;
fx1=diff(fx)
err=1;k=1;x0=1.5;
while(err>10^-6&&k<=1000)
x1=x0-(subs(fx,x,x0))/(subs(fx1,x,x0))
x0=x1;
err=abs(x0-x1)
k=k+1;
end
k
x0
牛顿迭代法求解
使用牛顿迭代法求解方程
的解。
第一解:
symsxfxfx1;
fx=x.^3-sin(x)-12*x+1;
fx1=diff(fx);
err=1;k=1;x0=-4;
while(err>10^-6&&k<=1000)
x1=x0-(subs(fx,x,x0))/(subs(fx1,x,x0));
err=abs(x0-x1);
x0=x1;
k=k+1;
end
k
x0
第二解:
symsxfxfx1;
fx=x.^3-sin(x)-12*x+1;
fx1=diff(fx);
err=1;k=1;x0=0;
while(err>10^-6)&&(k<=1000)
x1=x0-(subs(fx,x,x0))/(subs(fx1,x,x0));
err=abs(x0-x1);
x0=x1;
k=k+1;
end
k
x0
第三解:
symsxfxfx1;
fx=x.^3-sin(x)-12*x+1;
fx1=diff(fx);
err=1;k=1;x0=4;
while(err>10^-6)&&(k<=1000)
x1=x0-(subs(fx,x,x0))/(subs(fx1,x,x0));
err=abs(x0-x1);
x0=x1;
k=k+1;
end
k
x0
普通迭代法求解
使用普通迭代法求解方程
的解。
clear;
clc;
err1=1;err2=1;err3=1;x01=3;x02=0;x03=-3;k=3;
while(err1>10^-6)&&(err2>10^-6)&&(err3>10^-6)&&(k<1000)
F11=x01;
F12=(sin(x01)+12*x01-1)^(1/3);
err1=abs(F11-F12);
x01=F12;%第一解
F21=x02;
F22=(x02^3-sin(x02)+1)/12;
err2=abs(F21-F22);
x02=F22;%第二解
F31=x03;
F32=-sqrt((sin(x03)-1)/x03+12);
err3=abs(F31-F32);
x03=F32;%第三解
k=k+1;
end
x=[x01x02x03]
调用matlab函数求解方程。
clear;
clc;
symsxab;
p=x.^2-a*x-4*b;
r=solve(p,x);
r
clear;%roots求解法
clc;
symsx;
p=[1000-12-3];
r=roots(p);
r
clear;%solve求解法
clc;
symsx;
p=x.^6-x.^2+2*x-3;
r=solve(p,x);
r
clear;clc;
symsxf;
f=@(x)x.*sin(x)-1;
x0=1;tol=1e-6;
z1=fzero(f,x0);
x0=2.7;tol=1e-6;
z2=fzero(f,x0);
z=[z1z2]
clear;clc;%求非线性方程组的解
symx;
fun='[x
(1)-x
(2)^2,x
(2)-cos(x
(1))]'
x0=[1,2]
f=fsolve(fun,x0)
clear;clc;%求解非线性方程的解
symsx;
fun='[sin(x)-log(x+0.1)]';
x0=1;
f=fsolve(fun,x0)
矩阵基本操作
clear;clc;%加、减、乘省略,只需补零即可运算
A=[1234;2312;111-1;10-2-6];
B=[5;6;7;8];
C1=A\B%左除
C2=det(A)%求行列式
C3=inv(A)%求逆
C4=A^3%求幂
C5=rank(A)%求秩
C6=A'%求转置
C7=rref(A)%行变换简
求解方程
的解。
clear;clc;
A=[42-1;3-12;1130];
b=[2;10;8];
rref(A)
rref([A,b])
R1=rank(A)
R2=rank([A,b])
求解方程
的解。
clear;clc;
A=[2310;1-240;38-20;4-190];
b=[4;-5;13;-6];
rref(A)
rref([A,b])
R1=rank(A)
R2=rank([A,b])
求解方程
的解。
clear;clc;
A=[1111;12-14;2-3-1-5;31211];
b=[5;-2;-2;0];
rref(A)
rref([A,b])
R1=rank(A)
R2=rank([A,b])
多项式拟合
clear;clc;
x=0:
0.1:
1;
y=[2.32.52.12.53.23.63.03.14.15.13.8];%输入数据
[p1,s1]=polyfit(x,y,2);
[p2,s2]=polyfit(x,y,3);
[p3,s3]=polyfit(x,y,7);%求得多项式系数p
y1=polyval(p1,x);
y2=polyval(p2,x);
y3=polyval(p3,x);%由p得到x的多项式
r1=corrcoef(y,y1)
r2=corrcoef(y,y2)
r3=corrcoef(y,y3)%计算相关系数
plot(x,y,'.k',x,y1,'.r',x,y2,'.g',x,y3,'.b');%图像中Insert->Legend可加标注。
最小二乘拟合
functiony=f(x)%f文件定义
t=[0.250.511.523468];
c=[19.2118.1515.3614.1012.989.327.455.243.01];
y=c-x
(1).*exp(-x
(2).*t);
clear;clc;%主程序
t=[0.250.511.523468];
c=[19.2118.1515.3614.1012.989.327.455.243.01];
[p,s]=polyfit(t,c,7);%求七阶多项式拟合
y1=polyval(p,t);
r1=corrcoef(c,y1)
x0=[12];
[x]=lsqnonlin('f',x0)%最小二乘拟合
x
y2=x
(1).*exp(-x
(2).*t);
r2=corrcoef(c,y2)
v=0:
0.01:
8;
y11=polyval(p,v);
plot(t,c,'ok',v,y11,'b',t,y2,'r');
legend('原函数','多项拟合','最小二乘拟合');
最小二乘拟合
functiony=f1(x)%定义f1
t=[0.51.01.52.02.53.0];
c=[1.752.453.814.808.008.60];
y=c-x
(1).*exp(-x
(2).*t);
clear;clc;%主程序
t=[0.51.01.52.02.53.0];
c=[1.752.453.814.808.008.60];
[p,s]=polyfit(t,c,7);
y1=polyval(p,t);
r1=corrcoef(c,y1)
x0=[12];
[x]=lsqnonlin('f1',x0)
y=x
(1).*exp(-x
(2).*t);
r2=corrcoef(c,y)
v=0.5:
0.01:
3;
y11=polyval(p,v);
y2=x
(1).*exp(-x
(2).*v);
plot(t,c,'o',v,y11,'r',v,y2,'g');
legend('数据','七次多项式拟合','最小二乘拟合');
线性和非线性规划
有约束优化
求解函数
在约束条件
下最值。
functionf=f(x)
f=100*(x
(2)-x
(1)^2).^2+(1-x
(1))^2;
functionf1=f(x)
f1=-(100*(x
(2)-x
(1)^2).^2+(1-x
(1))^2);
clear;clc;
x0=[1,2];
A=[11;-1-1];
b=[1.5;0];
x=fmincon('f',x0,A,b)
f=100*(x
(2)-x
(1)^2).^2+(1-x
(1))^2
x=fmincon('f1',x0,A,b)
f=100*(x
(2)-x
(1)^2).^2+(1-x
(1))^2
functionf=f(x)
f=-2*x
(1)-x
(2);
function[g,ceq]=nonlcon(x)
g
(1)=x
(1)^2+x
(2)^2-25;
g
(2)=x
(1)^2-x
(2)^2-7;
ceq=[];
clear;clc;
VLB=[0,0];VUB=[5,10];
x0=[12];
x=fmincon('f',x0,[],[],[],[],VLB,VUB,'nonlcon',[])
min=-2*x
(1)-x
(2)
functionf=f(x)
f=exp(x
(1)).*(4*x
(1)^2+2*x
(2)^2+4*x
(1)*x
(2)+2*x
(2)+1);
function[g,ceq]=nonlcon(x)
g
(1)=1.5+x
(1)*x
(2)-x
(1)-x
(2);
g
(2)=-x
(1)*x
(2)-10;
ceq=x
(1)+x
(2);
clear;clc;
x0=[12];
x=fmincon('f',x0,[],[],[],[],[],[],'nonlcon',[])
min=exp(x
(1)).*(4*x
(1)^2+2*x
(2)^2+4*x
(1)*x
(2)+2*x
(2)+1)
functionf=f(x)
f=exp(x
(1)+x
(2)+x(3)+x(4)+x(5));
function[g,ceq]=nonlcon(x)
g
(1)=x(3)+x(4)-3;
g
(2)=x
(1)+x(5)-6;
ceq
(1)=x
(1)^2+x
(2)^2+x(3)^2+x(4)^2+x(5)^2-10;
ceq
(2)=x
(2)*x(3)-5*x(4)*x(5);
ceq(3)=x
(1)+x
(2)+1;
clear;clc;
x0=[12345];
VLB=[-2.3-2.3-2.3-2.3-2.3];
VUB=[2.32.33.23.23.2];
x=fmincon('f',x0,[],[],[],[],VLB,VUB,'nonlcon',[])
min=exp(x
(1)+x
(2)+x(3)+x(4)+x(5))
求解
clear;clc;
f=[-1-3-3000];
Aeq=[312010;101021;102120];
Beq=[5;2;6];
LB=[1e-61e-61e-61e-61e-61e-6];
UB=[InfInfInfInfInfInf];
formatlong;
x=linprog(f,[],[],Aeq,Beq,LB,UB)
min=-x
(1)-3*x
(2)-3*x(3)
现有三块地,分别为I=100hm2、II=300hm2、III=200hm2,需要种植水稻、大豆和玉米,要求最低收获水稻190000kg、大豆130000kg、玉米350000kg,三种作物的但产量如下图所示,市价水稻¥1.2/kg、大豆¥1.5/kg、玉米¥0.8/kg。
问:
1、获得最大产量的种植方案。
2、获得最大产值的种植方案。
Kg/hm2
I
II
III
水稻
11000
9500
9000
大豆
8000
6800
6000
玉米
14000
12000
10000
clear;clc;
f1=-[1100080001400095006800120009000600010000];
f2=-[11000*1.28000*1.50.8*140001.2*95001.5*68000.8*120001.2*90001.5*60000.8*10000];
A=-[1100000950000900000;080000068000060000;001400000120000010000];
B=-[190000;130000;350000];
Aeq=[111000000;000111000;000000111];
Beq=[100;300;200];
LB=zeros(9,1);
UB=[100100100300300300200200200];
[x,fval]=linprog(f1,A,B,Aeq,Beq,LB,UB);
x
max1=-fval
[x,fval]=linprog(f2,A,B,Aeq,Beq,LB,UB);
x
max2=-fval
某产品1900到2010年每个10年的产量为:
75.995,91.972,105.711,123.203,131.699,150.696,179.323,203.212,226.505,249.633,256.344,267.893,使用差值法求解1995年的产量,并画出相关图像。
clear;clc;
x=[190019101920193019401950196019701980199020002010];
y=[75.995,91.972,105.711,123.203,131.699,150.696,179.323,203.212,226.505,249.633,256.344,267.893];
Y=interp1(x,y,1995,'spline')
t=1900:
0.1:
2010;
y1=interp1(x,y,t,'spline');
plot(t,y1,'r',x,y,'ok');
legend('差值函数','原始数据');
1950到1990年工龄10、20、30年工作人员劳动报酬如下:
服务年限
年份
10
20
30
1950
150.697
169.592
187.652
1960
179.323
195.072
250.287
1970
203.212
239.092
322.767
1980
226.505
273.706
426.730
1990
249.633
370.281
598.243
计算1975年时15年工龄的工作人员平均工资。
clear;clc;
X=[19501960197019801990;19501960197019801990;19501960197019801990];
Y=[1010101010;2020202020;3030303030];
Z=[150.697179.323203.212226.505249.633;169.592195.072239.092273.706370.281;187.652250.287322.767426.730598.243];
x=1975;y=15;
z=interp2(X,Y,Z,x,y,'linear')
plot3(X,Y,Z)
数据如下表,求通过这些点的差值曲面(提示:
使用mesh(x,y,z)、surf(x,y,z)画图,在其后加shadinginerp可是曲面光滑)。
X
Y
1
2
3
4
5
6
1
12
10
11
11
13
15
2
16
22
28
35
27
20
3
18
21
26
32
28
25
4
20
25
30
33
32
20
clear;clc;
X=1:
1:
6;
Y=(1:
1:
4)';
Z=[121011111315;162228352720;182126322825;202530333220];
x=1:
0.01:
6;y=(1:
0.01:
4)';
z=interp2(X,Y,Z,x,y,'spline');
subplot(2,1,1)
mesh(x,y,z);colorbar;
subplot(2,1,2)
contour(x,y,z);colorbar;
matlab求解微分方程解析解:
(1)
clear;clc;
symsxy;
y=dsolve('x*D2y-3*Dy-x^2=0','y
(1)=0,y(5)=0','x')
ezplot(x,y)
(2)
clear;clc;
symsxyt;
z=dsolve('Dx-x-3*y=0','Dy-x-4=0','t')
z.x
z.y
matlab求解微分方程数值解:
functiondy=f(t,y)
dy=zeros(2,1);
dy
(1)=y
(2);
dy
(2)=2*(1-y
(1)^2)*y
(2)-y
(1);
clear;clc;
ts=0:
0.1:
30;
[T,Y]=ode15s('f',ts,[1,0]);
plot(T,Y)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Matlab 简单 实例 学习