查看: 204|回复: 4|关注: 0

[已解决] fsolve解方程组,方程组里面一个常量每次取不同的值,如何实现?

[复制链接]

新手

7 麦片

财富积分


050


1

主题

3

帖子

0

最佳答案
现在我想解一个方程组,方程组中的y已知,但它是从0到2pi均匀变化的。代码如下,请教一下如何修改。
global y;
for y=(0:0.2:2*pi)
x0=[0,0,0,0];
x=fsolve(@fun,x0);
end
function F=fun(x)
%y=(0:0.2:2*pi);
global y;
F1=-x(1).*cos(x(4))-300.*cos(x(4)).*sin(x(3))-2;
F2=x(1).*sin(x(4))+300.*sin(x(3)).*sin(x(4))-y;
F3=x(2)-300.*cos(x(3))+300-sin(6)-cos(3*y);
F4=-3*cos(6).*cos(x(4)).*cos(x(3))-3*sin(3*y).*sin(x(3)).*sin(x(4))+cos(x(3))-sqrt(10)*cos(pi/18);
F=(F1:F2:F3:F4);
end


回复主题 已获打赏: 0 积分

举报

论坛优秀回答者

6

主题

1440

帖子

307

最佳答案
  • 关注者: 70
发表于 2020-5-28 17:30:12 | 显示全部楼层 |此回复为最佳答案
仅供参考
  1. i=0;
  2. for y=0:0.2:2*pi
  3.     i=i+1;
  4.     x0=[0,0,0,0];
  5.     opts.Algorithm = 'levenberg-marquardt';
  6.     xs(i,:)=fsolve(@(x)fun(x,y),x0,opts);
  7. end
  8. function F=fun(x,y)
  9. F1=-x(1).*cos(x(4))-300.*cos(x(4)).*sin(x(3))-2;
  10. F2=x(1).*sin(x(4))+300.*sin(x(3)).*sin(x(4))-y;
  11. F3=x(2)-300.*cos(x(3))+300-sin(6)-cos(3*y);
  12. F4=-3*cos(6).*cos(x(4)).*cos(x(3))-3*sin(3*y).*sin(x(3)).*sin(x(4))+cos(x(3))-sqrt(10)*cos(pi/18);
  13. F=(F1:F2:F3:F4);
  14. end
复制代码
回复此楼 已获打赏: 0 积分

举报

论坛优秀回答者

中级

1197 麦片

财富积分


5001500


0

主题

2762

帖子

257

最佳答案
  • 关注者: 171
发表于 2020-5-28 17:44:04 | 显示全部楼层
很多点都是无解的,比如y=2, 2.2, 3, 3.2, 3.4, 4, 4.2, 4.4, ......
回复此楼 已获打赏: 6 积分

举报

新手

7 麦片

财富积分


050


1

主题

3

帖子

0

最佳答案
 楼主| 发表于 2020-5-28 21:19:07 | 显示全部楼层
shihe 发表于 2020-5-28 17:44
很多点都是无解的,比如y=2, 2.2, 3, 3.2, 3.4, 4, 4.2, 4.4, ......

方程里面有个参数写错了。刚才发现了
回复此楼 已获打赏: 0 积分

举报

新手

7 麦片

财富积分


050


1

主题

3

帖子

0

最佳答案
 楼主| 发表于 2020-5-28 21:20:35 | 显示全部楼层

谢谢大佬!!!
回复此楼 已获打赏: 0 积分

举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

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