Matlab-学习心得及总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Matlab 解方程基本思想
1、调用command window界面→在File→Script→编写方程→run
2、Solve(’eq1-数值’,’x’)注意:英文冒号;log=ln;log3x=lllx lll3;
3、方程组:[x,y]=solve(’eq1’,’eq2’)[‘2*x+3*y=4’,’4*x+5*y=6’]
4、[x, fval(近似零解)]=fzero(’eq1-数值’,初值)
5、Clear 清除变量;clc清屏
6、int()函数实现不定积分功能,例如:syms x; int(sin(-x))=-cos(x)
7、通过syms 函数定义 a b c……来解决含字母变量的矩阵运算
8、伴随矩阵A*=det(A)*inv(A),即可求解
9、syms x a;int(3*a*x+a,x)其中确定x为积分变量
10、syms x a b;int(1,x,a,b)=b-a,其中x表示积分变量,a为下限,b为上限
11、求偏微分:syms x y;z=sym('x^2+y^2');diff(z,'x',2)=2;其中2为二次偏微分
12、求导数:syms x ;z=sym('x^3');diff(z,'x',2)=6*x;其中2表示二次求导
13、求单变量最小化:
syms x;y=@(x) sin(x);[x,fval]=fminbnd(y,0,2*pi);x=1.5*pi;fval=-1;求解在区间[0,2*pi]上最小值fval输出最小值,x对应的极值点
14、一元函数定区间求最值并画出图像:
f=2*exp(-x)*sin(x) 在区间[0,8]中的最小值与最大值
syms x;
f=@(x)2*exp(-x)*sin(-x);
fplot(f,[0,8]);
[xmin,fmin]=fminbnd(f,0,8);(最小值)
f1=@(x)-2*exp(-x)*sin(-x);
[xmax,fmax]=fminbnd(f1,0,8);(最大值)
15、绘制多元函数的图像:
x=-1:0.1:1;
y=-1:0.1:1;
[X,Y]=meshgrid(x,y);
;
Z=exp(X)*(4*X.^2+2*Y.^2+4*X.Y+2*Y+1)
mesh/surf (X,Y,Z);
xlabel('X-axis'),ylabel('Y-axis'),zlabel('Z-axis')
;(注意矩阵中的'.')
16、多项式拟合
x=[];y=[];a=polyfit(x,y,n);式中n为拟合多项式的指数,y=a(1)x^n+a(2)x^(n-1)+……,拟合出来的数据依次为:a(1) ,a(2),…… xi=linspace (0,16,160);
yi=polyval(a,xi);plot(x,y,'o',xi,yi) (比较拟合的曲线与原始输入数据点之间的关系)
17、运用inline定义函数,例如:f(x,y)=sin(x*y),f=inline('sin(x*y','x','y'));z=f(pi/180,30)=0.5
18、BP神经网络代码:
P=[];%输入矢量
t=[];%目标输出矢量
[pn,minp,maxp,tn,mint,maxt]=premnmnx(p,t);%原始数据归一化
net=newff(minmax(p),[20,9,1],{'tansig','tansig','purelin'},'trainlm');%定义BP网络训练参数
net.trainParam.show=200; %显示循环间隔数 net.trainParam.lr=0.2;%学习效率 net.trainParam.epochs=20000;最大训练次数 net.trainParam.min_grad=1e-10;%最小梯度值 net.trainParam.goal=0.00000001;%期望误差(均方方差)
[net,tr]=train(net,pn,tn);%训练BP 网络
A=sim(net,pn);%计算结果
t1=postmnmx(A,mint,maxt);%网格计算值
E=(t-t1);
MSE=mse(E);
echo off;%训练后网络的输出误差
plot((1:26),t,'-*',(1:26),t1,'-o');%画输入矢量图和训练结果图
网格合格后的预测程序:
m=[];%测试数据
p2n=tramnmx(m,minp,maxp);%测试数据归一化
an=sim(net,p2n); %计算结果
[a]=postmnmx(an,mint,maxt);%数据的反归一化 ,即最终想得到的预测结果
19、多元线性回归(已知方程拟合)
y=b0+b1*x1+b2*x2+……+bn*xn;
x=[]';%使用列向量
y=[]';%使用列向量
xdate=[ones(size(x, 1), 1), x]; % 在原始数据x 的左边加一列1,即模型包含常数项
[b, bint, r, rint, s] = regress(y, xdata); % 调用regress 函数作一元线性回归 yhat = xdata*b; % 计算y 的估计值
b 计算出来的值依次为b0,b1,b2……
plot(x,y,'ro',x,yhat,'g*');%画出原始数据散点与回归直线图
20、非线性回归 function yy=model(beta0,x)
a=beta0(1);
b=beta0(2);
yy=a+(0.49-a)*exp(-b*(x-8));(指定函数名的编程)
%在脚本里面运行
在命令窗口里面输入:
x=[8.00 8.00 10.00 10.00 10.00 10.00 12.00 12.00 12.00 14.00 14.00 14.00 16.00 16.00 16.00 18.00 18.00 20.00 20.00 20.00 20.00 22.00 22.00 24.00 24.00 24.00 26.00 26.00 26.00 28.00 28.00 30.00 30.00 30.00 32.00 32.00 34.00 36.00 36.00 38.00 38.00 40.00 42.00]';
y=[0.49 0.49 0.48 0.47 0.48 0.47 0.46 0.46 0.45 0.43 0.45 0.43 0.43 0.44 0.43 0.43 0.46 0.42 0.42 0.43 0.41 0.41 0.40 0.42 0.40 0.40 0.41 0.40 0.41 0.41 0.40 0.40 0.40 0.38 0.41 0.40 0.40 0.41 0.38 0.40 0.40 0.39 0.39]';
beta0=[0.30 0.02];
betafit=nlinfit(x,y,'model',beta0);
betafit=0.3896 0.1011