MATLAB程序问题解一个方程组如下syms x y z t a b c d m s; f = x+z-a;g = (2^(1/2)*m*x)/2 + (2^(1/2)*m*y)/2+(2^(1/2)*m*t)/2 - (2^(1/2)*m*z)/2-b;h = m^2*(y- t)-m^2*c;k = (2^(1/2)*m^3*(y-x+z+t))/2-m^2*d;[x,y,z,t] = solve(f,g,h,k); x = simplify(

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/03 03:21:55
MATLAB程序问题解一个方程组如下syms x y z t a b c d m s; f = x+z-a;g = (2^(1/2)*m*x)/2 + (2^(1/2)*m*y)/2+(2^(1/2)*m*t)/2 - (2^(1/2)*m*z)/2-b;h = m^2*(y- t)-m^2*c;k = (2^(1/2)*m^3*(y-x+z+t))/2-m^2*d;[x,y,z,t] = solve(f,g,h,k); x = simplify(

MATLAB程序问题解一个方程组如下syms x y z t a b c d m s; f = x+z-a;g = (2^(1/2)*m*x)/2 + (2^(1/2)*m*y)/2+(2^(1/2)*m*t)/2 - (2^(1/2)*m*z)/2-b;h = m^2*(y- t)-m^2*c;k = (2^(1/2)*m^3*(y-x+z+t))/2-m^2*d;[x,y,z,t] = solve(f,g,h,k); x = simplify(
MATLAB程序问题
解一个方程组如下
syms x y z t a b c d m s;
f = x+z-a;
g = (2^(1/2)*m*x)/2 + (2^(1/2)*m*y)/2+(2^(1/2)*m*t)/2 - (2^(1/2)*m*z)/2-b;
h = m^2*(y- t)-m^2*c;
k = (2^(1/2)*m^3*(y-x+z+t))/2-m^2*d;
[x,y,z,t] = solve(f,g,h,k);
x = simplify(x),
y = simplify(y),
z = simplify(z),
t = simplify(t)
x =
(2^(1/2)*(b + d))/(4*m) - c/2
y =
a/2 + (2^(1/2)*(b - d))/(4*m)
z =
c/2 + (2^(1/2)*(b + d))/(4*m)
t =
a/2 - (2^(1/2)*(b - d))/(4*m)
将x,z带入f方程,明显不成立,运行给的这个答案把x,y 的值和z,t的对调了.求教原因?

MATLAB程序问题解一个方程组如下syms x y z t a b c d m s; f = x+z-a;g = (2^(1/2)*m*x)/2 + (2^(1/2)*m*y)/2+(2^(1/2)*m*t)/2 - (2^(1/2)*m*z)/2-b;h = m^2*(y- t)-m^2*c;k = (2^(1/2)*m^3*(y-x+z+t))/2-m^2*d;[x,y,z,t] = solve(f,g,h,k); x = simplify(
楼上的回答存在问题.
 
诚然,Mathematica在符号运算方面总体上优于MATLAB,推荐使用Mathematica没问题;但楼上关于MATLAB符号运算的说法却纯粹是想当然,像这样误导人的做法以后还是应该少一些.
 
其实,当solve返回多个输出参数的时候,其顺序是按照字母表顺序,而不是你通过输入参数指定的变量顺序,也不是楼上所说的【按照变量出现的先后顺序】.所以不小心很容易搞错(对于当前这个例子没问题).
 
从solve函数的说明中摘录一段:
>> help solve
 SOLVE  Symbolic solution of algebraic equations.
    . 
    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.

现在应该明白怎么做了吧?调用时应该是
[t,x,y,z] = solve(f,g,h,k);
再检验一下结果看看:
f=simple(subs(f))
g=simple(subs(g))
h=simple(subs(h))
k=simple(subs(k)) 

f = 

g =

h =

k = 
0
 
比 较好的做法是返回一个输出参数,该参数为结构体,然后再获得结构体的域即可:
s=solve(.);
fns = fieldnames(s);
for i=1:length(fns)
    eval([fns{i} '=s.' fns{i}]);
end
在MATLAB中同样也可以用一个命令解决:
>> s=solve('x+z-a', '(2^(1/2)*m*x)/2 + (2^(1/2)*m*y)/2+(2^(1/2)*m*t)/2 - (2^(1/2)*m*z)/2-b', 'm^2*(y- t)-m^2*c', '(2^(1/2)*m^3*(y-x+z+t))/2-m^2*d')
s =
    t: [1x1 sym]
    x: [1x1 sym]
    y: [1x1 sym]
    z: [1x1 sym]
后面用s.t、s.x之类的符号就可以引用求得的结果了.

matlab问题!我是初学者,编一个function函数来解一个方程组.方程组如下:Wx、Wy和Wz为已知量(程序当中的u),会输入函数当中自己编的程序如下:function y = fcn(u)%#codegenw0=0.001;u1=u(1);u2=u(2);u3=u(3);sy 一个matlab程序有问题解一个微分方程组,大家看看我的程序有何问题?m文件:function dv=eq(t,y) dy=[y(2);(-3.986e+014*y(1))/((y(1))^2+(y(3))^2)^1.5;y(4);(-3.986e+014*y(3))/((y(1))^2+(y(3))^2)^1.5];下面是程序:[t,y]=ode45( MATLAB程序问题解一个方程组如下syms x y z t a b c d m s; f = x+z-a;g = (2^(1/2)*m*x)/2 + (2^(1/2)*m*y)/2+(2^(1/2)*m*t)/2 - (2^(1/2)*m*z)/2-b;h = m^2*(y- t)-m^2*c;k = (2^(1/2)*m^3*(y-x+z+t))/2-m^2*d;[x,y,z,t] = solve(f,g,h,k); x = simplify( 偏微分方程组的MATLAB解法?一个带边界的偏微分方程组,如何用matlab求其数值解?最好有MATLAB程序? 如何用matlab画一个微分方程组的图,具体要求如下 求教MATLAB解方程组问题想请教一个MATLAB的问题,方程如下aF(q)+bF(q+i)=c dF(i)+eF(q+i)=f abcdef都是已知数,F(x)为正态分布函数 能用MATLAB求出q 和i 能的话是程序怎么写啊? 用Matlab能求解二元二阶微分方程组,求Matlab程序!方程组如图. matlab矩阵求求解微分方程组{用matlab编程}数值求解微分方程组求程序 求这个二元微分方程组的MATLAB程序 用matlab解微分方程组,怎么写程序呢? matlab编写非线性方程组求根的二分法程序 利用matlab编写非线性方程组求根的二分法程序 Matlab解三元方程组问题解三元方程组问题:449.15=x/(1-y*exp(-1995*z))701.24=x/(1-y*exp(-2000*z))827.75=x/(1-y*exp(-2005*z)) matlab中用高斯消元法接方程组程序方程组如下:10 -1 2 0】 6-1 11 -1 3】 25 2 -1 10 -1】 -110 3 -1 8】 15左边的是矩阵A,右边的是b matlab 如何解三角函数的方程组 式子如下 y 如何用MATLAB求解如下代数黎卡提方程组? 请各位大侠问在matlab里以一个圆的轨迹上的点再画一个半圆轨迹,该咋画啊?我如下的程序,显示不出来啊.我是matlab初学者.clear allx0=0;y0=0;seta1=0:0.001:1*pi;x1=5*cos(seta1);y1=5*sin(seta1);alpha=0:0.01:0.5*pi;x2 我在编matlab程序的过程中,需要用ode45解一个一阶微分方程组,我在编matlab程序的过程中,需要用ode45解一个一阶微分方程组,关键问题是这个方程组的系数需要前面的程序传进去,所以我不会用,