function定义函数运行时总是出错,怎么修改代码?
最近在做课程设计,要用Matlab的fsolve功能解一个非线性方程组,所以用function想建立一个m文件,让matlab调用,但是matlab老是要报错,对照例子修...
最近在做课程设计,要用Matlab的fsolve 功能解一个非线性方程组,所以用function想建立一个m文件,让matlab调用,但是matlab老是要报错,对照例子修改了好久还是有问题,过来想问一下怎么修改,希望大家给予指教,谢谢了。(本人初学Matlab,许多还不懂)Matlab 错误提示:Undefined function or variable 'T2'.Error in ==> displacement at 12F=[R1*cos(T1)+R2*cos(T2)-R3*cos(T3)-R6-R4*cos(T4);我的代码:function F=displacement(T1)%定义函数位移方程,未知变量T2,T3,T4,XR1=350;R2=320;R3=300;R30=400;R4=200;R6=200;e=30;F=[R1*cos(T1)+R2*cos(T2)-R3*cos(T3)-R6-R4*cos(T4); R1*sin(T1)+R2*sin(T2)-R3*sin(T3)-R4*sin(T4); R6+R4*cos(T4)+R30*cos(pi*4/3+T3)-X; R4*sin(T4)+R30*sin(pi*4/3+T3)-e];方程就是这里上面的四个方程,T2,T3,T4,X是未知量,T1是一个角度已知,题目其实要求利用方程组,求出T1 在0到360度360个数值解。希望大家能修改一下,谢谢了
展开
2013-11-11
展开全部
当T1 = pi 时,可以这样:R1=350;R2=320;R3=300;R30=400;R4=200;R6=200;e=30;T1 = pi;Fun = @(TX)[R1*cos(T1)+R2*cos(TX(1))-R3*cos(TX(2))-R6-R4*cos(TX(3)); R1*sin(T1)+R2*sin(TX(1))-R3*sin(TX(2))-R4*sin(TX(3)); R6+R4*cos(TX(3))+R30*cos(pi*4/3+TX(2))-TX(4); R4*sin(TX(3))+R30*sin(pi*4/3+TX(2))-e];[TX,Funval] = fsolve(Fun,[1 1 1 1])
2013-11-11
展开全部
回复 xiezhh 的帖子谢谢了,能运行了,定义函数是不是变量都是要用X(1) X(2)这种形式的,不能是用X Y Z的这样的形式,是吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-11-11
展开全部
把未知参数放到一个向量中,也就是说函数的输入参数是一个向量。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询