急!matlab solve用法

想知道matlab中solve 和 subs的基本用法,现在有几个方程,想通过这些方程导出y关于x的表达式,可以做到么 谢谢了~~

在MATLAB中,solve函数主要是用来求解代数方程(多项式方程)的符号解析解。

用法示例:

solve(eq)

solve(eq, var)

solve(eq1, eq2, ..., eqn)

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

其中,eq代表一个符号表达式或字符串,var代表一个变量名称

详细的解释:

g=solve(eq)

函数求代数方程的符号解析解。参量eq表示符号表达式或字符串。若eq是一符号表达式或一没有等号的字符串,则函数对方程的默认变量求解方程eq=0,默认变量由命令findsym(eq)确定。若输出参量g为单一变量,则对于有多重解的非线性方程,g为一行向量。

g=solve(eq,var)

扩展资料

solve使用注意事项

1、solve解非代数方程的能力较弱,最好结合其他方式求解非代数方程

2、如果解得是一个方程组,而且采用了形如[a,b]=solve(a+b==1, 2*a-b==4,a,b) 的格式,那么,在MATLAB R2014a中没问题,可以保证输出的a,b就等于相应的解。

3、但是在R2012b等早先版本中不能保证输出的顺序就是你声明变量时的顺序。所以最好采用g=solve(a+b==1, 2*a-b==4,a,b)这种单输出格式,这样输出的是一个结构体,g.a和g.b就是对应的解。

温馨提示:内容为网友见解,仅供参考
第1个回答  2008-10-25
matlab的运行结果是:
0 -8.0000
-8.5000 - 0.8660i -0.0000 + 0.0000i
-8.5000 + 0.8660i -0.0000 - 0.0000i
上面的结果自身就是不正确的,我分析的原因是:matlab先求出了解析解,接着代入系数值,由于matlab运算精度低,系数又太多,公式极其复杂,从而导致结果失真过于严重

mathematica运行结果显示:mathematica先求出解析解,接着精确代入系数值计算,也出现了数量级为-16的误差,有部分失真,但是这个失真很容易发现,而得到修正

mathematica执行消去y的运算结果显示原方程组只能由三组解

借助mathematica的结果分析,可以得出:matlab的运行结果中,并没有丢失一组解,而是解的失真太为严重达到了0.1,
可以用下面的程序执行数值解:
function s=sss(p)
syms x y
a=p(1);
b=p(2);
c=p(3);
d=p(4);
e=p(5);
f=p(6);
g=p(7);
a1=simplify(c*x^2+c*x*y+(c*g-c*a-c*b+1)*x-a-e);
a2=simplify(d*y^2+d*x*y+(d*g-d*a-d*b+1)*y-b-f);
[x0,y0]=solve(a1,a2);
s=[x0 y0]

这个程序运行速度快且结果准确,
结果为
[ 0, 0]
[ 0, -8]
[ -13, 0]

注:可以看到新的程序输出结果是矩阵形式,而老程序的输出不是,问题很可能和eval的使用有关.
第2个回答  2018-07-19

主要是这个命令上的错误,['num2str(T0)*(0.9)^x=',num2str(Tend)]

最后一句代码应该这样改一下就可以了。

Time1=ceil(double(solve([num2str(T0),'*(0.9)^x=',num2str(Tend)]))) %计算迭代的次数

修改后执行结果

第3个回答  2018-06-28
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)
第4个回答  推荐于2018-02-27
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)本回答被提问者和网友采纳

急!matlab solve用法
在MATLAB中,solve函数主要是用来求解代数方程(多项式方程)的符号解析解。用法示例:solve(eq)solve(eq, var)solve(eq1, eq2, ..., eqn)g = solve(eq1, eq2, ..., eqn, var1, var2, ..., varn)其中,eq代表一个符号表达式或字符串,var代表一个变量名称 详细的解释:g=solve(eq)函数...

急!matlab solve用
Matlab中的solve函数是一个强大的工具,专门用于求解符号方程和方程组。该函数的基本用法是通过输入方程表达式和变量,返回变量的解。例如,如果你有一个方程组x^2 + y - 6 = 0 和 y^2 + x - 6 = 0,你可以这样编写程序:[x, y] = solve('x^2 + y - 6', 'y^2 + x - 6', '...

MATLAB solve函数用法
MATLAB solve函数主要应用于求解等式和不等式的解集,包括单变量、多变量以及线性、非线性方程。使用语法包括:S = solve(eqn, var) 或 S = solve(eqn, var, Name, Value) 求解单变量方程。Y = solve(eqns, vars) 或 Y = solve(eqns, vars, Name, Value) 求解包含多个变量的方程。示例包括...

matlab的solve用法
Matlab中solve函数主要是用来求解线性方程组的解析解或者精确解。对于得出的结果是符号变量,可以通过vpa()得出任意位数的数值解。solve函数的语法定义主要有以下四种:g = solve(eq1, eq2, ?, eqn, var1, var2, ?, varn)solve(eq1, eq2, ?, eqn)solve(eq, var)solve(eq)...

用matlab解二元二次方程组,可以直接用solve()函?
用matlab解二元二次方程组,可以直接用solve()函数来求解。例如:>>[x,y] = solve('x^2*y^2 - 2*x - 1 = 0','x^2 - y^2 - 1 = 0')运行结果 对于较复杂的方程,也可以用数值分析的方法,如fsolve()函数、二分法,牛顿法,求出其数值解。

matlab中调用solve函数出错?怎么解决
解决的办法是,定义符号变量lambda,然后把方程写成符号表达式从而代入l(i)、Re的值,再调用solve求解。2、下面的写法 for Re=linspace(4*10^3,10^7,100)Re作为循环控制变量,每次只取一个值,后面用semilogx绘图时,Re只是一个标量。3、使用vpa保留一定精度,得到的结果仍然是sym类型,不是数值类型...

MATLAB的solve函数求非线性解方程或方程组
MATLAB的solve函数是一个强大的工具,用于处理各种代数方程和非线性方程的求解任务。它的使用方法包括但不限于:单变量方程求解通过以下步骤,我们可以使用solve函数来求解一个单变量方程:编写程序:[x, sol] = solve(equation, variable)运行结果:程序执行后,输出变量x的解sol方程组求解对于方程组,其...

matlab的solve用法
Matlab中的solve函数主要针对的是代数方程的求解,尤其是多项式解,但对于非代数方程,如超越方程,其处理能力相对有限,只能给出特定的实数解。不过,solve并非仅限于此,它还能用于符号方程和方程组的求解,例如,你可以通过[x,y]=solve('x^2+y-6','y^2+x-6','x','y')来解一个方程组。在...

matlab的solve用法
基本用法 在MATLAB中,solve函数可以用来求解不同类型的方程,包括线性方程、非线性方程、常微分方程等。其基本语法是:matlab sol = solve 其中,`eqn`是要解的方程或表达式,`var`是方程中的变量。例如,求解方程x^2 - 4 = 0的根,可以使用如下命令:matlab syms x; % 定义符号变量x eqn = ...

怎么用Matlab解方程?
1、打开matlab,首先定义变量x:syms x;2、matlab中solve函数的格式是solve(f(x), x),求解的是f(x) = 0的解。第一个例子,求解最常见的一元二次方程x^2-3*x+1=0:solve(x^2-3*x+1,x),解出的结果用精确的根式表示。3、matlab解出的根不仅包含实根,也包含复根,例如求解三次方程x^...

相似回答