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、运行上述代码,可以得到如下结果。
- 1 回答
- 0 关注
- 348 浏览
添加回答
举报
0/150
提交
取消