1. Уважаемые участники и гости, 19 октября codeby будет работать в режиме "Только чтение". Регистрация новых участников будет закрыта. 20 октября портал продолжит работу в прежнем режиме.

Программа, вычисляющая криволинейный интеграл второго рода.

Тема в разделе "Другие задачи", создана пользователем TERAB1T, 12 сен 2010.

Статус темы:
Закрыта.
  1. TERAB1T

    TERAB1T Гость

    Репутация:
    0
    Здравствуйте. Написал программу для решения криволинейного интеграла второго рода ( http://www.support17.com/component/content....html?task=view - в самом низу страницы решение), а она считает неправильно. Помогите найти ошибку. Суть программы - сначала сводим к обычному определенному интегралу, затем считаем определенный методом Гаусса. Вот код:
    PHP:
    <?php
    $b 
    1//верхний предел по переменной интегрирования
    $a 0///нижний предел по переменной интегрирования
    function dx($x$y$z//выражение dx

    return 
    pow($x3);
    }
    function 
    dy($x$y$z//выражение dy

    return 
    2*$x*pow($y2);
    }
    function 
    dz($x$y$z//выражение dz

    return -
    3*pow($z2);
    }



    function 
    x($t//выражения в фигурной скобке в задании

    return 
    1-$t;
    }
    function 
    y($t

    return 
    2-3*$t;
    }
    function 
    z($t

    return -
    2+2*$t;
    }



    function 
    dif_dx($x$y$z//взятие производных по нужным переменным
    {
    $h 0.001;
    return (
    dx($x+$h$y$z) - dx($x$y$z)) / $h;
    }
    function 
    dif_dy($x$y$z)
    {
    $h 0.001;
    return (
    dy($x$y+$h$z) - dy($x$y$z)) / $h;
    }
    function 
    dif_dz($x$y$z)
    {
    $h 0.001;
    return (
    dz($x$y$z+$h) - dz($x$y$z)) / $h;
    }
    function 
    func_integr($t//сведение к определенному интегралу

    $x=x($t);
    $y=y($t);
    $z=z($t);
    return 
    dx($x$y$z)*dif_dx($x$y$z)+dy($x$y$z)*dif_dy($x$y$z)+dz($x$y$z)*dif_dz($x$y$z); //Здесь нужно перечислить таким же образом все квадраты дифференциалов по функциям
    }
    {
    //вычисляем определенный интеграл методом Гаусса
    $n=10
    $I=0;
    for (
    $i 0$i $n$i++)
    {
    $r=$a+($i*($b-$a)/$n);
    $l=$a+(($i+1)*($b-$a)/$n);
    $I_=(func_integr((($l+$r)/2)-(($r-$l)/sqrt(12)))+func_integr((($l+$r)/2)-(($r-$l)/sqrt(12))))*($r-$l)/2;
    $I+=abs($I_);
    }
    $res=$I;
    }
    echo (
    "Result: $res");
    ?>
     
Загрузка...
Статус темы:
Закрыта.

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