用Matlab的solve函数解方程组时如何限定某些参数为实数,某些参数为复数?使得对应的解只能为实数和复数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用Matlab的solve函数解方程组时如何限定某些参数为实数,某些参数为复数?使得对应的解只能为实数和复数?相关的知识,希望对你有一定的参考价值。

我的意思是说使其在解出来的时候就是实数,而不是对解出来的复数取实部或虚部。

参考技术A real(ans)求结果实部,imag(ans)求结果虚部.

matlab——符号方程求解

符号方程求解

代数方程符号求解

在MATLAB中,求解用符号表达式表示的代数方程可由函数
solve()实现,其调用格式为:
① solve(s):求解符号表达式s的代数方程,求解变量为
默认变量。
② solve(s,v):求解符号表达式s的代数方程,求解变量
为v。
③ solve(s1,s2,…,sn,v1,v2,…,vn):求解符号表达式
s1,s2,…,sn组成的代数方程组,求解变量分别为v1,
v2,…,vn。

例1 解方程
ax^2+bx+c=0

>> syms x y a b c; 
%方法1
>> solve(a*x^2+b*x+c==0)
ans =
-(b + (b^2 - 4*a*c)^(1/2))/(2*a)
-(b - (b^2 - 4*a*c)^(1/2))/(2*a)
%方法二
>> f=a*x^2+b*x+c
>> solve(f)
ans =
-(b + (b^2 - 4*a*c)^(1/2))/(2*a)
-(b - (b^2 - 4*a*c)^(1/2))/(2*a)

注意:solve()函数求解方程时,所得到的结果不一定准确。
如果不正确,转化后在求解

>> syms x y;
>> [u,v]=solve(x+y==98,x^(1/3)+y^(1/3)==2)
u =
Empty sym: 0-by-1
v =
Empty sym: 0-by-1

转化过后,再解方程:

>> syms x y;
>> u=solve(x+(2-x^(1/3))^3==98)
u =
125
>> v=98-u
v =
-27

常微分方程符号求解

 在MATLAB中,用大写字母D表示导数。例如,Dy表示y',D2y表示y'',
Dy(0)=5表示y'(0)=5。D3y+D2y+Dy-x+5=0表示微分方程y'''+y''+y'-x+5=0。
 符号常微分方程求解可以通过函数dsolve()函数来实现,其调用格式为:
dsolve(e,c,v)
用于求解常微分方程e在初值条件c下的特解。参数v是方程中的自变量,省
略时按默认原则处理,若没有给出初值条件c,则求方程的通解。
 dsolve在求常微分方程组时的调用格式为:
dsolve(e1,e2,…,en,c1,c2,…,cn,v)
用于求解常微分方程组e1, e2, …, en在初值条件c1, c2, …, cn下的特解,若不
给出初值条件,则求方程组的通解。v给出求解变量,如果没有指定自变量则采用默认自变量t。

>> syms x y t;
>> y=dsolve('Dy-(x^2+y^2)/x^2/2',x)
y =
x
-x*(1/(C5 + log(x)/2) - 1)
>> [x,y]=dsolve('Dx=4*x-2*y','Dy=2*x-y',t)
x =
C8/2 + 2*C7*exp(3*t)
y =
C8 + C7*exp(3*t)

以上是关于用Matlab的solve函数解方程组时如何限定某些参数为实数,某些参数为复数?使得对应的解只能为实数和复数?的主要内容,如果未能解决你的问题,请参考以下文章

matlab的solve用法

MATLAB 中如何用solve函数解数目不定的方程组???

matlab的solve用法

matlab用solve解方程组,解出来有很多组解,如何编程只保留全部未知数都大于0的一组解(该方

MATLAB中solve函数最多解多少个方程

matlab的solve函数得不到数值解