声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1518|回复: 1

[综合讨论] 请教matlab求解非线性方程组的问题

[复制链接]
发表于 2008-5-23 16:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我有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=[170;1.3;111];
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.
这是怎么回事呢,谢谢各位了
回复
分享到:

使用道具 举报

发表于 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 ...

试试这段代码:

  1. %函数
  2. function f = myfun(p)
  3. global c
  4. a=40;
  5. angle1=85*pi/180;
  6. angle5=25*pi/180;
  7. 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;...
  8.    (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;...
  9.    -p(3)^2+(p(1)-a)^2+c^2-2*(p(1)-a)*c*cos(p(2))];
  10. end
复制代码

  1. %主程序
  2. clc
  3. clear
  4. global c
  5. p0=[170;1.3;111];
  6. options=optimset('Display','off');
  7. cc = 65:10:105;
  8. for i=1:1:length(cc);
  9. c=cc(i);
  10. p = fsolve(@myfun,p0,options);
  11. p1(i)=p(1);
  12. p2(i)=p(2);
  13. p3(i)=p(3);
  14. end
复制代码
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-18 02:52 , Processed in 0.068023 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表