在不单独指定系数的情况下求解二次方程
Solve quadratic equations without individually specifying cofficients
我正在尝试求解如下方程式:
3*(3x-12)/(x+3)-2*(2x+3)/(3x-1) = 5
这是我使用的代码:
eqn1 = 3*(3*X-12)/(X+3)-2*(2*X+3)/(3*X-1) == 5;
sol = solve(eqn1, X);
xSol = sol.X
这是我得到的错误:
Error using sym/subsref
Too many output arguments.
我建议的第一件事是执行图形解决方案:
% Define the function:
f = @(X)3*(3*X-12)./(X+3)-2*(2*X+3)./(3*X-1)-5;
% Plot the function (solve graphically):
x = -30:0.1:30;
figure(); plot(x,f(x)); grid on; grid minor;
这个函数在 x=-3
、x=1/3
和 y=8/3
处有垂直渐近线和水平渐近线(发现这个留作 reader 的练习)。让我们将它们添加到图表中并缩放到 0 的 y 轴附近:
hold on; plot([-3, -3, NaN, 1/3, 1/3], 600*[-1, 1, NaN, -1, 1],'--r');
plot([-30, 30], 8/3*[1 1], '--m'); ylim([-10 10]);
似乎有两个解,一个在垂直渐近线之间,另一个在右渐近线的右边。我们可以为 fzero
:
定义这些区域
% Find zeros:
z = [ fzero(f, [-3+eps(3) 1/3-eps(1/3)] ),... First solution
fzero(f, [1/3+eps, 30])]; % Second solution
(其中 30
是一个足够大的数字)我们得到:
z =
0.1902 21.6848
我正在尝试求解如下方程式:
3*(3x-12)/(x+3)-2*(2x+3)/(3x-1) = 5
这是我使用的代码:
eqn1 = 3*(3*X-12)/(X+3)-2*(2*X+3)/(3*X-1) == 5;
sol = solve(eqn1, X);
xSol = sol.X
这是我得到的错误:
Error using sym/subsref
Too many output arguments.
我建议的第一件事是执行图形解决方案:
% Define the function:
f = @(X)3*(3*X-12)./(X+3)-2*(2*X+3)./(3*X-1)-5;
% Plot the function (solve graphically):
x = -30:0.1:30;
figure(); plot(x,f(x)); grid on; grid minor;
这个函数在 x=-3
、x=1/3
和 y=8/3
处有垂直渐近线和水平渐近线(发现这个留作 reader 的练习)。让我们将它们添加到图表中并缩放到 0 的 y 轴附近:
hold on; plot([-3, -3, NaN, 1/3, 1/3], 600*[-1, 1, NaN, -1, 1],'--r');
plot([-30, 30], 8/3*[1 1], '--m'); ylim([-10 10]);
似乎有两个解,一个在垂直渐近线之间,另一个在右渐近线的右边。我们可以为 fzero
:
% Find zeros:
z = [ fzero(f, [-3+eps(3) 1/3-eps(1/3)] ),... First solution
fzero(f, [1/3+eps, 30])]; % Second solution
(其中 30
是一个足够大的数字)我们得到:
z =
0.1902 21.6848