1. Гость, мы просим Вас ознакомиться с Правилами Форума и Отказом от ответственности!

Решение кубических уравнений.

Тема в разделе 'PHP', создана пользователем Kenpachi™, 20 ноя 2010.

  1. TopicStarter Overlay

    Kenpachi™ Who Crazy? Old school Пользователи Just a troll

    Сообщения:
    361
    Лайки:
    195
    Пол:
    Женский
    Репутация:
    0
    Команда:
    Solo
    Может ли кто нить сделать исходничеГ решения кубических уравнений на php.
    Ну или переписать код с делфи на php? :D
  2. TheMazzahaka Пользователи

    Сообщения:
    223
    Лайки:
    76
    Пол:
    Мужской
    Репутация:
    0
    Команда:
    J-Games Dev
    Можно,код сюды Оо
  3. TopicStarter Overlay

    Kenpachi™ Who Crazy? Old school Пользователи Just a troll

    Сообщения:
    361
    Лайки:
    195
    Пол:
    Женский
    Репутация:
    0
    Команда:
    Solo
    Так.. вот работающий исходник.

    Вот пример решения из интернета(костяк).
    Код:
    /* Cubic equation solution. Real coefficients case.
    
    int Cubic(double *x,double a,double b,double c);
    Parameters:
    x - solution array (size 3). On output:
    3 real roots -> then x is filled with them;
    1 real + 2 complex -> x[0] is real, x[1] is real part of 
    complex roots, x[2] - non-negative 
    imaginary part.
    a, b, c - coefficients, as described 
    Returns: 3 - 3 real roots;
    1 - 1 real root + 2 complex;
    2 - 1 real root + complex roots imaginary part is zero 
    (i.e. 2 real roots). 
    */
    
    #include <math.h>   /* for sqrt(), fabs(), pow(), cos(), acos(). */
    #define M_PI (3.141592653589793)
    #define M_2PI (2.*M_PI)
    
    int Cubic(double *x,double a,double b,double c) {
    double q,r,r2,q3;
    q=(a*a-3.*B)/9.; r=(a*(2.*a*a-9.*:)+27.*c)/54.;
    r2=r*r; q3=q*q*q;
    if(r2<q3) {
    double t=acos(r/sqrt(q3));
    a/=3.; q=-2.*sqrt(q);
    x[0]=q*cos(t/3.)-a;
    x[1]=q*cos((t+M_2PI)/3.)-a;
    x[2]=q*cos((t-M_2PI)/3.)-a;
    return(3);
    }
    else {
    double aa,bb;
    if(r<=0.) r=-r;
    aa=-pow(r+sqrt(r2-q3),1./3.); 
    if(aa!=0.) bb=q/aa;
    else bb=0.;
    a/=3.; q=aa+bb; r=aa-bb; 
    x[0]=q-a;
    x[1]=(-0.5)*q-a;
    x[2]=(sqrt(3.)*0.5)*fabs(r);
    if(x[2]==0.) return(2);
    return(1);
    }
    }
    
    Буду оч признателен если кто то переведёт.
  4. TheMazzahaka Пользователи

    Сообщения:
    223
    Лайки:
    76
    Пол:
    Мужской
    Репутация:
    0
    Команда:
    J-Games Dev
    Это как я понял шарп,с ним я ещё не совсем в ладах =).

    А из делфи попробую перевести.
  5. Botchal MMORPG-DEVS.RU Пользователи

    Сообщения:
    182
    Лайки:
    66
    Репутация:
    0
    Пля, чО такое кубические уровнения, вот в студию, напишу скриптик
  6. TopicStarter Overlay

    Kenpachi™ Who Crazy? Old school Пользователи Just a troll

    Сообщения:
    361
    Лайки:
    195
    Пол:
    Женский
    Репутация:
    0
    Команда:
    Solo
    http://www.dpva.info/Guide/GuideMathematics/Equations/cubeEquationsUniversalMethods/ вот самое понятное на мой взгляд объяснение в интернете.
  7. Botchal MMORPG-DEVS.RU Пользователи

    Сообщения:
    182
    Лайки:
    66
    Репутация:
    0
    Тоесть есть конретное тз на реализацию решения кубических уравнений на пхп? или надо составить 24 класса (каждый класс на тип уровнения) и решать как это делал бы человек?
  8. TopicStarter Overlay

    Kenpachi™ Who Crazy? Old school Пользователи Just a troll

    Сообщения:
    361
    Лайки:
    195
    Пол:
    Женский
    Репутация:
    0
    Команда:
    Solo
    Мало что понял.. В обще нужно реализовать примерно вот это http://www.webmath.ru/web/prog19_1.php НО только без хода решений, т.е ввёл a,b,c,d и тебе вывело чему будет равно R,Q,X1,X2,X3.
    Пасиб за отзывчивость :D
  9. MorzE nullptr AngeliCore Пользователи

    Сообщения:
    198
    Лайки:
    134
    Пол:
    Мужской
    Репутация:
    3
    Страна:
    Russian Federation Russian Federation
    А парсер нигмы все-таки не подошел? :D
  10. TopicStarter Overlay

    Kenpachi™ Who Crazy? Old school Пользователи Just a troll

    Сообщения:
    361
    Лайки:
    195
    Пол:
    Женский
    Репутация:
    0
    Команда:
    Solo
    Увы не дорос я ещё до этого :huh: пробовал.
  11. Botchal MMORPG-DEVS.RU Пользователи

    Сообщения:
    182
    Лайки:
    66
    Репутация:
    0
    Я не разобрался с формулами, на том сайте я ввожу 16 14 12 10 соответственно а он пишет какието коэффициенты совершенно не мои. Короче вот основа, помучайтесь непосредственно с 38,39 строчками




    Код:
    <?php
    //Данный скрипт написан компанией ООО "Рос-IT". Технический директор Кузнецов Виталий (Botchal)
    echo"";
    
    
    
    
    
    
    
    
    
    //Переменная $form будет нести в себе html форму
    $form="
    <form action='' method='post'>
    <table><tr>
    <input type='text' name='a'><b>x</b><sub>3</sub> + 					<!--число Икс в кубе-->
    <input type='text' name='b'><b>x</b><sub>2</sub> + 					<!--число Икс в квадрате-->
    <input type='text' name='c'><b>x + 									<!--Просто число Икс-->
    <input type='text' name='d'> =										<!--Число-->
    0
    <br>
    <input type='submit' value='Расчитать'>
    </tr></table>
    ";
    echo $form;
    //Принимаем передаваемые из формы данные, проверяем числовые ли они (я параноик) и записываем в переменные
    $a=$_POST['a'];//число Икс в кубе
    $b=$_POST['b'];//число Икс в квадрате
    $c=$_POST['c'];//Просто число Икс
    $d=$_POST['d'];//Число
    if(isset($_POST['a'])){
    if($a=="" or $b=="" or $c=="" or $d==""){die("Вы ввели не все данные");}//Проверка все ли данные ввёл юзер
    if(!preg_match("|^[-0-9]+$|i", $a) or !preg_match("|^[-0-9]+$|i", $:D or !preg_match("|^[-0-9]+$|i", $c) or !preg_match("|^[-0-9]+$|i", $d)){die("Математика считает только цифры!");}//Проверка числовые ли данные
    
    //Собсно формулы, думаю надо расписать по действиям, я не помню считает ли PHP строки такого вида, PERL считает
    // И ваще я спать=))
    $Q=($a*$a-3*B)/9;
    $R=(2*$a*$a*$a-9*$a*$b+27*$c)/54;
    //Вывод
    echo"Q=".$Q." ";
    echo"R=".$R."";
    }
    
    
    
    
    
    
    
    
    
    
    
    ?>
    
    1 человеку нравится это.
  12. TopicStarter Overlay

    Kenpachi™ Who Crazy? Old school Пользователи Just a troll

    Сообщения:
    361
    Лайки:
    195
    Пол:
    Женский
    Репутация:
    0
    Команда:
    Solo
    Мне как раз таки было нужно только расписать все формулы на пхп языке :D
    Ладно.. пойду пару раз прочту как они решаются и буду химичить :huh:
    Всё равно пасиб.
Черновик сохранён Черновик удалён

Поделиться этой страницей