[英]solving nonlinear equations in matlab
我有一个无法回答的作业问题。 这是问题提示:
公式8.3和8.4为:
(8.3)
(8.4)
哪里
这是我写的函数:
function F = rob_arm (alphag, betag)
F = (1).*cos(alphag)+ (1).*(cos(alphag+betag))-(1) ;
(1).*sin(alphag) + (1).*(sin(alphag+betag))-(1.1) ;
end
由于alpha
和beta
是大小不同的矩阵,因此我使用meshgrid
创建alphag
和betag
,并使用这些矩阵计算rob_arm
的值。 经过四个小时的讨论,我什至不知道问题在问什么,TA暂时没有回复电子邮件。 我编写了以下代码,尝试将rob_arm
强制为单个列:
alpha = 0:pi/100:(pi/2); %define angle alpha
beta = 0:pi/100:pi; %define angle beta
[alphag, betag] = meshgrid (alpha, beta); %mesh grid alpha and beta b/c different matrix dimensions
arm_pos = rob_arm (alphag, betag);
for ii = 1:1:101
for k = 1:1:51
col_vec (1,1:1:5151) = arm_pos(ii,k);
end
end
忽略创建列向量的查询,结果输出arm_pos
是好的输出。 我可以将其绘制图形,并且可以很清楚地看到该机械臂可以“到达”的所有可能点。
但是由于我很笨,并且已经尝试了许多小时,所以没有将rob_arm
连续值rob_arm
到col_vec
,它每次都替换一次,结果得到一个1x1矩阵。 最终,目标是使用Newton-Raphson方法确定该函数的零点,但这还有很长的路要走。 我在想如果我可以将rob_arm
计算的所有值rob_arm
放在一个列中,那么我可以回答这个问题。
下一个问题是:
我需要澄清一下,因为我不明白如何将1 x 51矩阵( alpha
)和1 x 102矩阵( beta
)接受到单个行向量中,然后输出2x2矩阵。 我知道什么是雅可比行列式,它是我的两个函数的偏导数,而不是值矩阵。
如果有人想帮我,那真是太棒了。
您的函数定义不正确,您应该使用类似
function F = rob_arm (alphag, betag)
F = [(1).*cos(alphag)+ (1).*(cos(alphag+betag))-(1) ; ...
(1).*sin(alphag) + (1).*(sin(alphag+betag))-(1.1)];
end
没有三个点“ ...”,MATLAB将执行此计算
(1).*sin(alphag) + (1).*(sin(alphag+betag))-(1.1);
但是对结果不执行任何操作,然后返回
F = (1).*cos(alphag)+ (1).*(cos(alphag+betag))-(1) ;
这不是您想要的,缺少一半的F值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.