MATLAB 语言程序设计基础.docx
《MATLAB 语言程序设计基础.docx》由会员分享,可在线阅读,更多相关《MATLAB 语言程序设计基础.docx(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、%第六章 微分方程问题的解法% 微分方程的解析解方法% 常微分方程问题的数值解法% 微分方程问题算法概述% 四阶定步长 Runge-Kutta算法及 MATLAB 实现% 一阶微分方程组的数值解% 微分方程转换% 特殊微分方程的数值解% 边值问题的计算机求解% 偏微分方程的解% 6.1 微分方程的解析解方法% y=dsolve(f1, f2, , fm ,x)% syms t; u=exp(-5*t)*cos(2*t+1)+5;% uu=5*diff(u,t,2)+4*diff(u,t)+2*u% syms t y;% y=dsolve(D4y+10*D3y+35*D2y+50*Dy+24*y
2、=.% 87*exp(-5*t)*cos(2*t+1)+92*exp(-5*t)*sin(2*t+1)+10,y(0)=3,Dy(0)=2,D2y(0)=0,D3y(0)=0)% x,y=dsolve(D2x+2*Dx=x+2*y-exp(-t),.% Dy=4*x+3*y+4*exp(-t)% syms t x; % x=dsolve(Dx=x*(1-x2)+1)% Warning: Explicit solution could not be found; implicit solution returned.% In D:MATLAB6p5toolboxsymbolicdsolve.m
3、at line 292% x =% t-Int(1/(a-a3+1),a=.x)+C1=0% 故只有部分非线性微分方程有解析解。% 6.2 微分方程问题的数值解法% 6.2.1 微方程问题算法概述%Euler算法%function outx,outy=MyEuler(fun,x0,xt,y0,PointNum)% fun 表示f(x,y); x0,xt:自变量的初值和终值; % y0:函数在x0处的值,其可以为向量形式; % PointNum表示自变量在x0,xt上取的点数% if nargin5 |PointNum=0 %PointNum 默认值为100% PointNum=100;% en
4、d% if nargin4 % y0默认值为0 % y0=0;% end% h=(xt-x0)/PointNum; %计算步长h% x=x0+0:PointNum*h; %自变量数组% y(1,:) = y0(:); %将输入存为行向量,输入为列向量形式% for k = 1:PointNum% f=feval(fun,x(k),y(k,:); f=f(:); %计算f(x,y)在每个迭代点的值 % y(k + 1,:) =y(k,:) +h*f; %对于所取的点x迭代计算y值% end% outy=y; outx=x; % plot(x,y) %画出方程解的函数图 % end% x1,y1=
5、MyEuler(myfun,0,2*pi,1,16);% myfun=inclineDy=sin(x)+y% function Xout,Yout=MyEulerPro(fun,x0,xt,y0,PointNumber)% %MyEulerPro 用改进的欧拉法解微分方程% if nargin5 | PointNumber=0 % %PointNumer默认值为100% PointNumer=100;% end% if nargin0,收敛于x,exitflag=0,% 表示超过函数估计值或迭代的最大数字,exitflag f=inline(exp(-2*t).*cos(10*t)+exp(-
6、3*(t+2)*sin(2*t),t); % 目标函数% t0=1; t1,f1=fminsearch(f,t0); t1 f1% ans =% 0.9228 -0.1547% t0=0.1; t2,f2=fminsearch(f,t0); t2 f2% ans =% 0.2945 -0.5436%7.2.4 利用梯度求解最优化问题 %7.2.5非线性最小二乘 % 函数 lsqnonlin% 格式 x = lsqnonlin(fun,x0) % x = lsqnonlin(fun,x0,lb,ub) % x = lsqnonlin(fun,x0,lb,ub,options)% %x0为初始解向
7、量;fun为 ,i=1,2,m, % lb、ub定义x的下界和上界, options为指定优化参数,若x没有界,则lb= ,ub= 。%由于lsqnonlin中的fun为向量形式而不是平方和形式,因此,myfun函数应由f(x)建立% function F = myfun10(x)% k = 1:10;% F = 2 + 2*k-exp(k*x(1)-exp(k*x(2);% 然后调用优化程序: % x0 = 0.3 0.4;% x,resnorm = lsqnonlin(myfun10,x0)% Optimization terminated: norm of the current ste
8、p is less% than OPTIONS.TolX.% x =% 0.2578 0.2578% resnorm =% 124.3622% % 7.3有约束最优化问题的计算机求解 % 7.3.1 约束条件与可行解区域 % 对于一般的一元问题和二元问题,可用图解法直接得出问题的最优解。 % 例:用图解方法求解:% x1,x2=meshgrid(-3:.1:3); % 生成网格型矩阵% z=-x1.2-x2; % 计算出矩阵上各点的高度% i=find(x1.2+x2.29); z(i)=NaN; % % 找出 x12+x229 的坐标,并置函数值为 NaN% i=find(x1+x21);
9、z(i)=NaN; % 找出 x1+x21的坐标,置为 NaN% surf(x1,x2,z); shading interp;% max(z(:) % 7.3.2 线性规划问题的计算机求解 %x,fopt,flag,c=linprog(f,A,B,Aeq,Beq,xm,Xm,x0,opt,p1,p2,.)% 7.3.3 二次型规划的求解%x,fopt,flag,c=quadprog(H,f,A,B,Aeq,Beq,xm,Xm,x0,opt,p1,p2,.)% 7.3.4 一般非线性规划问题的求解%x,fopt,flag,c=fmincon(F,x0,A,B,Aeq,Beq,xm,Xm,CF,o
10、pt,p1,p2,.)% 7.3.5 约束线性最小二乘 % 函数 lsqlin % 格式 x = lsqlin(C,d,A,b) % x = lsqlin(C,d,A,b,Aeq,beq,lb,ub,x0,options) % %求在约束条件下,方程Cx = d的最小二乘解x。% Aeq、beq满足等式约束,若没有不等式约束,则设 A= ,b= 。% lb、ub满足,若没有等式约束,则Aeq= ,beq= 。% x0为初始解向量,若x没有界,则lb= ,ub= 。% options为指定优化参数% x,resnorm,residual,exitflag,output,lambda = lsql
11、in() % % resnorm=norm(C*x-d)2,即2-范数。% residual=C*x-d,即残差。exitflag为终止迭代的条件% output表示输出优化信. lambda为解x的Lagrange乘子% 7.4整数规划问题的计算机求解% 7.4.1 整数线性规划问题的求解% x,how=ipslv_mex(A,B,f,intlist,xM,xm,ctype)% A、B线性等式和不等式约束,,约束式子由ctype变量控制,% intlist为整数约束标示,how0表示结果最优,2为无可行解,其余失败。% % 7.4.2一般非线性整数规划问题与求解% err,f,x=bbnb2
12、sita(fun,x0,intlist,xm,xM,A,B,Aeq,Beq,CFun)% err字符串为空,则返回最优解。% 该函数尚有不完全之处,解往往不是精确整数,% 可用下面语句将其化成整数。% if (length(err)=0% x(intlist=1)=round(x(intlist=1)% end% 7.4.3 0-1规划问题求解% x=binprog(f,A,B,Aeq,Beq)% % 7.5极小化极大(Minmax)问题 % 函数 fminimax% 格式 x = fminimax(fun,x0)% x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,
13、nonlcon,options)% x,fval,maxfval,exitflag,output,lambda = fminimax()% 参数说明:nonlcon的作用是通过接受的向量x来计算非线性不等约束 ;% 先建立非线性约束函数,并保存为mycon.m:% function C,Ceq = mycon(x)% C = % 计算x处的非线性不等约束的函数值。% Ceq = % 计算x处的非线性等式约束的函数值。% fval为最优点处的目标函数值;% maxfval为目标函数在x处的最大值;% exitflag为终止迭代的条件;% lambda是Lagrange乘子,它体现哪一个约束有效。
14、% output输出优化信息。 % 第8章 概率论与数理统计问题的求解% 概率分布与伪随机数生成% 统计量分析% 数理统计分析方法及计算机实现% 统计假设检验% 方差分析及计算机求解% % 8.1 概率分布与伪随机数生成% 8.1.1 概率密度函数与分布函数概述% % 通用函数计算概率密度函数值 % 函数 pdf% 格式 P=pdf(name,K,A)% P=pdf(name,K,A,B)% P=pdf(name,K,A,B,C)% 说明 返回在X=K处、参数为A、B、C的概率密度值,对于不同的分布,参数个数是不同;name为分布函数名。% 例如二项分布:设一次试验,事件Y发生的概率为p,%
15、那么,在n次独立重复试验中,事件Y恰好发生K次的概率P_K为:% P_K=PX=K=pdf(bino,K,n,p) % pdf(norm,0.6578,0,1) %正态分布N(0,1)的随机变量X在点0.6578的密度函数值。% pdf(chi2,2.18,8) %自由度为8的卡方分布,在点2.18处的密度函数值。% % 随机变量的累积概率值(分布函数值) % 通用函数cdf用来计算随机变量的概率之和(累积概率值)% 函数 cdf% 格式 cdf(name,K,A)% cdf(name,K,A,B)% cdf(name,K,A,B,C)% % 说明 返回以name为分布、随机变量XK的概率之和
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 语言程序设计基础 语言程序设计 基础
限制150内