2016-01-16 2 views
-1

Борьба с квадратичным уравнением MATLAB. Я продолжаю получать сложный номер, так как мой ответ и другие ошибки продолжаются.Matlab Квадратичное уравнение

Напишите функцию MATLAB, который решает квадратное уравнение вида a*x^2 + b*x + c = 0

Синтаксис вашей функции должен иметь форму

[quadRoots1,quadRoots2] = Q1_quadratic (a,b,c); 

где a, b и c являются квадратичные коэффициенты ; и quadRoots1 и quadRoots2 являются двумя определяемыми корнями. В случае, когда присутствует только один корень (например, когда a=1, b=2 и c=1), вы должны установить свой второй вывод на NaN (а не на номер). Если корней нет, установите оба выхода на NaN.

+0

Прошло некоторое время, но если память служит, если b^2 - 4ac <0, то ваши корни сложны. Если вы решаете только реальные корни, вам нужно будет позаботиться об этом. –

+0

В вашем вопросе говорится, что делать, когда нет реальных корней: возможно, вы могли бы написать оператор 'if' для проверки, действительно ли это так. – Steve

+0

Я голосую, чтобы закрыть этот вопрос как не по теме, потому что это домашнее задание, и OP не показал попыток. – Jubobs

ответ

1

Убедитесь, чтобы проверить, если число под знаком корня в вашем quadratic formula является:

  • Положительный (>0): два различных вещественных корня,
  • равно нулю (==0): одно реальное нумерованный вырожденный корень (или, вернее, два нечетких корня).
  • Negative (<0:. Ваши корни сложны (напомним, sqrt(-1) = i с our imaginary unit i) От звука вашего вопроса спецификации, кажется, вы должны относиться к сложным, как если «нет корней не присутствуют»
.

Вы можете проверить случаи выше в функции Q1_quadratic(...) используя if-elseif-else положение, например:

function [quadRoots1, quadRoots2] = Q1_quadratic(a, b, c) 

    d = b^2 - 4*a*c; % your number under the root sign in quad. formula 

    % real numbered distinct roots? 
    if d > 0 
    quadRoots1 = (-b+sqrt(d))/(2*a); 
    quadRoots2 = (-b-sqrt(d))/(2*a); 
    % real numbered degenerate root? 
    elseif d == 0 
    quadRoots1 = -b/(2*a); 
    quadRoots2 = NaN; 
    % complex roots, return NaN, NaN 
    else 
    quadRoots1 = NaN; 
    quadRoots2 = NaN; 
    end  
end 

Тест:

% distinct real roots: expects [2, -8] 
[a, b] = Q1_quadratic(1, 6, -16) 
    % OK! 

% degenerate real root: expects [-1, NaN] 
[a, b] = Q1_quadratic(1, 2, 1) 
    % OK! 

% complex roots: expects [NaN, NaN] 
[a, b] = Q1_quadratic(2, 2, 1) 
    % OK! 
+0

Это, очевидно, домашнее задание, и ОП не показал никакой попытки. Зачем вам дать полный ответ? – Jubobs

+1

@Jubobs Ow мой плохой, я просмотрел вопрос, чтобы быстро понять, что это, очевидно, вопрос о домашнем задании (очень очевидный теперь после редактирования цитаты Стив). Я согласен с вопросами о домашних заданиях, на которые я не отвечаю в такой полноте, мои извинения, я просто пропустил это из своего собственного забывания. – dfri

+0

Это нормально; Я рад, что вы не сделали это нарочно. – Jubobs

Смежные вопросы