Errors using fzero in rootfinding
古いコメントを表示
ecc= 0.1
M= linspace(0, 2*pi, 800);
%%solving for psi using fzero
f = @(psi) psi- ecc*sin(psi)- M;
psi = zeros(size(M));
for j = 1:length (M)
psi(j)=fzero(f,1);
end
The original equaions is M = ψ - epsilon* sin ψ, trying to solve psi(M) for each M entry.
Could someone spot the errors in this? When I run the program, it show erros in fzero , "operands to the || and && operators ust be convertible to logical scalar values. Errors in fzero (line 307) else if ~ isfinite(fx) || ~isreal f(x)
回答 (1 件)
Your problem is with how you set up your function. Your parameter M is a vector in the function definition, so at any given point, the function returns a vector. f(x) should return a scalar, not a vector. What your loop implies is that you're looking to find the root given M(j), so just do that.
ecc= 0.1
M= linspace(0, 2*pi, 800);
%%solving for psi using fzero
psi = zeros(size(M));
for j = 1:length (M)
f = @(psi) psi- ecc*sin(psi)- M(j);
psi(j)=fzero(f,1);
end
psi
カテゴリ
ヘルプ センター および File Exchange で Random Number Generation についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!