为了账号安全,请及时绑定邮箱和手机立即绑定

为什么用solve怎么也弄不出来,要怎么才能弄出来。详情如下?

为什么用solve怎么也弄不出来,要怎么才能弄出来。详情如下?

b = tand(70);t = (2*3068)/(2*0.01256*0.00351);d = sqrt(13)*t-(2/3)*t*b;syms p q;p = -20000000:20000000:120000000;a = ((3*q-4*d*b+sqrt(9*(q^2)-24*d*b*q-24*(b^2)*p*q-16*(b^2)*(q^2)))/(4*(b^2)));r = (sqrt((2/(3*q))*(p-a)));solve('sprt(((p-a)^2)+(r^2)*(q^2))+r*(d+a*b) = 0','q'
查看完整描述

1 回答

?
叮当猫咪

TA贡献1776条经验 获得超12个赞

由于给出的方程比较复杂,用solve函数求解,得到是无解,所以应改用vpasolve函数求解。具体实现方法如下:
1、由于vpasolve函数不适应求解数组形式的数据,所以只能逐个求解。
2、应使用for循环语句来完成求解。即
for i=1:8
S=vpasolve(eval(eq(i))) %eq为具体的表达式
end
3、实现代码:
syms q
%assume(q>0);
b = tand(70);
t = (2*3068)/(2*0.01256*0.00351);
d = sqrt(13)*t-(2/3)*t*b;
p = (-20000000:20000000:120000000);
a = ((3*q-4*d*b+sqrt(9*(q^2)-24*d*b*q-24*(b^2).*p*q-16*(b^2)*(q^2)))/(4*(b^2)));
r = (sqrt((2/(3*q)).*(p-a)));
eq=sqrt(((p-a).^2)+(r.^2)*(q.^2))+r.*(d+a.*b);
for i=1:length(r)
S=vpasolve(eval(eq(i)))
end
4、运行上述代码,可以得到如下结果。








查看完整回答
反对 回复 2023-04-23
  • 1 回答
  • 0 关注
  • 375 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信