Программа, вычисляющая криволинейный интеграл второго рода. |
Программа, вычисляющая криволинейный интеграл второго рода. |
TERAB1T |
11.09.2010 23:57
Сообщение
#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"); ?> |
TarasBer |
15.09.2010 21:06
Сообщение
#2
|
Злостный любитель Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
*dif_dx($x, $y, $z)
*dif_dy($x, $y, $z) *dif_dz($x, $y, $z) Неправильно заданы. Там же надо x'(t), а у тебя что? -------------------- |
Текстовая версия | 27.04.2024 13:35 |