用MATLAB求极值(2)

2019-02-15 22:26

在解一个模型,其中:

Qd=(-2*x-2*wd+2*a-a*k+y*k+wf*k+td*k)/(4*b-2*b*k^2)

现在求出来

x = 1/2*(48*a+32*k+16*wd-16*cdu-4*wf*k-4*td*k-12*a*k-10*a*k^2+td*k^3-8*k^3+4*k ^2*cdu-4*k*cfu+cfu*k^3+3*a*k^3-6*wd*k^2+wf*k^3)/(5*k^2-16)

y = (-8*a+a*k^2-2*wd*k+10*a*k+8*wf-3*wf*k^2-3*td*k^2+2*cfu*k^2+4*k^2+8*td-8*cf u-2*k*cdu)/(5*k^2-16)

要把x和y代回Qd,请教达人,用matlab的subs怎么写啊? 万分感谢! 问题补充:

Qd=(-2*x1-2*wd+2*a-a*k+y1*k+wf*k+td*k)/(4*b-2*b*k^2)

x1=1/2*(48*a+32*k+16*wd-16*cdu-4*wf*k-4*td*k-12*a*k-10*a*k^2+td*k^3-8*k^3+4*k^2*cdu-4*k*cfu+cfu*k^3+3*a*k^3-6*wd*k^2+wf*k^3)/(5*k^2-16)

y1=(-8*a+a*k^2-2*wd*k+10*a*k+8*wf-3*wf*k^2-3*td*k^2+2*cfu*k^2+4*k^2+8*td-8*cfu-2*k*cdu)/(5*k^2-16)

subs(Qd,{x1,y1},{x,y})

以上输入之后报错为:Undefined function or variable 'x1'. 请问是哪里除了问题?

提问者: nxdviola - 一

最佳答案 syms x1,y1 Qd

Qd=(-2*x1-2*wd+2*a-a*k+y1*k+wf*k+td*k)/(4*b-2*b*k^2)

subs(Qd,{x1,y1},{x,y})

为何Matlab用subs后给出的结果是个代数式而不是数字? 悬赏分:0 - 解决时间:2009-10-8 22:16

使用 d=subs(f4,{x,y,z},{2,3,1})后,

结果给出了一个很长的代数式,里面有pi和 atan,但都没有计算,为什么不给出一个最终的数字结果?

提问者: 再见长江 - 二

最佳答案

subs函数就是替换符号表达式的函数,要计算需要用eval函数

急询:Matlab中 subs(S)的应用疑问? 悬赏分:5 - 解决时间:2006-6-29 12:57

急询:Matlab中 subs(S)的应用疑问?

1.subs(S)到底是什么函数?其什么作用,谢谢! 2.下段绘图程序如下的话就画出不来: syms x t; t=0:pi/60:2*pi; y1=int(sin(x),x,0,t); y2=int(cos(x),x,0,t);

plot(y1,y2)

而把 plot(y1,y2) 改成 plot(subs(y1),subs(y2)) 就可以运行成功画出来了。 (1)为什么?

(2)subs 在此起到什么作用?

(3)而不加 subs 为什么运行不了,画不出来????? 急,多谢!

(上次提问时候把y1写成y1=sin(x)了,现在改为int(sin(x),x,0,t); 抱歉) 问题补充:

(上次提问时候把y1写成y1=sin(x)了,现在改为int(sin(x),x,0,t); 抱歉)

请具体讲一下subs(S)到底是什么意思?(我知道subs(f,x,t)是什么意思,但我不明白sub(S)在此到底具体是什么意思?请详细一下,谢谢!)

提问者: wanglicun - 二

最佳答案

subs(S)的意思是:

S以前是sym变量,subs(S)为double变量,plot只能对double变量作图。

求函数z?f(x,y)极值的一般步骤:第一步 解方程组fx(x,y)?0,fy(x,y)?0求出实数解,得驻点.第二步 对于每一个驻点(x0,y0),求出二阶偏导数的值A、B、C.第三步 定出AC?B的符号,再判定是否是极值.

2曲线极值的标注:用matlab中plot 绘制的曲线时,把曲线上峰值的大小标注在

上面

你指的是离散点的最大和最小值吧?给你个简单的例子看看:

代码:x=0:pi/50:2*pi;

y=sin(x); y1=max(y); x1=x(find(y==y1)); y2=min(y); x2=x(find(y==y2)); plot(x,y); hold on

plot(x1,y1,'r*'); plot(x2,y2,'g*');

离散数据就极值点

%方法一 x=0:0.01:20;

y=2*sin(x/2)+cos(2*x)/2;

% indmax=find(diff(sign(diff(y)))<0)+1;%极大值点 % indmin=find(diff(sign(diff(y)))>0)+1;%极小值点 ind=find(diff(sign(diff(y)))~=0)+1;%极值点 plot(x,y,x(ind),y(ind),'ro') %方法二 x=0:0.01:20;

y=2*sin(x/2)+cos(2*x)/2;

indmax=intersect(find(diff(y)>0)+1,find(diff(y)<0));%极大值点 indmin=intersect(find(diff(y)<0)+1,find(diff(y)>0));%极小值点 plot(x,y,x(indmax),y(indmax),'ro',x(indmin),y(indmin),'go') %方法三 x=0:0.01:20;

y=2*sin(x/2)+cos(2*x)/2;

yf=y(2:end-1)-y(1:end-2); %前向差分 yb=y(2:end-1)-y(3:end); %后向差分

I=find(yf.*yb>=0)+1; %寻找极值点(不考虑首尾两点) plot(x,y,'b',x(I),y(I),'r*');


用MATLAB求极值(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2011年洛阳市教育教学研究课题立项申报书(中岳学区) - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: