×

matlab解符号方程组

matlab解符号方程组(matlab中如何求解符号变量的非线性方程组的解,求大神赐教!!!代码如下:)

admin admin 发表于2024-01-29 02:12:07 浏览30 评论0

抢沙发发表评论

其实matlab解符号方程组的问题并不复杂,但是又很多的朋友都不太了解matlab中如何求解符号变量的非线性方程组的解,求大神赐教!!!代码如下:,因此呢,今天小编就来为大家分享matlab解符号方程组的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

本文目录

matlab中如何求解符号变量的非线性方程组的解,求大神赐教!!!代码如下:

matlab中如何求解符号变量的非线性方程组的解,对于简单明了的方程组可以用solve()求得。solve()求解格式为

eq1=f1(x,y,z),eq2=f2(x,y,z),eq3=f3(x,y,z)

solve(eq1,eq2,eq3)

但分析了你给出的代码,我觉得只能用数值的方法求解,得到其数值解。你想要解析值是有一定的难度。常用的数值方法,有二分法,牛顿法等等。

使用matlab中的solve函数求解符号方程组的问题

不知你的什么版本,我是2011a就告诉我no explicit solution即无解析解。没有出现你这种情况。这个方程组就是求两圆交点,顶多有两组解,你仔细看解出来的x第一个和x第二个是一模一样的。后两个也是一样的。我以前用低版本的matlab(7.0.1),似乎得到过你这样的解,但是现在用新版本的做就没有这样的问题。no explicit solution的话,需要求数值解了(matlab说没解析解,不等于你就算不出来了,它经常会告诉你没解析解的,不要吃惊)。其实你这里手算很好算的,何必让电脑去帮你做。matlab符号解方程的能力非常有限,只能够解很简单的有解析解的方程,它的优势在于数值运算,就是你给出除了x,y以外其他变量的数值然后让它解。

matlab求解符号变量方程组

有符号变量时,要用数学符号运算工具箱,先用syms定义变量,再用solve解方程。如:symsxx=solve(x^2-5*x+2==0)结果是:x=5/2-17^(1/2)/217^(1/2)/2+5/2

MATLAB求解符号线性方程组时,结果误差很大

原因

使用solve函数求解方程组,如果返回多个参数,则参数是按照字母顺序排列,而与你在输入参数表中指定的顺序无关。

 

可参考关于solve函数的文档:

    Three different types of output are possible.  For one equation and one    output, the resulting solution is returned, with multiple solutions to    a nonlinear equation in a symbolic vector.  For several equations and    an equal number of outputs, the results are sorted in lexicographic    order and assigned to the outputs.  For several equations and a single    output, a structure containing the solutions is returned.

 

建议

一种方式是,修改solve函数的输出参数顺序:

=solve(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,’F1’,’F2’,’F3’,’F4’,’F5’,’C1’,’C2’,’C3’,’C4’,’D2’,’D3’,’D4’)

或者,按照下面的方式返回参数:

s=solve(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,’F1’,’F2’,’F3’,’F4’,’F5’,’C1’,’C2’,’C3’,’C4’,’D2’,’D3’,’D4’);fns = fieldnames(s);for i=1:length(fns)    eval();end

如何用matlab求解常微分方程matlab解常微分方程之符号解法介绍

应该如何用matlab求解常微分方程?MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。用matlab可以解决许多数学问题,如果用得好的话,老师布置的数学作业就不用愁了。接下来小编将给大家介绍matlab解常微分方程之符号解法,一起去看看吧!

matlab解常微分方程——符号解法:

1、首先得介绍一下,在matlab中解常微分方程有两种方法,一种是符号解法,另一种是数值解法。在本科阶段的微分数学题,基本上可以通过符号解法解决。

2、用matlab解决常微分问题的符号解法的关键命令是dslove命令。该命令中可以用D表示微分符号,其中D2表示二阶微分,D3表示三阶微分,以此类推。值得注意的是该微分默认是对自变量t求导,也可以很容易在命令中改为对其他变量求导。

