作诠释的说明方法:我有个matlab程序运行不了.可否帮帮?

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/04 12:40:22
我有个matlab程序运行不了.可否帮帮?下面是那个程序:
function fun=nh(x)
a=[0:0.0052:0.52];
M=1110, L=2550;
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)
//////
然后我运行不了.我要求的结果是:
(1). 在给定的上、下界范围内求函数的极值,该在命令窗口输入以下命令
x0 =[180,460,60,1.2,1000,20]; %预估优化目标解的初值
lb=[120,400,40,0.6,900,-20]; %给出优化目标变量的下界
ub=[260,580,120,1.6,1110,60]; %给出优化目标变量的上界
lsqnonlin(‘nh’,x0,lb,ub) %求优化值x(1)~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)));
有几个位置要加点啊!!因为你用到了a,所以是ARRAY了

首先,程序里最后一句lsqnonlin(‘nh’,x0,lb,ub) ,你的'nh'用的是全角的符号,(可以拷贝下来再粘贴回matlab里试验一下)这种格式matlab里不认,必须改为半角。这样程序才可以运行;修改后程序运行的结果是:159.56 454.65 55.655 1.2334 1008.8 0.00015866
第二,建议程序里每句结束时,使用封号,这样可以避免不需要的结果显示的命令窗口;
第三,程序运行的时候显示计算过程中有除以0的情况,你可以重新选一下数据,或者在出现除以0的计算方程式后加上+eps