注册 登录
编程论坛 Matlab

关于M文件的参数问题

firecat_2 发布于 2006-06-26 22:39, 653 次点击

M文件中如果要在 嵌套的函数中有传递函数 如何定义
例如
x0=[0;0;0;200]
[x,y]=fsolve(@myfun1,x0)
想嵌套下面这个函数
function y=myfun1(x)
a=1.8326;
b=-0.5236;
y=[50*cos(a)+103*cos(x(1))-155*cos(x(2))-50*cos(b)-155*cos(0.3491);
50*cos(a)+103*cos(x(1))+155*cos(x(3))-x(4);
50*sin(a)+103*sin(x(1))-155*sin(x(2))-50*sin(b)-155*sin(0.3491);
50*sin(a)+103*sin(x(1))+155*sin(x(3))-160]
这个函数只是一个值 如何能让 a=linspace(1.836,1.836+2*pi,18);
b=linspace(2*pi-0.536,-0.536,18);相对应时分别求出对应的x
老师说用个传递参数k 可是怎么用呢 请教各位了

3 回复
#2
Genial2006-06-27 08:25
% mysolve.m
% result in xresult, yresult
x0=[0;0;0;200];
aa=linspace(1.836,1.836+2*pi,18);
bb=linspace(2*pi-0.536,-0.536,18);
xresult = [];
yresult = [];
for k=1:18
a = aa(k);
b = bb(k);
[x,y]=fsolve(@(x) myfun1(x,a,b),x0, optimset('Display','off'));
xresult = [xresult x];
yresult = [yresult y];
end


% myfun1.m
function y=myfun1(x,a,b)
y=[50*cos(a)+103*cos(x(1))-155*cos(x(2))-50*cos(b)-155*cos(0.3491);
50*cos(a)+103*cos(x(1))+155*cos(x(3))-x(4);
50*sin(a)+103*sin(x(1))-155*sin(x(2))-50*sin(b)-155*sin(0.3491);
50*sin(a)+103*sin(x(1))+155*sin(x(3))-160];
#3
sxs772006-09-07 18:29

版主,这个程序调试过吗.我怎么不能运行啊!我也碰到了类似的问题

#4
冰山一角2006-09-08 10:42
不能运行。
1