matlab实现 8个未知数的非线性方程组的求解
这段MATLAB代码实现了一个包含8个未知数的非线性方程组的求解,并绘制了一个关于参数lambda的图形。主函数:equation()function equation()
global sigma mu T lambda
sigma = 5; % 定义sigma的值
mu = 0.4; % 定义mu的值
T = 1.7; % 定义T的值
N = 1;
for lambda = 0:0.05:1 % lambda从0到1,隔0.05计算一个点
x0 = * 1; % 定义迭代初值
x = fsolve(@myfun, x0); % 采用fsolve函数解对应lambda下的方程组,结果保存在x里
value(N) = x(7) - x(8); % 求出对应lambda下的omega1-omega2的值,保存在value里
N = N + 1;
end
lambda = 0:0.05:1;
plot(lambda, value) % 绘图
title(['T=', num2str(T)]) % 给出图的标题
end子函数:myfun(x)function F = myfun(x)
global sigma mu T lambda
%x(1)~x(8)分别对应8个未知数
Y1 = x(1);
Y2 = x(2);
G1 = x(3);
G2 = x(4);
w1 = x(5);
w2 = x(6);
omega1 = x(7);
omega2 = x(8);
%定义8个方程
eq1 = Y1 - mu * lambda * w1 - (1 - mu) / 2;
eq2 = Y2 - mu * (1 - lambda) * w2 - (1 - mu) / 2;
eq3 = G1 - (lambda * w1^(1 - sigma) + (1 - lambda) * (w2 * T)^(1 - sigma))^(1 / (1 - sigma));
eq4 = G2 - (lambda * (w1 * T)^(1 - sigma) + (1 - lambda) * w2^(1 - sigma))^(1 / (1 - sigma));
eq5 = w1 - (Y1 * G1^(sigma - 1) + Y2 * (G2^(sigma - 1)) * T^(1 - sigma))^(1 / sigma);
eq6 = w2 - (Y1 * (G1^(sigma - 1)) * T^(1 - sigma) + Y2 * G2^(sigma - 1))^(1 / sigma);
eq7 = omega1 - w1 * G1^(-mu);
eq8 = omega2 - w2 * G2^(-mu);
%返回方程组
F = ;
end
这个代码通过fsolve函数求解非线性方程组,其中lambda在一定范围内变化。结果被用于计算omega1 - omega2的值,并将这些值随lambda的变化进行绘图。
结果图片如下:
页:
[1]