为什么用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'

慕码人8056858
浏览 227回答 1
1回答

叮当猫咪

由于给出的方程比较复杂,用solve函数求解,得到是无解,所以应改用vpasolve函数求解。具体实现方法如下:1、由于vpasolve函数不适应求解数组形式的数据,所以只能逐个求解。2、应使用for循环语句来完成求解。即for i=1:8S=vpasolve(eval(eq(i))) %eq为具体的表达式end3、实现代码: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)))end4、运行上述代码,可以得到如下结果。
打开App,查看更多内容
随时随地看视频慕课网APP