求高手用matlab解一个三元的方程组
2个回答
展开全部
方程无解梁陪。可以很简单地画出两个方程的曲线来:
ezplot('-0.050+0.015+0.070-2.*(d.*0.0215).^0.5-2.*(p.*0.0504).^0.5',[-0.02 0.02])
hold on
ezplot('-0.015+d+p',[-0.02 0.02])
由图可见,两条游渣空线无交点,也就意味着方程组无解。
或者换另一种方式来分析:把方程1代入方程2:
syms d p
eq1=-0.015+d+p;
eq2=-0.050+0.015+0.070-2.*(d.*0.0215).^0.5-2.*(p.*0.0504).^0.5;
d=solve(eq1,d)
eq=subs(eq2,d,d)得到方程:
>> eq=subs(eq2,d,d)
eq =
7/200 - 2*(129/400000 - (43*p)/2000)^(1/2) - 2*((63*p)/1250)^(1/2)方程中两个包含p的项都要进行开平方,应该大于0,即:
(63*p)/1250
>=
0
129/400000
-
(43*p)/2000
>=
0
联立解得
0<=p<=0.015,画出该方程的曲线如神瞎下:
不可能与0轴相交,也即方程无解。
ezplot('-0.050+0.015+0.070-2.*(d.*0.0215).^0.5-2.*(p.*0.0504).^0.5',[-0.02 0.02])
hold on
ezplot('-0.015+d+p',[-0.02 0.02])
由图可见,两条游渣空线无交点,也就意味着方程组无解。
或者换另一种方式来分析:把方程1代入方程2:
syms d p
eq1=-0.015+d+p;
eq2=-0.050+0.015+0.070-2.*(d.*0.0215).^0.5-2.*(p.*0.0504).^0.5;
d=solve(eq1,d)
eq=subs(eq2,d,d)得到方程:
>> eq=subs(eq2,d,d)
eq =
7/200 - 2*(129/400000 - (43*p)/2000)^(1/2) - 2*((63*p)/1250)^(1/2)方程中两个包含p的项都要进行开平方,应该大于0,即:
(63*p)/1250
>=
0
129/400000
-
(43*p)/2000
>=
0
联立解得
0<=p<=0.015,画出该方程的曲线如神瞎下:
不可能与0轴相交,也即方程无解。
展开全部
我算的你这个解都是无穷大。具体过程如下:
第一步:建立M文件函数myf.m
function
f=myf(x)
f(1)=600+x(1)*cos(10)+x(2)*sin(40)-x(3);
f(2)=(x(3)*sin(65)+x(2)*sin(40)+x(1)*cos(10))^2+(x(3)*cos(65)+x(2)*cos(40)+x(1)*cos(10))^2-5200^2;
f(3)=x(1)*sin(60)+x(2)*sin(80)+x(3)-600-4500;
第二步:用不动点迭代法解上述方程。
建立M文件函数mulStablepoint:
function
[r,n]=mulStablepoint(x0,eps)
if
nargin==1;
eps=1.0e-4;
end
r=myf(x0);
n=1;
tol=1;
while
tol>eps
x0=r;
r=myf(x0);
tol=norm(r-x0);
n=n+1;
if(n>100000)
disp('迭代次数太禅滚多,可能不收敛!'贺枣余)
return;
end
end
第三步,岩没在命令窗口输入命令
[r,n]=mulStablepoint([0,0,0])
最后得到:
r
=
Inf
Inf
-Inf
n
=
8
第一步:建立M文件函数myf.m
function
f=myf(x)
f(1)=600+x(1)*cos(10)+x(2)*sin(40)-x(3);
f(2)=(x(3)*sin(65)+x(2)*sin(40)+x(1)*cos(10))^2+(x(3)*cos(65)+x(2)*cos(40)+x(1)*cos(10))^2-5200^2;
f(3)=x(1)*sin(60)+x(2)*sin(80)+x(3)-600-4500;
第二步:用不动点迭代法解上述方程。
建立M文件函数mulStablepoint:
function
[r,n]=mulStablepoint(x0,eps)
if
nargin==1;
eps=1.0e-4;
end
r=myf(x0);
n=1;
tol=1;
while
tol>eps
x0=r;
r=myf(x0);
tol=norm(r-x0);
n=n+1;
if(n>100000)
disp('迭代次数太禅滚多,可能不收敛!'贺枣余)
return;
end
end
第三步,岩没在命令窗口输入命令
[r,n]=mulStablepoint([0,0,0])
最后得到:
r
=
Inf
Inf
-Inf
n
=
8
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询