哪位大侠帮我解决个 我编的“MATLAB”的小模型的运行问题

来源:百度知道 编辑:UC知道 时间:2024/06/04 14:35:32
fun01='acos((4+(x(2))^2-(x(1))^2)/(4*x(2)))+pi/2';
fun1='15000/cos(fun01)';
fun02='acos((4+(x(1))^2-(x(2))^2)/(4*x(1))+50*pi/180';
fun03='asin((x*sin(sin(fun02)/(4+x^2-2*fun02)^0.5)';
fun2='15000*cos(50*pi/180)/cos(fun03)';
fun='fun1+fun2*cos(50*pi/180)';
x0=[1,0];
A=[1,1;1,-1;-1,1];
b=[2,-2,-2];
[x,fval]=fmincon(fun,x0,A,b)

改了一晚上,还是不行,感谢您的帮助

不能这么写。你先建一个myfun.m

function y = myfun(x);

fun01=acos((4+(x(2))^2-(x(1))^2)/(4*x(2)))+pi/2;
fun1=15000/cos(fun01);
fun02=acos((4+(x(1))^2-(x(2))^2)/(4*x(1))+50*pi/180;
fun03=asin((x*sin(sin(fun02)/(4+x^2-2*fun02)^0.5);
fun2=15000*cos(50*pi/180)/cos(fun03);
fun=fun1+fun2*cos(50*pi/180);

y = fun; % y是一个值 ,你是想求使y最小的x,还是使abs(y)最小的x?看你自己定义

然后在主窗口运行

x0=[1,0];
A=[1,1;1,-1;-1,1];
b=[2,-2,-2];
[x,fval]=fmincon(fun,x0,A,b)

才差不多~~