当前位置:编程学习 > Matlab >>

Matlab问题,在线等。

以下是汽车转向梯形的优化程序 x(1)到x(6)为优化变量,其M文件可写成: function fun=yh(x) a=[0:0.0052:0.52]; M=1100; L=1800; B=acot(cot(a)-M/L); A=x(5)-x(3)-x(1)*cos(x(4)-a)-x(2)*cos(asin(x(1)*sin(x(4)-a)/x(2)+x(6)/x(2))); b=asin((x(2)^2-x(1)^2-x(6)^2-A.^2)./(2*x(1)*sqrt(*A.^2+x(6)^2)))-x(4)+atan(A./x(6)); fun=abs(B-b); 在给定的上下界范围内求函数的极值, x0=[135,250,600,1.2,1000,150] lb=[120,190,500,1,900,120] ub=[200,320,650,1.4,1100,200] x=lsqnonlin('yh',x0,lb,ub); 在求出函数值得同时,求极值点的函数值 x0=[135,250,600,1.2,1000,150] lb=[120,190,500,1,900,120] ub=[200,320,650,1.4,1100,200] [x,fval]=lsqnonlin('yh',x0,lb,ub); 求出函数极值,极值点函数值的同时,指明函数迭代结束的原因。 x0=[135,250,600,1.2,1000,150] lb=[120,190,500,1,900,120] ub=[200,320,650,1.4,1100,200] [x,fval,exitflag]=lsqnonlin('yh',x0,lb,ub); 问题:1,上述程序是否正确; 2,要如何用matlab运行此程序,得出结果(得出曲线图?)。 本人对matlab没有研究,有软件也有程序,但不知操作步骤和方法,忘各位大神帮帮忙。
补充:感谢三位,尤其是 lnuichilong 。悬赏已经不能提高了,3楼的追问问题,望你能来解答。谢谢。
追问:真是十分感谢,结果如你所说。能否再问一下:我的如下输入怎么出拟合图(提示错误)
a=[0:0.0052:0.52];
M=1100;
L=1800;
B=acot(cot(a)-M/L);
x(1)= 0.1063,x(2)= 0.2559,x(3)= 0.5741,x(4)= 0.0014,x(5)= 1.0243,x(6)= 0.0452;
A=x(5)-x(3)-x(1)*cos(x(4)-a)-x(2)*cos(asin(x(1)*sin(x(4)-a)/x(2)+x(6)/x(2)));
b=asin((x(2)^2-x(1)^2-x(6)^2-A.^2)./(2*x(1)*sqrt(A.^2+x(6)^2)))-x(4)+atan(A./x(6));
plot(a,b,:,a,B)运行时出错,好多红字。
答案:不正确,问题在b=asin((x(2)^2-x(1)^2-x(6)^2-A.^2)./(2*x(1)*sqrt(*A.^2+x(6)^2)))-x(4)+atan(A./x(6));
一句中,把A前的*删除,改为A=x(5)-x(3)-x(1)*cos(x(4)-a)-x(2)*cos(asin(x(1)*sin(x(4)-a)/x(2)+x(6)/x(2)));
然后按以下步骤:
1、改正后把function存为M文件,并保证在当前工作路径中。
2、在主窗口中依次拷贝运行:
(1)x0=[135,250,600,1.2,1000,150]
         lb=[120,190,500,1,900,120]
         ub=[200,320,650,1.4,1100,200]
         x=lsqnonlin('yh',x0,lb,ub)
(2)省略(如你给的问题,最后一句的‘;’去掉)
(3)如上。

帮你运行了一下,结果:
(1)
x =1.0e+003 *
0.1200    0.3200    0.5401    0.0012    1.0568    0.1200
(2)
x =1.0e+003 *
0.1200    0.3200    0.5401    0.0012    1.0568    0.1200

fval = 0.0059
(3)
x =1.0e+003 *
0.1200    0.3200    0.5401    0.0012    1.0568    0.1200

fval = 0.0059

exitflag =
  Columns 1 through 10
    0.0083    0.0083    0.0083    0.0083    0.0083    0.0083    0.0082    0.0082    0.0081    0.0081
  Columns 11 through 20
    0.0080    0.0079    0.0078    0.0077    0.0075    0.0074    0.0073    0.0071    0.0069    0.0067
  Columns 21 through 30
    0.0066    0.0064    0.0061    0.0059    0.0057    0.0054    0.0052    0.0049    0.0046    0.0043
  Columns 31 through 40
    0.0040    0.0037    0.0034    0.0030    0.0027    0.0024    0.0020    0.0016    0.0013    0.0009
  Columns 41 through 50
    0.0005    0.0001    0.0003    0.0007    0.0011    0.0015    0.0020    0.0024    0.0028    0.0032
  Columns 51 through 60
    0.0037    0.0041    0.0045    0.0049    0.0053    0.0058    0.0062    0.0066    0.0069    0.0073
  Columns 61 through 70
    0.0077    0.0081    0.0084    0.0087    0.0090    0.0093    0.0096    0.0098    0.0100    0.0102
  Columns 71 through 80
    0.0103    0.0105    0.0105    0.0106    0.0106    0.0105    0.0104    0.0102    0.0100    0.0097
  Columns 81 through 90
    0.0094    0.0089    0.0084    0.0079    0.0072    0.0064    0.0055    0.0046    0.0035    0.0022
  Columns 91 through 100
    0.0009    0.0006    0.0023    0.0041    0.0061    0.0083    0.0107    0.0133    0.0162    0.0194
  Column 101
    0.0228
其他:这个很是简单的问题
你运行一下不就可以了么 求出函数极值,极值点函数值的同时,指明函数迭代结束的原因。
x0=[135,250,600,1.2,1000,150]
lb=[120,190,500,1,900,120]
ub=[200,320,650,1.4,1100,200]
[x,fval,exitflag]=lsqnonlin('yh',x0,lb,ub); 

上一个:matlab 怎么自动多次读取文本文件
下一个:matlab用fread读音频文件

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,