MATlab用M文件解方程问题

本人初学MATLAB,要求用M函数建立图中这些方程(部分)

,我自己写的函数是
syms F12x F12y F32x F32y F43x F43y M12 ac2x ac2y ac3x ac3y D2(r1) alpha2 alpha3
r2=0.0575;
r3=0.21;
m2=13.318;
m3=1.4762;
rc2=0.250;
rc3=0.850;
I2=0.8324;
I3=1.0666;
[F12x,F12y,F32x,F32y,F43x,F43y,M12,ac2x,ac2y,ac3x,ac3y,D2(r1),alpha2,alpha3]=solve(F12x+F32x=m2*ac2x,F12y+F32y=m2*ac2y,-F32x*r2*sin(theta2)+F32y*r2*cos(theta2)+M12=I2*alpha2,-F32x+F43x=m3*ac3x,-F32y+F43y=m3*ac3y,-F43x*(r3-rc3)*sin(theta3)+F43y*(r3-rc3)*cos(theta3)-F32x*rc3*sin(theta3)+F32y*rc3*cos(theta3)=I3*alpha3,-F43x+Fext=m4*D2(r1),-F43y+F14y=0,r1=r2*cos(theta2)+r3*cos(theta3),r2*sin(theta2)+r3*sin(theta3)=0,D2(r1)+r3*sin(theta3)*alpha3+r2*sin(theta2)*alpha2=-r2*cos(theta2)*omega2^2-r3*cos(theta3)*omega3^2-r3*cos(theta3)*alpha3+r2*cos(theta2)*alpha2=-r2*sin(theta2)*omega2^2-r3*sin(theta3)*omega3^2,ac2x=-rc2*alpha2*sin(theta2)-rc2*omega2^2*cos(theta2),ac2y=rc2*alpha2*cos(theta2)-rc2*omega2^2*sin(theta2),ac3x=-rc3*alpha3*sin(theta3)-rc3*omega3^2*cos(theta3)-r2*alpha2*sin(theta2)-r2*omega2^2*cos(theta2),ac3y=-rc3*alpha3*cos(theta3)-rc3*omega^2*sin(theta3)+r2*alpha2*cos(theta2)-r2*omega2^2*sin(theta2));
end
结果运行出来很多错误
s10: Parse error at '=' appears to be invalid MATLAB syntax10: Parse error at '=' appears to be invalid MATLAB syntax10: Parse error at '=' appears to be invalid MATLAB syntax10: Parse error at '=' appears to be invalid MATLAB syntax10: Parse error at '=' appears to be invalid MATLAB syntax10: Parse error at '=' appears to be invalid MATLAB syntax10: Parse error at '=' appears to be invalid MATLAB syntax10: Parse error at '=' appears to be invalid MATLAB syntax10: Terminate line with semicolon to suppress output10: Parse error at '=' appears to be invalid MATLAB syntax10: Parse error at '=' appears to be invalid MATLAB syntax10: Terminate line with semicolon to suppress output10: Terminate line with semicolon to suppress output10: Terminate line with semicolon to suppress output10: Parse error at ')' appears to be invalid MATLAB syntax
求教高手告诉我哪里有问题啊

首先感慨楼主有雄心在初学时就编写那么难的命令,还是要一步步来的。以下是相关建议,我没有具体修改你的,只运行了一下,仅凭经验提建议:

1. syms 函数定义D2(r1)时不对,变量名或符号名中不应该含有括号,matlab的括号特指数组元素调用和函数变量调用等,你可以用D2_r1来代替。

2. solve函数的使用不对。你需要参考帮助文件或者百度文库的一些关于“matlab解方程”的课件,可以先编制一个求解简单方程(如x+1=0等)的程序或命令来熟悉solve的用法,包括函数输入参量的格式。

3. 鉴于你是求解复杂方程组,建议你使用M-文件(方程存储包括M-文件。匿名函数和inline等格式)存贮方程组,如果想在命令窗口直接求解,等号是不必要的。

4. 这里求解一个简单方程x+1=100的解为x0

syms x
x0=solve(x+1-100,x)

一个非线性方程的例子C2*x^2+C1*x=C0的解x1,x2

syms C0 C1 C2 x
solve(C2*x^2+C1*x-C0,x)

再送一个方程组的求解的解

syms x y
result=solve(x^2-x+3,y+1,x,y);
result.x

result.y

附录 System of Equations 格式(摘自help文件):
g =solve(eq1,eq2,...,eqn,var1,var2,...,varn)追问

因为我要建立一个M文件运行这个仿真,我按照你给的格式在后面加了14个要求的位置未知量......*alpha2*cos(theta2)-r2*omega2^2*sin(theta2)',F12x,F12y,F32x,F32y,F43x,F43y,F14x,M12,D2(r1),alpha3,ac2x,ac2y,ac3x,ac3y);,

  其中D2(r1)这里应该代表二阶导数,因为我要运行一个simulink仿真,如图

    但是维数还是对不上。这个M文件要输出14个未知量,能帮我看看什么原因么。

追答

看起来你是想接一个二阶振动方程,如果是一般求解推荐使用ode45等函数快捷。我没有具体做过仿真,只是见过相关资料。推荐参考书《基于MATLAB/Simulink的系统仿真技术与应用》很实用。

另外变量的导数貌似不是使用D2(r1) 的表达方式吧,我常用的是:diff()等。

能力不足帮不上太大的忙,不好意思哈

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-10-22
function y=zhongy(x) % 保存为 zhongy.m 文件
y=[2*x(1)-x(2)-exp(-x(1));
-x(1)+2*x(2)-exp(-x(2))];
------------------------------------------------------------
[x,fval,exitflag]=fsolve('zhongy',[0.1;0.1])
% x 为所求的解
%fval为解代入方程的验证结果
% exitflag=1表示函数收敛于解;反之,=0
第2个回答  2013-05-08
语法错误 你好好看看 好像错误类型都是一样的
最后一句omega2^2*sin(theta2)); 多了一个)
其他前面的错误在=这里 自己检查一下
语法检查过后要学会调试
相似回答