_Meirana_ 2022-05-03 13:02 采纳率: 0%
浏览 194

用fsolve解非线性方程组,结果出错“输出参数太多”

如题
这个学期刚学的matlab,还没学多清楚就被作业题整麻了,这个就是其中之一,
原题目大概是知道四个同步卫星的位置(ai,bi,ci) ,(i=1,2,3,4,)要求地球上一个点的位置(x,y,z)
还知道这个点到同步卫星分别的位置di,(i=1,2,3,4)
代码如下

clear;
[x y z]=[0 0 0];
a=[15600 18760 17610 19170];
b=[7540 2750 14630 610];
c=[20140 18610 13480 18390];
d=[22167.124 22604.821 24013.845 22670.775];
%a,b,c,d都是题中给的数据,可以替换的所以没有直接写进方程而单开了几个数组
eqs=[(x-a(1))^2+(y-b(1))^2+(z-c(1))^2-d(1) ...
(x-a(2))^2+(y-b(2))^2+(z-c(2))^2-d(2) ...
(x-a(3))^2+(y-b(3))^2+(z-c(3))^2-d(3) ...
(x-a(4))^2+(y-b(4))^2+(z-c(4))^2-d(4)]
%其实就是三维的距离公式改了一下
[xi yi zi]=fsovle(eqs,[x,y,z])

运行结果及报错内容 如下

输出参数太多。
出错 t6_3 (第 2 行)
[x y z]=[0 0 0];

不明白这个参数太多指的是什么,以及要修改的话该改哪里

  • 写回答

1条回答 默认 最新

  • SmallAntJ 2022-05-03 14:01
    关注

    右侧[0 0 0]是一个vector,只能赋值个一个变量,就像定义a,b,c,d那样,而左侧表示三个变量x,y,z。你要赋初值就老老实实写x=0, y=0,z=0。
    而且13行等号左边写得也不对,你这样写左侧是接受三个参数。
    中括号里是常数表示一个矩阵或向量,中括号里是变量表示多个变量的列表,含义是不一样的。

    评论 编辑记录

报告相同问题?

问题事件

  • 修改了问题 5月3日
  • 创建了问题 5月3日

悬赏问题

  • ¥50 unitywebrequest分段下载导致报错,如何解决?
  • ¥15 错误使用 gretna_GUI_PreprocessInterface>RunBtn_Callback
  • ¥15 WPF如何用Chart绘画出Y轴的左边数据
  • ¥15 pycharm无法查看内置代码
  • ¥15 跑hls xfopencv的例程standalone_hls_axi_example出的错误,csim没问题,c synthesis出的错误
  • ¥15 sqlserver update语句逐行生效
  • ¥20 Windows10系统命令行调用
  • ¥15 php环境如何实现国密SM2相关功能
  • ¥15 关于#单片机#的问题:K210 例程里面提示我iomem.h: No such file or directory
  • ¥15 LSPI算法的大问题