matlab的solve用法

定义syms x y a1 a2
equ1=1/120 - ((2*a2)/81 + (pi*a1)/12 + pi^2*(a2/405 + 1/12) + (pi^3*a1)/120)/pi^4
equ2=-(a2/128 + (2*pi*a1)/81 + pi^2*(a2/960 + 2/81) + (pi^3*a1)/405 - pi^4/405)/pi^5
输入solve('方程1', '方程2',, 'a1', 'a1')
为什么最后a1和a2 有时候不是数值,而是仅仅只是a1 和a2

在matlab里面solve命令主要是用来求解代数方程(即多项式)的解,但是也不是说其它方程一个也不能解,不过求解非代数方程的能力相当有限,通常只能给出很特殊的实数解。(该问题给出的方程就是典型的超越方程,非代数方程)

拓展资料:

1、solve 这个命令用来求解符号方程、方程组等。
x=solve('eqn1','eqn2',...,'var1','var2',...)
例子:
解方程组:x^2+y-6=0;y^2+x-6=0
程序设计:[x,y]=solve('x^2+y-6','y^2+x-6','x','y') 

2、subs可以把符号表达式里面的符号变量替换为新的变量
F=subs(f,old,new)
例子:
用符号表达式计算x^2+x-1在x=2时的值
程序设计:g=sym('x^2+x-1');
G=subs(g,'x',2)

3、从计算机的编程实现角度讲,如今的任何算法都无法准确的给出任意非代数方程的所有解,但是我们有很多成熟的算法来实现求解在某点附近的解。

4、matlab也不例外,它也只能给出任意非代数方程在某点附近的解,函数有两个:fzero和fsolve,具体用法请用help或doc命令查询吧。

5、如果还是不行,你还可以将问题转化为非线性最优化问题,求解非线性最优化问题的最优解,可以用的命令有:fminbnd, fminsearch, fmincon等等。

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-05-31

Matlab中solve函数主要是用来求解线性方程组的解析解或者精确解。

    对于得出的结果是符号变量,可以通过vpa()得出任意位数的数值解。

    solve函数的语法定义主要有以下四种:

    g = solve(eq1, eq2, …, eqn, var1, var2, …, varn)

    solve(eq1, eq2, …, eqn)

    solve(eq, var)

    solve(eq)

拓展资料:

MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。

它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。

本回答被网友采纳
第2个回答  2015-07-06
1、solve 这个命令用来求解符号方程、方程组等。
x=solve('eqn1','eqn2',...,'var1','var2',...)
例子:
解方程组:x^2+y-6=0;y^2+x-6=0
程序设计:[x,y]=solve('x^2+y-6','y^2+x-6','x','y')
2、subs可以把符号表达式里面的符号变量替换为新的变量
F=subs(f,old,new)
例子:
用符号表达式计算x^2+x-1在x=2时的值
程序设计:g=sym('x^2+x-1');
G=subs(g,'x',2)
第3个回答  2012-10-21
%kkkkaaaa67720| 五级 回答正确。详细步骤是:

syms x y a1 a2
equ1=1/120 - ((2*a2)/81 + (pi*a1)/12 + pi^2*(a2/405 + 1/12) + (pi^3*a1)/120)/pi^4
equ2=-(a2/128 + (2*pi*a1)/81 + pi^2*(a2/960 + 2/81) + (pi^3*a1)/405 - pi^4/405)/pi^5
[a1,a2]=solve(equ1, equ2, 'a1', 'a2')
a1=vpa(a1)
a2=vpa(a2)

运行结果:
a1 = -50761304626263552301236414542950/140129736313387243/(2814749767106560*pi+8727491006471547)

a2 = -675/280259472626774486

a1 = -.20616910499519232147350835793861e-1
a2 = -.24084823741137452008216073646926e-14本回答被提问者和网友采纳
第4个回答  2012-10-21
你没有把solve的结果赋给a1和a2;
[a1 a2] = solve(equ1,equ2)
这样就行了。
相似回答