[英]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.