我需要解决一个非线性方程组;为了使用 fsolve ,我写了一个包含我的函数“myfun”的m文件。该函数由主m文件调用。
必须使用“ for ”循环编写系统和未知数。
示例:
function F=myfun(x)
n=20;`
for j=1:n
c1=sqrt(x(j)^2-3*x(j));
c2=x(j)^(1/2);
F(j)=c1+c2;
end
我的问题是我必须为我的向量预先分配内存,包括F和x,否则求解器会认为numel(x)= 1。 但是,如果我宣布
F=zeros(n,1);
x=zeros(n,1);
我有以下输出:
No solution found.
fsolve stopped because the problem appears regular as measured by the gradient,
but the vector of function values is not near zero as measured by the
default value of the function tolerance.
有什么建议吗?感谢
答案 0 :(得分:0)
您不需要循环,只需使用
F = sqrt(x.^2-3*x) + x.^(1/2);
然后你也不需要声明n,c1,c2。
您的错误消息也听起来不像分配有问题,但更多的是找到解决问题的解决方案。