3、说了半天,该命令的最完整的形式如下。r=dsolve(’eqn1’,’eqn2’,...,’cond1’,’cond2’,...,’var’).解释如下:eqni表示第i个微分方程,condi表示第i个初始条件,var表示微分方程中的自变量,默认为t。

4、解释了半天,不如用实例来说明。下面以解决一个简单的微分方程入手。方程如下。

5、首先启动matlab软件,在命令行中欢快地敲入

dslove(‘Dy=3*x*x’,‘x’),然后轻松地摁一下键盘上的enter建,最后答案就蹦出来了。

6、下面,我们来加大难度,在上面的方程条件下加入初始条件x=0时,y=2。

只需在相同的命令中加入一个条件语句就可以了。命令形式为

dslove(‘Dy=3*x*x’,‘y(0)=2’,‘x’)。可以看到答案中的常数项

C2已经变成了2。

7、最后,我再加大一下难度。这次来求一个微分方程组。方程组如下。初始条件为x(0)=2,y(0)=1,dy(0)=1.

8、在命令中只需改一下相应的方程与条件即可以了,由于是对t求导,所以可以用默认,不需要在末尾添加‘t’。

9、可以看到用matlab中的dslove命令确实可以解决许多常微分问题。

教程结束,以上就是关于如何用matlab求解常微分方程?matlab解常微分方程之符号解法介绍。如果你还不知道如何用matlab求解常微分方程,那就按照以上方法试试吧!更多matlab使用技巧,尽在我们网站哦!

Matlab线性方程组求符号解

1、存在两个错误:(1)变量a3y、y6、x6未定义;(2)方程e9中的项f23x(y2-y4)少了个乘号,这样会导致(y2-y4)被理解为数组的索引。改正上述两个错误后即可求解得到正确的结果。

 

2、方程不建议写成楼主贴出来的形式,最好直接写成类似下面这样:

e1=fox+f12x-m1*a1x;e2=foy+f12y-m1*a1y;e3=f12x*y1+f12y*x1-M1-j1*a1;...

使用这种表达方式能够检查出前面所说的错误。

 

3、楼主所遇到的问题“求出的fox包含其中一些未知数”,是因为,存在前述错误的条件下,其实是求不出显式解(Explicit solution)来的。而在不能求出显式解的情况下,不同的符号运算内核采取了不同的处理手段:Maple内核会直接告诉你求不出显式解,MuPad内核则经常是给出错误的结果(类似这种求出来的解当中还包含未知数情况)。相信大多数人应该更愿意接受Maple的处理方式。MATLAB R2008a之前的版本用的是Maple内核,R2008b之后改用MuPad内核,但仍然保留了Maple内核,可以通过symengine切换。从R2010a开始,则只支持MuPad内核。总体上,Maple内核比MuPad内核更优秀,如果经常使用符号运算,建议使用2010a甚至2008a之前的版本(事实上,我个人经常用的是10年前的6.5版)。

 

很用心地写了这些(提到的版本更替信息都认真做了核实),希望对楼主有帮助。

matlab 求助 解方程组

一。用matlab 中的solve函数 》》syms x y; %定义两个符号变量; 》》=solve(’y=2*x+3’,’y=3*x-7’);%定义一个 2x1 的数组,存放x,y 》》x 》》x=10.0000 》》y 》》y=23.0000二。用matlab 中的反向斜线运算符(backward slash) 分析: 方程组可化为 2*x-y=-3; 3*x-y=7; AX=B (*) A=; X=A\B %可以看成将(*)式左边都除以系数矩阵A 》》A=; 》》B=; 》》X=A\b X = 10.0000 % x = 10.0000 23.0000 % y = 23.0000

用matlab怎样解二阶符号微分方程

