【发布时间】:2020-04-09 18:02:11
【问题描述】:
我正在尝试通过迭代关于方程组的常数 (A) 的值在 MATLAB 中创建一个绘图。我的代码粘贴在下面:
function F=Func1(X, A)
%X(1) is c
%X(2) is h
%X(3) is lambda
%A is technology (some constant)
%a is alpha
a=1;
F(1)=1/X(1)-X(3)
F(2)=X(3)*(X(1)-A*X(2)^a)
F(3)=-1/(24-X(2))-X(3)*A*a*X(2)^(a-1)
clear, clc
init_guess=[0,0,0]
for countA=1:0.01:10
result(countA,:)=[countA,fsolve(@Func1, init_guess)]
end
display('The Loop Has Ended')
display(result)
%plot(result(:,1),result(:,2))
第一组代码,我正在定义我试图求解的方程组。在第二组行中,我正在尝试编写一个循环,该循环遍历我想要的 A 的值,[1,10],增量为 0.01。现在,我只是想让我的循环代码工作,但我不断收到此错误:
“初始目标函数评估失败。FSOLVE 无法继续。”
我不知道为什么会这样。据我了解,这是我最初的猜测矩阵大小不正确的结果,但我相信它的大小应该是 3,因为我正在求解三个变量。此外,我相当有信心在循环代码中引用 Func1 代码的方式没有任何问题。
我们真诚地感谢大家提供的任何建议。我只在 MATLAB 上工作了几天,所以如果这是一个相当微不足道的修复,请原谅我的无知。谢谢。
【问题讨论】:
-
A是已知常数吗? -
我正在尝试在给定 [1,10] 之间的每个 A 值的情况下求解我的方程组并绘制结果图,所以是的,A 是一个已知常数。
-
如果我理解正确,那么您应该为
A的每个值使用类似fsolve(@(X) Func1(X,A), init_guess)的内容。我的答案中的完整代码
标签: matlab