IPB
ЛогинПароль:

 
Closed Topic Открыть новую тему 
> Программа, вычисляющая криволинейный интеграл второго рода.
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 8
Пол: Мужской
Реальное имя: Алексей

Репутация: -  0  +


Здравствуйте. Написал программу для решения криволинейного интеграла второго рода ( http://www.support17.com/component/content....html?task=view - в самом низу страницы решение), а она считает неправильно. Помогите найти ошибку. Суть программы - сначала сводим к обычному определенному интегралу, затем считаем определенный методом Гаусса. Вот код:
Код
<?php
    $b = 1; //верхний предел по переменной интегрирования
    $a = 0; ///нижний предел по переменной интегрирования
    function dx($x, $y, $z) //выражение dx
        {
            return pow($x, 3);
        }
    function dy($x, $y, $z) //выражение dy
        {
            return 2*$x*pow($y, 2);
        }
    function dz($x, $y, $z) //выражение dz
        {
            return -3*pow($z, 2);
        }
        
        
        
    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");
?>
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


*dif_dx($x, $y, $z)
*dif_dy($x, $y, $z)
*dif_dz($x, $y, $z)
Неправильно заданы. Там же надо x'(t), а у тебя что?


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Closed Topic Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 28.03.2024 22:26
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name