查看: 151|回复: 8|关注: 0

[已解决] 这个方程为啥解不出来?

[复制链接]

新手

7 麦片

财富积分


050


2

主题

8

帖子

0

最佳答案
syms x1 y1 z1 x4 y4 z4
x0=3059.8;y0=142.9;z0=82.5;R=3000;d10=48100^(1/2);d40=38200^(1/2);d14=49300^(1/2);theta=22.2;
f1='x1^2+y1^2-R^2';
f2='x4^2+y4^2-R^2';
f3='(x1-x0)^2+(y1-y0)^2+(z1-z0)^2-d10^2';
f4='(x4-x0)^2+(y4-y0)^2+(z4-z0)^2-d40^2';
f5='(x1-x4)^2+(y1-y4)^2+(z1-z4)^2-d14^2';
f6='(z1-z4)/d14-cosd(theta)';
[a,b,c,d,e,f]=solve(f1,f2,f3,f4,f5,f6,x1,y1,z1,x4,y4,z4,'Real',true);
x1=double(a)
y1=double(b)
z1=double(c)
x4=double(d)
y4=double(e)
z4=double(f)
警告: Could not extract individual solutions. Returning a MuPAD set object.
> In solve>assignOutputs at 219
  In solve at 193
错误使用 mupadmex
Error in MuPAD command: DOUBLE cannot convert the input expression into a double array.
If the input expression contains a symbolic variable, use the VPA function instead.

出错 sym/double (line 514)
        Xstr = mupadmex('symobj::double', S.s, 0);


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

举报

论坛优秀回答者

9

主题

1629

帖子

342

最佳答案
  • 关注者: 81
发表于 4 天前 | 显示全部楼层 |此回复为最佳答案
仅供参考
  1. syms x1 y1 z1 x4 y4 z4
  2. x0=3059.8;y0=142.9;z0=82.5;R=3000;d10=48100^(1/2);d40=38200^(1/2);d14=49300^(1/2);theta=22.2;
  3. f1=x1^2+y1^2-R^2;
  4. f2=x4^2+y4^2-R^2;
  5. f3=(x1-x0)^2+(y1-y0)^2+(z1-z0)^2-d10^2;
  6. f4=(x4-x0)^2+(y4-y0)^2+(z4-z0)^2-d40^2;
  7. f5=(x1-x4)^2+(y1-y4)^2+(z1-z4)^2-d14^2;
  8. f6=(z1-z4)/d14-cosd(theta);
  9. [a,b,c,d,e,f]=vpasolve([f1,f2,f3,f4,f5,f6],[x1,y1,z1,x4,y4,z4]);
  10. x1=double(a)
  11. y1=double(b)
  12. z1=double(c)
  13. x4=double(d)
  14. y4=double(e)
  15. z4=double(f)
复制代码
回复此楼 已获打赏: 0 积分

举报

新手

7 麦片

财富积分


050


2

主题

8

帖子

0

最佳答案
 楼主| 发表于 4 天前 | 显示全部楼层

谢谢您!我正在安装新版本,我先阅读一下!
回复此楼 已获打赏: 0 积分

举报

新手

7 麦片

财富积分


050


2

主题

8

帖子

0

最佳答案
 楼主| 发表于 4 天前 | 显示全部楼层

您好,我看了一下,您是否是改进了三个地方?
1.f1=方程,方程两边的'   ‘的不需要添加?
2.您的第九行,[a,b,c,d,e,f]=vpasolve,我正在查找资料了解vpa的用法,您可否大致说明一下?或者说vpsolve与solve的区别呢?
3.vpasolve()里的f1```f6和x1```z4分别用[]括起来了,这是书写习惯还是必要的书写格式呢?’
回复此楼 已获打赏: 0 积分

举报

论坛优秀回答者

9

主题

1629

帖子

342

最佳答案
  • 关注者: 81
发表于 4 天前 | 显示全部楼层
1、新版本不需要,老版本需要
2、vpasolve是数值求解,solve是符号分析(解析解)
3、书写习惯,不加也可运算
回复此楼 已获打赏: 0 积分

举报

新手

7 麦片

财富积分


050


2

主题

8

帖子

0

最佳答案
 楼主| 发表于 4 天前 | 显示全部楼层
20141303 发表于 2020-9-15 15:36
1、新版本不需要,老版本需要
2、vpasolve是数值求解,solve是符号分析(解析解)
3、书写习惯,不加也可运 ...

您好,我输入了您给的代码,确实成功了!感谢!!另外我还想提出两个问题:
1.经过几次尝试,我发现列方程:f1=```,其中必须去掉  ‘   ’   这个符号,否则会报错:
错误使用 sym.getEqnsVars (line 32)
Arguments must be symbolic objects.

出错 sym/vpasolve (line 132)
    [eqns,vars] = sym.getEqnsVars(varargin{1:N});
这是为什么呢?版本问题?



2.我求出来的都是带虚实的复数解,我加了real条件,得出错误提示:
错误使用 sym/vpasolve (line 103)
输入 应与以下值之一匹配:
'random'
输入 'Real' 与任何有效值均不匹配。
这是否表明:该方程没有实数解?
回复此楼 已获打赏: 0 积分

举报

新手

7 麦片

财富积分


050


2

主题

8

帖子

0

最佳答案
 楼主| 发表于 4 天前 | 显示全部楼层
20141303 发表于 2020-9-15 15:36
1、新版本不需要,老版本需要
2、vpasolve是数值求解,solve是符号分析(解析解)
3、书写习惯,不加也可运 ...

还有一个问题哈:
x1 = 1.0e+04 *
-3.8214 + 0.2206i          记为A
  -3.8214 - 0.2206i           记为B


y1 =
  -0.2213 - 3.8096i          记为a
  -0.2213 + 3.8096i          记为b
matlab给出的解的形式,是否一一对应,比如A对应a,B对应b?
回复此楼 已获打赏: 0 积分

举报

论坛优秀回答者

9

主题

1629

帖子

342

最佳答案
  • 关注者: 81
发表于 4 天前 | 显示全部楼层
1、之前提过,版本问题
2、查询帮助文档,没有该用法,实数解可以试试
[a,b,c,d,e,f]=solve([f1,f2,f3,f4,f5,f6],[x1,y1,z1,x4,y4,z4],'Real',true);
3、个人认为是的,可以带回验算
回复此楼 已获打赏: 0 积分

举报

新手

7 麦片

财富积分


050


2

主题

8

帖子

0

最佳答案
 楼主| 发表于 4 天前 | 显示全部楼层
20141303 发表于 2020-9-15 16:35
1、之前提过,版本问题
2、查询帮助文档,没有该用法,实数解可以试试
[a,b,c,d,e,f]=solve([f1,f2,f3,f4,f ...

真的太感谢了,第一次用第一次发帖,感受到温暖了,感谢感谢!
回复此楼 已获打赏: 0 积分

举报

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

本版积分规则

关闭

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

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