matlab 非线性方程,循环得到一组解

来源:百度知道 编辑:UC知道 时间:2024/05/24 03:20:36
function y=fun(x)
Rpp=cell(73,1);
for i=1:73
p=[0:pi/36:2*pi];
Rpp(i)={[cos(p(i)),-sin(p(i));sin(p(i)),cos(p(i))]};
Rp=cell2mat(Rpp(i));

L1=100;
L2=300;
L3=220;
L4=250;
A0=[0;0];
B0=[250;0];
AX=A0(1,1);
AY=A0(2,1);
B0X=B0(1,1);
B0Y=B0(2,1);
%Rp=[cos(p(i)),-sin(p(i));sin(p(i)),cos(p(i))];
B1=[L1*cos(p(i))+L2*cos(x);L1*sin(p(i))+L2*sin(x)];
B11=Rp*(B1-A0)+A0;
B11X=B11(1,1);
B11Y=B11(2,1);
A1=[L1*cos(p(i));L1*sin(p(i))];
A=Rp*(A1-A0)+A0;
E=(B11X-AX)*(AX-B0X)+(B11Y-AY)*(AY-B0Y);
F=(B11X-AX)*(AY-B0Y)-(B11Y-AY)*(AX-B0X);
G=-(1/2)*((B1-B0)'*(B1-B0)-(B11-A)'*(B11-A)-(A-B0)'*(A-B0));
y=E*cos(x)+F*sin(x)+G;
end

y式中只有x未知,E,F,G里面还有与x相关的项
x的范围在1左右,想要每次用fsolve解一次,出一个结果
运行
for i=1:73
qq=fsolve(@fun,x)
end

为什么得到的只是一组相同的解?
各位帮帮忙,谢谢了
to:wacs5 - 副总裁 十级 或者其他牛人
我的问题可能没有描述清楚
fun函数里

你的东西比较乱。
问两个问题。
一、
for i=1:73
qq=fsolve(@fun,x)
end
你想做什么?这里的x应当是一个数吗?如果是数,你做73次循环干什么,不是一次就搞定了吗?

二、函数fun中,你运行那个for有意义吗?
你仔细看一下你的倒二行:y=E*cos(x)+F*sin(x)+G; 它在循环内,你的EFG都与i有关,那么y最终的值肯定只跟i=73有关。其它的i=1,i=2……i=72其实都是无用功。

另外你要弄清楚,你的变量有多少?