求解一阶ODE的代码是很直接的。然而,二阶或者三阶的ODE不能够直接应用求解。你必须先将高阶的ODE改写成一阶的ODEs系统,使得它可以采用MATLAB ODE求解器。 这是一个如何将二阶微分方程改写成两个一阶微分方程以便利用MATLAB的诸如ODE45等求解器求解的例子。下面的方程组包含了一个一阶与一个二阶微分方程: x’= - y*exp(-t/5)+y’ * exp(-t/5)+1; (1) y’’= -2*sin(t); (2) 第一步是引入一个新的变量,使得它等于具有二阶导数的自由变量的一阶导数: z=y’ (3) 对上式两边求导如下: z’ = y’’ ; (4) 将(4)式带入(2)式得到如下方程: z’= -2*sin(t) (5) 联立(1),(3)与(5)得到三个一阶微分方程: x’= - y*exp(-t/5)+y’ * exp(-t/5)+1; (1) z=y’; (3) z’= -2*sin(t) (5) 既然 z=y’ ,用z代替等式(1)中的y’ 。而且,因为MATLAB要求所有的导数项在左边,改写等式(3)。得到如下的方程组: x’= - y*exp(-t/5)+z* exp(-t/5)+1; (1a) y’=z ; (6a) z’= -2*sin(t); (5a) 为了利用ODE45或者是MATLAB的其他的ODE求解器求解上面的方程组,需要建立一个包含这些微分方程的函数。这个函数需要两个输入:状态量与时间,返回状态的微分,建立命名为odetest.m的函数如下: function xprime=odetest(t, x) % 既然状态量以单个向量的形式输入,我们令: % x(1)=x; % x(2)=y; % x(3)=z; xprime(1)=-x(2)* exp(-t/5)+x(3)*exp(-t/5)+1; % x’= - y*exp(-t/5)+z* exp(-t/5)+1; xprime(2)=-x(3); % y’=z xprime(3)=-2×sin(t); % z’= -2*sin(t) xprime=xprime(:); % 这是为了确保返回的是个列向量 采用ODE23或者另外的MATLAB ODE求解器求解方程系统,定义起始和停止时间以及初识的状态向量。例如: t0 = 5 ; % 起始时间 tf = 20 ; % 停止时间 x0 = ; % 初识条件 , x0) ; x = s (: , 1 ); y = s (: , 2 ); z = s (: , 3 );

matlab解符号方程组

我把程序稍微给你改动了一下,跑出结果来了~~~clear;clc;sym T;k1=0.49;k_1=1755;k2=9.2;k3=40;k_3=0.5;k4=4.6;k5=5;k6=40;k_6=0.5;k7=4.6;k8=5;f1=’k_1*b+k8*z-k1*T*a’;f2=’k1*T*a-k_1*b-k2*T*b’;f3=’k2*T*b+k_3*f-k3*c’;f4=’k3*c-k_3*f-k4*f’;f5=’k4*f-k5*g’;f6=’k5*g+k_6*y-k6*x’;f7=’k6*x-k_6*y-k7*y’;f8=’k7*y-k8*z’;solve(f1,f2,f3,f4,f5,f6,f7,f8)

Matlab求解急!

一、求解常微分方程的符号解,可以使用dsolve()函数。


dsolve的使用格式:S = dsolve(eqn)

题7(1):

syms x(t) y(t)

D2x=diff(x,2);D2y=diff(y,2);

=dsolve(D2x==3*y,D2y==-5*x)

二、用符号法求解线性方程组的解,可以使用solve()函数。


solve的使用格式:S = solve(eqn,var)

题8(1)- b:

=solve(eq1,eq2,eq3)

eq1—x+y+z=10

eq2—3*x+2*y+z=14

eq3—2*x+3*y-z=1

三、用fzero函数求解非线性方程的解


fzero的使用格式:x = fzero(fun,x0)

题8(2):

fun = @(x)x-sin(x)/x; 

x0 = 0.5; 

x = fzero(fun,x0)


运行结果

文章分享结束,matlab解符号方程组和matlab中如何求解符号变量的非线性方程组的解,求大神赐教!!!代码如下:的答案你都知道了吗?欢迎再次光临本站哦!