声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1118|回复: 3

[编程技巧] 求助大侠指点一下关于fsolve的求解问题

[复制链接]
发表于 2009-3-28 09:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
function yueshu01
global L n
L=input('请输入杆件长度矩阵L='); n=length(L); q0=rand(n,1);
F=fsolve(@myfun2,q0)

function F=myfun2(q)
global L n
for i=1:n, XX(i)=X(i)-L(i)*cos(q(i)); YY(i)=Y(i)-L(i)*sin(q(i)) ; end
F=[XX,XY]
出错信息是X,Y没定义。这里的X,Y该怎样定义或可以用其他的什么办法解决呀?我用syms X Y 这样定义了一下  但是长度不够。还恳请各位大哥大侠帮帮忙啊!!X(i),Y(i)都是关于q(i)的变量  也是一个要求的未知量 q(i)也是要求的未知量

[ 本帖最后由 ChaChing 于 2009-5-2 10:41 编辑 ]
回复
分享到:

使用道具 举报

 楼主| 发表于 2009-3-28 19:06 | 显示全部楼层
没人回复我自己顶一个。呵呵  把XX(i)=X(i)-L(i)*cos(q(i))    YY(i)=Y(i)-L(i)*sin(q(i))  换成    X(i)=(i)*cos(q(i)) -0Y(i)=(i)*sin(q(i))  -0;把F=[XX,XY]换成F=[X;Y]就可以了   呵呵
 楼主| 发表于 2009-5-11 11:58 | 显示全部楼层

求助:关于fsolve的循环求解的问题

各位大侠,小弟现在有一关于fsolve的循环求解的问题求助,还请各位大家多多指教,小弟先行拜谢了!现给出如下代码(注:代码是可以运行的,只是无法循环计算)。我要求能够分别输出关于时间t的各时刻的结果,但是我这样做了后,只能多次循环输出时间t的最后一组结果。还请各位指点一二,小弟感激不尽!!
   function F=yueshufangcheng(q,t)
L=load('ganchang.txt');
n=length(L);
syms t
T=load('shijian.txt');
N=length(T);
load yizhijiao.mat;
o=length(U);  %U为独立坐标变量%
%===========================================
u=subs(U,t,T);
for i=1:N   
MD=q(2*n+1:2*n+o)-u(i);  %附加驱动约束%            
end
%u是随时间t变化的量,因此,MD也会随着时间而变化
%==============================================
if n==1
MK(1)=q(1)-1/2*L(1)*cos(q(2*n+1));            
MK(2)=q(n+1)-1/2*L(1)*sin(q(2*n+1));         
elseif n>=2
MK(1)=q(1)-1/2*L(1)*cos(q(2*n+1));            
MK(2)=q(n+1)-1/2*L(1)*sin(q(2*n+1));
for i=2:n
    MK(2*i-1)=q(i)-1/2*L(i)*cos(q(2*n+i))-q(i-1)-1/2*L(i-1)*cos(q(2*n+i-1));      
    MK(2*i)=q(n+i)-1/2*L(i)*sin(q(2*n+i))-q(n+i-1)-1/2*L(i-1)*sin(q(2*n+i-1));        
end
MK(2*n+1)=0.4-q(n)-1/2*L(n)*cos(q(3*n));   
MK(2*n+2)=0.1-q(2*n)-1/2*L(n)*sin(q(3*n));
end
%=====================================
F=[MK.';MD.'];
%MD会随着时间变化
%=====================================
end

function weixingjisuan01
xr0=[0.1 0.4 0.3];
yr0=[0.1 0.4 0.3];
m0=[0.5 0.9 -1];
q0=[xr0';yr0';m0'];
options=optimset('Display','iter');
T=load('shijian.txt');
N=length(T);
for i=1:N
q=fsolve(@yueshufangcheng01,q0,options)
end
save zuobiao.txt q -ASCII

相关数据如下:
杆长L=[0.1 0.4 0.3]
时间T=[0 0.2 0.4 0.6 0.8 1]
已知角U=[2*pi+1/4*pi*t]

再次拜谢各位啦!!
 楼主| 发表于 2009-5-13 15:36 | 显示全部楼层
很着急结果呀!求求那位高手帮忙一下,小弟感激不尽啦!!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-17 06:32 , Processed in 0.103775 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表