MATLAB求解符号线性方程组时,结果误差很大?symsF1F2F3F4F5C1C2C3C4EID2D3D4W0L1L2L3L4;f1=C1+(F4*L1^2)/(2*E*I)-C2;f6=(F4-F5)*(L1+L2)^2/(2*E*I)-F4*L1*(L1+L2)/(E*I)+C2-((F4-F3-F5)*(L1+L2)^2)/(2*E*I)-((F3-F4)*L1+F3*L2)*(L1+
syms F1 F2 F3 F4 F5 C1 C2 C3 C4 E I D2 D3 D4 W0 L1 L2 L3 L4;
f1=C1+(F4*L1^2)/(2*E*I)-C2;
f6=(F4-F5)*(L1+L2)^2/(2*E*I)-F4*L1*(L1+L2)/(E*I)+C2-((F4-F3-F5)*(L1+L2)^2)/(2*E*I)-((F3-F4)*L1+F3*L2)*(L1+L2)/(E*I)-C3;
f7=(F4-F3-F5)*(L1+L2+L3)^2/(2*E*I)+((F3-F4)*L1+F3*L2)*(L1+L2+L3)/(E*I)+C3-F1*(L1+L2+L3)^2/(2*E*I)+(L1+L2+L3+L4)*F1*(L1+L2+L3)/(E*I)-C4;
f2=-(F5*L1^3)/(6*E*I)+C1*L1;
f3=(F4-F5)*L1^3/(6*E*I)-(F4*L1^3)/(2*E*I)+C2*L1+D2;
f4=(F4-F5)*(L1+L2)^3/(6*E*I)-(F4*L1*(L1+L2)^2)/(2*E*I)+C2*(L1+L2)+D2+W0;
f5=(F4-F3-F5)*(L1+L2)^3/(6*E*I)+((F3-F4)*L1+F3*L2)*(L1+L2)^2/(2*E*I)+C3*(L1+L2)+D3+W0; %x=L1+L2;W=W0
f8=(F4-F3-F5)*(L1+L2+L3)^3/(6*E*I)+((F3-F4)*L1+F3*L2)*(L1+L2+L3)^2/(2*E*I)+C3*(L1+L2+L3)+D3; %x=L1+L2+L3;W=0
f9=F1*(L1+L2+L3)^3/(6*E*I)-(L1+L2+L3+L4)*F1*(L1+L2+L3)^2/(2*E*I)+C4*(L1+L2+L3)+D4; %x=L1+L2+L3;W=0
f10=-F1*(L1+L2+L3+L4)^3/(3*E*I)+C4*(L1+L2+L3+L4)+D4; %x=L1+L2+L3+L4;W=0
f11=-F1+F2-F3+F4-F5;
f12=-F3*(L3+L4)+F4*(L2+L3+L4)-F5*(L1+L2+L3+L4)+F2*L4;
[F1,F2,F3,F4,F5,C1,C2,C3,C4,D2,D3,D4]=solve(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,'F1','F2','F3','F4','F5','C1','C2','C3','C4','D2','D3','D4')
上面是我的代码,求出的结果带入f1~f12,发现都不为0,这是为什么?
原因
使用solve函数求解方程组,如果返回多个参数,则参数是按照字母顺序排列,而与你在输入参数表中指定的顺序无关.
可参考关于solve函数的文档:
Three different types of output are possible. For one equation and one
output, the resulting solution is returned, with multiple solutions to
a nonlinear equation in a symbolic vector. For several equations and
an equal number of outputs, the results are sorted in lexicographic
order and assigned to the outputs. For several equations and a single
output, a structure containing the solutions is returned.
建议
一种方式是,修改solve函数的输出参数顺序:
[C1,C2,C3,C4,D2,D3,D4,F1,F2,F3,F4,F5]=solve(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,'F1','F2','F3','F4','F5','C1','C2','C3','C4','D2','D3','D4')
或者,按照下面的方式返回参数:
s=solve(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,'F1','F2','F3','F4','F5','C1','C2','C3','C4','D2','D3','D4');
fns = fieldnames(s);
for i=1:length(fns)
eval([fns{i} '=s.' fns{i}]);
end
古罗马共和制是由哪三个机构组成的?%B9%C5%C2%DE%C2%ED%B9%B2%BA%CD%D 2020-04-27 …
MATLAB求解符号线性方程组时,结果误差很大?symsF1F2F3F4F5C1C2C3C4EID 2020-06-04 …
由全国日制普通高中教科书(必修)88页第4题,不难得到下面结论:设l1:A1x+B1y+C1=0与 2020-06-04 …
已知直线l1A1x+B1y+C1=0与直线l2:A2x+B2y+C2=0相交,则方程λ1(A1x+ 2020-07-09 …
圆c1(x+3)2+(y-1)2=4和圆c2(x-4)2+(y-5)2=4.存在过点P的无穷多对互 2020-07-09 …
两直线的位置关系关于平行的问题某书上说:若两条不重合的直线方程一般式为:L1:A1x+B1y+C1 2020-07-09 …
过直线L1:A1x+B1y+C1=0与L2:A2x+B2y+C2=0的交点的直线系方程为A1x+B 2020-07-20 …
点集C1,C2,C3,C4分别对应函数f1(x)=x+4,f2(x)=4+|x|,f3(x)=4− 2020-07-30 …
=SUMPRODUCT((Sheet1!A2:A40=E6)*(Sheet1!B2:B40=F6)* 2020-10-31 …
标况下,一升氮气中有m个氮原子,则阿伏加德罗常数为A(m/44.8)mol-1B11.2mmol-1 2020-10-31 …