matlab解含已知量的方程组

来源:百度知道 编辑:UC知道 时间:2024/06/14 05:38:46
eq1='l*x+k*y+n*m=0';
>> eq2='x^2+y^2+n^2=0';
>> l=0.15;
>> k=0.087;
>> n=0;
>> [x,y]=solve(eq1,eq2,'x,y')

x =

-n*(1/2*k/(k^2+l^2)*(-2*m*k+2*(-k^2*l^2-l^2*m^2-l^4)^(1/2))+m)/l
-n*(1/2*k/(k^2+l^2)*(-2*m*k-2*(-k^2*l^2-l^2*m^2-l^4)^(1/2))+m)/l

y =

1/2/(k^2+l^2)*(-2*m*k+2*(-k^2*l^2-l^2*m^2-l^4)^(1/2))*n
1/2/(k^2+l^2)*(-2*m*k-2*(-k^2*l^2-l^2*m^2-l^4)^(1/2))*n
既然l ,k , m 都是已知的量,请问最终的结果解出的x和y中还有l,k,m呢而不是一个明确的数值。如果想直接出来具体的数值,请问程序应该做何改动呢

哦 这个有好几个方法,你求解出x,y后对
l k m n赋值,再使用subs或者eval命令就可以了命令,如下
%其中subs是,自动将字母替换为状态空间中的的数值
%eval是计算字符串的表达式,返回字符串的结果
%by dynamic
%see also http://www.matlabsky.com
%contact me matlabsky@gmail.com
%2009.2
%
eq1='l*x+k*y+n*m=0';
eq2='x^2+y^2+n^2=0';
[x,y]=solve(eq1,eq2,'x','y') ;
l=6;
k=5;
n=1;
m=1;
subs(x)
subs(y)

ans =

-0.0984 - 0.6454i
-0.0984 + 0.6454i

ans =

-0.0820 + 0.7745i
-0.0820 - 0.7745i

eval(x)
eval(y)

首先定义m,可用如下方法。
syms m
然后再使用命令
eval(x)
eval(y)

clc;clear;
l=0.15;
k=0.087;
n=0;
syms x y m
eq1=l*x+k*y+n*m
eq2=x^2+y^2+n^2
[x,y]=solve(eq1,eq2,'x,y')

结果:

eq1 =

3/20*x+87/1000*y

eq2 =