shootboy712 发表于 2008-5-23 16:59

请教matlab求解非线性方程组的问题

我有fsolve求解非线性方程组,方程组中有一个系数是变化的,c是变量,程序如下:
function f = myfun(p,c)
a=40;
angle1=85*pi/180;
angle5=25*pi/180;
f=[(a+p(1))^2+(p(1)-a)^2-2*(p(1)*p(1)-a*a)*cos(angle5)-(2*c*sin(angle1*0.5))^2;...
   (p(1)-a)^2+(2*c*sin(angle1/2))^2-2*(p(1)-a)*2*c*sin(angle1/2)*cos(p(2)+(pi-angle1)/2)-(a+p(1))^2;...
   -p(3)^2+(p(1)-a)^2+c^2-2*(p(1)-a)*c*cos(p(2))]
%%求解过程
p0=;
options=optimset('Display','off')
c = 65:10:105;
for i=1:1:length(c);
cc=c(i);
p = fsolve(@ (p) myfun(p,cc),p0,options);
p1(i)=p(1);
p2(i)=p(2);
p3(i)=p(3);
end
可是运行时提示我??? p = fsolve(@ (p) myfun(p,cc),p0,options);          |
Error: "identifier" expected, "(" found.
这是怎么回事呢,谢谢各位了

ch_j1985 发表于 2008-5-23 17:52

原帖由 shootboy712 于 2008-5-23 16:59 发表
我有fsolve求解非线性方程组,方程组中有一个系数是变化的,c是变量,程序如下:
function f = myfun(p,c)
a=40;
angle1=85*pi/180;
angle5=25*pi/180;
f=[(a+p(1))^2+(p(1)-a)^2-2*(p(1)*p(1)-a*a)*cos(angle5 ...
试试这段代码:
%函数
function f = myfun(p)
global c
a=40;
angle1=85*pi/180;
angle5=25*pi/180;
f=[(a+p(1))^2+(p(1)-a)^2-2*(p(1)*p(1)-a*a)*cos(angle5)-(2*c*sin(angle1*0.5))^2;...
   (p(1)-a)^2+(2*c*sin(angle1/2))^2-2*(p(1)-a)*2*c*sin(angle1/2)*cos(p(2)+(pi-angle1)/2)-(a+p(1))^2;...
   -p(3)^2+(p(1)-a)^2+c^2-2*(p(1)-a)*c*cos(p(2))];
end
%主程序
clc
clear
global c
p0=;
options=optimset('Display','off');
cc = 65:10:105;
for i=1:1:length(cc);
c=cc(i);
p = fsolve(@myfun,p0,options);
p1(i)=p(1);
p2(i)=p(2);
p3(i)=p(3);
end
页: [1]
查看完整版本: 请教matlab求解非线性方程组的问题