Error using fsolve, indices not compatible
古いコメントを表示
I am trying to solve a system of equations using fsolve but I keep getting the following error:
Unable to perform assignment because the indices on the left side are not compatible with the size of the right side.
Error in root2d (line 4)
F(1)=(m*(x1-x3))-(y1-y3);
Below is a snippet of my code, with the function first followed by the main script.
function F = root2d(k,m,x1,y1)
x3 = k(1);
y3 = k(2);
F(1)=(m*(x1-x3))-(y1-y3);
F(2)=(sqrt(((y1-k(2))^2)+((x1-k(1))^2)))-1;
m = diff(y(xx1));
x0 = [0,0];
sol = fsolve(@(k)root2d(k,m,x1,y1),x0);
Note: x1 and x2 are scalars defined earlier in the code.
Can anyone help me fix this error? Thank you!
9 件のコメント
madhan ravi
2018 年 12 月 5 日
Dude provide the full code or attach your relevent script files
Abigale Mattingly
2018 年 12 月 5 日
madhan ravi
2018 年 12 月 5 日
編集済み: madhan ravi
2018 年 12 月 5 日
but before the error I get this
Equation solved. The sum of squared function values, r = 5.652814e-22, is less than
sqrt(options.FunctionTolerance) = 1.000000e-03. The relative norm of the gradient of r,
2.261198e-11, is less than options.OptimalityTolerance = 1.000000e-06.
Optimization Metric Options
relative norm(grad r) = 2.26e-11 OptimalityTolerance = 1e-06 (default)
r = 5.65e-22 sqrt(FunctionTolerance) = 1.0e-03 (default)
>>
Abigale Mattingly
2018 年 12 月 5 日
Abigale Mattingly
2018 年 12 月 5 日
Kevin Chng
2018 年 12 月 5 日
I dont have error. I'm bit confusing. You should save them in one script.
function F = root2d(k,m,x1,y1)
x3 = k(1);
y3 = k(2);
F(1)=(m*(x1-x3))-(y1-y3);
F(2)=(sqrt(((y1-k(2))^2)+((x1-k(1))^2)))-1;
end
Open another script and run it :
r = 3;
f = 2;
x0 = 0;
x1 = -3;
x2 = 3;
y0 = 0;
y1 = x1^2;
y2 = x2^2;
rmag = sqrt(((x1-x0)^2)+((y1-y0)^2));
fi = asind(r/rmag);
thetas = 0.25;
x = x1:0.01:x2;
y = x.^2;
theta = randi([-90,90],1,1);
xx1 = (randi(length(x),1,1));
x1 = x(xx1);
y1 = y(xx1);
x2 = (sind(theta))+ x1;
f = @(y2) sqrt(((x1-x2)^2)+((y1-y2)^2))-1;
y2 = fsolve(f,1);
m = diff(y(xx1));
x0 = [0,0];
sol = fsolve(@(k)root2d(k,m,x1,y1),x0);
Abigale Mattingly
2018 年 12 月 5 日
Abigale Mattingly
2018 年 12 月 5 日
Kevin Chng
2018 年 12 月 5 日
Save them in the same path, and then run Untitled2.m.
採用された回答
その他の回答 (0 件)
カテゴリ
ヘルプ センター および File Exchange で Polynomials についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!