diff --git a/README.md b/README.md index c0c06b8..c5286a9 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,62 @@ -# numerical-analysis-tools -Explore numerical methods implemented in PHP for solving equations and integrals. Enhance your understanding of numerical analysis techniques. +
+ Explore practical implementations of numerical analysis methods in PHP +
+ View Demo + · + Report an Issue or Request a Feature + · + Collaborate +ریشه یابی
حل دستگاه معادلات خطی
انتگرال گیری عددی
+ با وارد کردن تابع مورد نظر در فرم زیر، یکی از ریشههای آن در دامنه تعیینشده با استفاده از روش دوبخشی محاسبه میشود. تکرارها تا زمانی که 7 رقم بامعنا پاسخ ثابت بماند ادامه مییابد و در نهایت ریشه تابع با تقریب بدست میآید. در صورت تمایل میتوانید تابع دلخواه خود را در فرم وارد کنید یا با کلیک بر روی دکمه پایین فرم، از یک تابع پیشفرض برای محاسبات استفاده کنید. +
+ + +یا
sin(تابع مدنظر)
+ و
+ cos(تابع مدنظر)
+ و
+ tan(تابع مدنظر)
+ و
+ sinh(تابع مدنظر)
+ و
+ cosh(تابع مدنظر)
+ باید وارد شوند. برای وارد کردن رادیکال از قالب
+ sqrt(تابع مدنظر)
+ و برای لگاریتم از قالب
+ log(تابع مدنظر,پایه لگاریتم)
+ استفاده نمائید. در وارد کردن تابع توجه نمائید که اپراتور ضرب را حتما بین ارقام و متغیر ها درج نمائید برای مثال بجای عبارت
+ 2x
+ یا
+ 2sin(x)
+ باید
+ 2*x
+ یا
+ 2*sin(x)
+ نوشته شود تا تابع پس از ترجمه مطابق با سینتکس پی اچ پی باشد. درصورتی که پس از ثبت تابع روند تکرار نمایش داده نشد تابع خود را تصحیح کنید و یا از دکمه پایین آن استفاده نمائید که بمنظور سهولت روند تست تابعی پیشفرض با کلیک بر روی آن در فرم قرار میگیرد و میتوانید روند محاسبات را مشاهده نمائید.
+ ' . $function . '
' . $function . '
';
+ function f($x)
+ {
+ global $function;
+ return eval("return $function;");
+ }
+ $m = 0;
+ $prec = null;
+ $stop = false;
+ while ($m < 100) {
+ $c = ($a + $b) / 2;
+ echo 'a=' . $a . ', b=' . $b . ', c=' . $c . ', f(a)=' . f($a) . ', f(c)=' . f($c) . '
';
+ if (f($a) * f($c) < 0) {
+ $b = $c;
+ } elseif (f($a) * f($c) > 0) {
+ $a = $c;
+ } else {
+ echo 'ریشه بصورت دقیق در x = ' . $c . 'پیدا شده است';
+ break;
+ }
+ echo 'پاسخ محاسبه شده: ' . $c;
+ if ($prec !== null) {
+ $delta = abs($c - $prec) / abs($c);
+ if ($delta < pow(10, -7)) {
+ $stop = true;
+ }
+ }
+ if ($stop) {
+ break;
+ }
+ $m++;
+ $prec = $c;
+ }
+ }
+ ?>
+ + با وارد کردن تابع مورد نظر در فرم زیر، یکی از ریشههای آن در دامنه تعیینشده با استفاده از روش نابجایی محاسبه میشود. تکرارها تا زمانی که 7 رقم بامعنا پاسخ ثابت بماند ادامه مییابد و در نهایت ریشه تابع با تقریب بدست میآید. در صورت تمایل میتوانید تابع دلخواه خود را در فرم وارد کنید یا با کلیک بر روی دکمه پایین فرم، از یک تابع پیشفرض برای محاسبات استفاده کنید. +
+ + +یا
sin(تابع مدنظر)
+ و
+ cos(تابع مدنظر)
+ و
+ tan(تابع مدنظر)
+ و
+ sinh(تابع مدنظر)
+ و
+ cosh(تابع مدنظر)
+ باید وارد شوند. برای وارد کردن رادیکال از قالب
+ sqrt(تابع مدنظر)
+ و برای لگاریتم از قالب
+ log(تابع مدنظر,پایه لگاریتم)
+ استفاده نمائید. در وارد کردن تابع توجه نمائید که اپراتور ضرب را حتما بین ارقام و متغیر ها درج نمائید برای مثال بجای عبارت
+ 2x
+ یا
+ 2sin(x)
+ باید
+ 2*x
+ یا
+ 2*sin(x)
+ نوشته شود تا تابع پس از ترجمه مطابق با سینتکس پی اچ پی باشد. درصورتی که پس از ثبت تابع روند تکرار نمایش داده نشد تابع خود را تصحیح کنید و یا از دکمه پایین آن استفاده نمائید که بمنظور سهولت روند تست تابعی پیشفرض با کلیک بر روی آن در فرم قرار میگیرد و میتوانید روند محاسبات را مشاهده نمائید.
+ ' . $function . '
' . $function . '
';
+ function f($x)
+ {
+ global $function;
+ return eval("return $function;");
+ }
+ $m = 0;
+ $prec = null;
+ $stop = false;
+ while ($m < 100) {
+ $c = (($a * f($b)) - ($b * f($a))) / (f($b) - f($a));
+ echo 'a=' . $a . ', b=' . $b . ', c=' . $c . ', f(a)=' . f($a) . ', f(c)=' . f($c) . '
';
+ if (f($a) * f($c) < 0) {
+ $b = $c;
+ } elseif (f($a) * f($c) > 0) {
+ $a = $c;
+ } else {
+ echo 'ریشه بصورت دقیق در x = ' . $c . 'پیدا شده است';
+ break;
+ }
+ echo 'پاسخ محاسبه شده: ' . $c;
+ if ($prec !== null) {
+ $delta = abs($c - $prec) / abs($c);
+ if ($delta < pow(10, -7)) {
+ $stop = true;
+ }
+ }
+ if ($stop) {
+ break;
+ }
+ $m++;
+ $prec = $c;
+ }
+ }
+ ?>
+ + با وارد کردن تابع مورد نظر در فرم زیر، یکی از ریشههای آن در دامنه تعیینشده با استفاده از روش تکرار ساده (نقطه ثابت) محاسبه میشود. تکرارها تا زمانی که 4 رقم بامعنا g و x باهم برابر باشند و در نهایت ریشه تابع با تقریب بدست میآید. در صورت تمایل میتوانید تابع دلخواه خود را در فرم وارد کنید یا با کلیک بر روی دکمه پایین فرم، از یک تابع پیشفرض برای محاسبات استفاده کنید. +
+ + +یا
(2x+5)*sin(x)+6+100x=100x
+ بازنویسی شده است که تابع g برابر خواهد بود با
+ ((2x+5)*sin(x)+6+100x)/100
+ و مقدار تخمین اولیه نیز 0 درنظر گرفته شده است
+ sin(تابع مدنظر)
+ و
+ cos(تابع مدنظر)
+ و
+ tan(تابع مدنظر)
+ و
+ sinh(تابع مدنظر)
+ و
+ cosh(تابع مدنظر)
+ باید وارد شوند. برای وارد کردن رادیکال از قالب
+ sqrt(تابع مدنظر)
+ و برای لگاریتم از قالب
+ log(تابع مدنظر,پایه لگاریتم)
+ استفاده نمائید. در وارد کردن تابع توجه نمائید که اپراتور ضرب را حتما بین ارقام و متغیر ها درج نمائید برای مثال بجای عبارت
+ 2x
+ یا
+ 2sin(x)
+ باید
+ 2*x
+ یا
+ 2*sin(x)
+ نوشته شود تا تابع پس از ترجمه مطابق با سینتکس پی اچ پی باشد. درصورتی که پس از ثبت تابع روند تکرار نمایش داده نشد تابع خود را تصحیح کنید و یا از دکمه پایین آن استفاده نمائید که بمنظور سهولت روند تست تابعی پیشفرض با کلیک بر روی آن در فرم قرار میگیرد و میتوانید روند محاسبات را مشاهده نمائید.
+ x=' . $function . '
g( $x ) = ' . $function . '
';
+ function f($x)
+ {
+ global $function;
+ return eval("return $function;");
+ }
+ $m = 0;
+ $stop = false;
+ while ($m < 100) {
+ echo 'x=' . $initial . ', g(x)=' . f($initial) . '
';
+ $difference = abs($initial - f($initial)) / abs($initial) >= pow(10, -4);
+ if ($initial !== f($initial) && $difference ) {
+ $initial = f($initial);
+ } else {
+ echo 'ریشه بصورت دقیق در x = ' . $initial . 'پیدا شده است';
+ break;
+ }
+ echo 'پاسخ محاسبه شده: ' . $initial;
+ if (f($initial) !== null) {
+ $delta = abs($initial - f($initial)) / abs($initial);
+ if ($delta < pow(10, -4)) {
+ $stop = true;
+ }
+ }
+ if ($stop) {
+ break;
+ }
+ $m++;
+ }
+ }
+ ?>
+ + با وارد کردن سه معادله بر حسب x و y و z با سه مجهول x و y و z در فرم زیر، مجهولات آن با استفاده از روش ژاکوبی با صفر قرار دادن نقاط اولیه برای هر سه متغیر و تکرار تا زمانی که چهار رقم بامعنا هر سه متغیر ثابت بماند محاسبه میشود. در صورت تمایل میتوانید معادلات دلخواه خود را در فرم وارد کنید یا با کلیک بر روی دکمه پایین فرم، از معادلات پیشفرض برای محاسبات استفاده کنید. +
+ + +یا
x=(2-y-z)/7
+ و
+ y=(5-(2x+6z))/15
+ و
+ z=(8-2x+y)/5
+ بازنویسی میشوند تا بتوان در رابطه جایگذاری کرد
+ sin(تابع مدنظر)
+ و
+ cos(تابع مدنظر)
+ و
+ tan(تابع مدنظر)
+ و
+ sinh(تابع مدنظر)
+ و
+ cosh(تابع مدنظر)
+ باید وارد شوند. برای وارد کردن رادیکال از قالب
+ sqrt(تابع مدنظر)
+ و برای لگاریتم از قالب
+ log(تابع مدنظر,پایه لگاریتم)
+ استفاده نمائید. در وارد کردن تابع توجه نمائید که اپراتور ضرب را حتما بین ارقام و متغیر ها درج نمائید برای مثال بجای عبارت
+ 2x
+ یا
+ 2sin(x)
+ باید
+ 2*x
+ یا
+ 2*sin(x)
+ نوشته شود تا تابع پس از ترجمه مطابق با سینتکس پی اچ پی باشد. درصورتی که پس از ثبت تابع روند تکرار نمایش داده نشد تابع خود را تصحیح کنید و یا از دکمه پایین آن استفاده نمائید که بمنظور سهولت روند تست تابعی پیشفرض با کلیک بر روی آن در فرم قرار میگیرد و میتوانید روند محاسبات را مشاهده نمائید.
+ x=' . $function1 . '
y=' . $function2 . '
z=' . $function3 . '
$x = ' . $function1 . '
$y = ' . $function2 . '
$z = ' . $function3 . '
';
+ function f1($y, $z)
+ {
+ global $function1;
+ return eval("return $function1;");
+ }
+ function f2($x, $z)
+ {
+ global $function2;
+ return eval("return $function2;");
+ }
+ function f3($y, $z)
+ {
+ global $function3;
+ return eval("return $function3;");
+ }
+ $m = 0;
+ $x = 0;
+ $y = 0;
+ $z = 0;
+ $oldx = 0;
+ $oldy = 0;
+ $oldz = 0;
+ $stop = false;
+ while ($m < 100) {
+ echo 'x=' . $x . ', y=' . $y . ', z=' . $z . '
';
+ $delta1 = abs($x - $oldx) / abs($x);
+ $delta2 = abs($y - $oldy) / abs($y);
+ $delta3 = abs($z - $oldz) / abs($z);
+ if ($delta1 < pow(10, -4) && $delta2 < pow(10, -4) && $delta3 < pow(10, -4)) {
+ $stop = true;
+ }
+ if ($stop) {
+ break;
+ }
+ $oldx = $x;
+ $oldy = $y;
+ $oldz = $z;
+ $m++;
+ }
+ }
+ ?>
+ + با وارد کردن تابع مورد نظر و مشتق آن در فرم زیر، یکی از ریشههای آن با استفاده از روش دوبخشی با توجه به مقدار تخمینی اولیه وارد شده محاسبه میشود. تکرارها تا زمانی که 7 رقم بامعنا پاسخ ثابت بماند ادامه مییابد و در نهایت ریشه تابع با تقریب بدست میآید. در صورت تمایل میتوانید تابع دلخواه خود را در فرم وارد کنید یا با کلیک بر روی دکمه پایین فرم، از یک تابع پیشفرض برای محاسبات استفاده کنید. +
+ + +یا
(2*sin(x))+((2*x+5)*cos(x))
+ در نظر گرفته شده است
+ sin(تابع مدنظر)
+ و
+ cos(تابع مدنظر)
+ و
+ tan(تابع مدنظر)
+ و
+ sinh(تابع مدنظر)
+ و
+ cosh(تابع مدنظر)
+ باید وارد شوند. برای وارد کردن رادیکال از قالب
+ sqrt(تابع مدنظر)
+ و برای لگاریتم از قالب
+ log(تابع مدنظر,پایه لگاریتم)
+ استفاده نمائید. در وارد کردن تابع توجه نمائید که اپراتور ضرب را حتما بین ارقام و متغیر ها درج نمائید برای مثال بجای عبارت
+ 2x
+ یا
+ 2sin(x)
+ باید
+ 2*x
+ یا
+ 2*sin(x)
+ نوشته شود تا تابع پس از ترجمه مطابق با سینتکس پی اچ پی باشد. درصورتی که پس از ثبت تابع روند تکرار نمایش داده نشد تابع خود را تصحیح کنید و یا از دکمه پایین آن استفاده نمائید که بمنظور سهولت روند تست تابعی پیشفرض با کلیک بر روی آن در فرم قرار میگیرد و میتوانید روند محاسبات را مشاهده نمائید.
+ ' . $function . '
' . $functionderivative . '
' . $function . '
' . $functionderivative . '
';
+ function f($x)
+ {
+ global $function;
+ return eval("return $function;");
+ }
+ function df($x)
+ {
+ global $functionderivative;
+ return eval("return $functionderivative;");
+ }
+ $m = 0;
+ $stop = false;
+ $x = $initial;
+ while ($m < 100) {
+ echo 'x=' . $x . ', f(x)=' . f($x) . ', df(x)/dx=' . df($x) . '
';
+ $oldx = $x;
+ $x = $x - (f($x) / df($x));
+ echo 'پاسخ محاسبه شده: ' . $x;
+ $delta = abs($x - $oldx) / abs($x);
+ if ($delta < pow(10, -7)) {
+ $stop = true;
+ }
+ if ($stop) {
+ break;
+ }
+ $oldx = $x;
+ $m++;
+ }
+ }
+ ?>
+ + با وارد کردن تابع مورد نظر و دو مقدار اولیه دلخواه، یکی از ریشههای آن با استفاده از روش وتری محاسبه میشود. تکرارها تا زمانی که 7 رقم بامعنا پاسخ ثابت بماند ادامه مییابد و در نهایت ریشه تابع با تقریب بدست میآید. در صورت تمایل میتوانید تابع دلخواه خود را در فرم وارد کنید یا با کلیک بر روی دکمه پایین فرم، از یک تابع پیشفرض برای محاسبات استفاده کنید. +
+ + +یا
sin(تابع مدنظر)
+ و
+ cos(تابع مدنظر)
+ و
+ tan(تابع مدنظر)
+ و
+ sinh(تابع مدنظر)
+ و
+ cosh(تابع مدنظر)
+ باید وارد شوند. برای وارد کردن رادیکال از قالب
+ sqrt(تابع مدنظر)
+ و برای لگاریتم از قالب
+ log(تابع مدنظر,پایه لگاریتم)
+ استفاده نمائید. در وارد کردن تابع توجه نمائید که اپراتور ضرب را حتما بین ارقام و متغیر ها درج نمائید برای مثال بجای عبارت
+ 2x
+ یا
+ 2sin(x)
+ باید
+ 2*x
+ یا
+ 2*sin(x)
+ نوشته شود تا تابع پس از ترجمه مطابق با سینتکس پی اچ پی باشد. درصورتی که پس از ثبت تابع روند تکرار نمایش داده نشد تابع خود را تصحیح کنید و یا از دکمه پایین آن استفاده نمائید که بمنظور سهولت روند تست تابعی پیشفرض با کلیک بر روی آن در فرم قرار میگیرد و میتوانید روند محاسبات را مشاهده نمائید.
+ ' . $function . '
' . $function . '
';
+ function f($x)
+ {
+ global $function;
+ return eval("return $function;");
+ }
+ $m = 0;
+ $x = 0;
+ $stop = false;
+ while ($m < 100) {
+ echo 'a=' . $a . ', b=' . $b . ', f(a)=' . f($a) . ', f(b)=' . f($b) . '
';
+ $oldx = $x;
+ $x = $a - ((f($a) * ($b - $a)) / (f($b) - f($a)));
+ if (f($a) * f($x) < 0) {
+ $b = $x;
+ echo 'پاسخ محاسبه شده: ' . $x;
+ } else if (f($b) * f($x) < 0) {
+ $a = $x;
+ echo 'پاسخ محاسبه شده: ' . $x;
+ } else {
+ $stop = true;
+ echo 'پاسخ محاسبه شده: ' . $x;
+ }
+ $delta = abs($x - $oldx) / abs($x);
+ if ($delta < pow(10, -7)) {
+ $stop = true;
+ }
+ if ($stop) {
+ break;
+ }
+ $oldx = $x;
+ $m++;
+ }
+ }
+ ?>
+ + با وارد کردن تابع مورد نظر در فرم زیر، انتگرال آن نسبت به x با استفاده از روش سیمپسون 1/3 با تقسیم بازه وارد شده به بخش های کوچکتری (تعیین در فیلد تعداد نقاط میانی) محاسبه میشود. در صورت تمایل میتوانید تابع دلخواه خود را در فرم وارد کنید یا با کلیک بر روی دکمه پایین فرم، از یک تابع پیشفرض برای محاسبات استفاده کنید. +
+ + +یا
sin(تابع مدنظر)
+ و
+ cos(تابع مدنظر)
+ و
+ tan(تابع مدنظر)
+ و
+ sinh(تابع مدنظر)
+ و
+ cosh(تابع مدنظر)
+ باید وارد شوند. برای وارد کردن رادیکال از قالب
+ sqrt(تابع مدنظر)
+ و برای لگاریتم از قالب
+ log(تابع مدنظر,پایه لگاریتم)
+ استفاده نمائید. در وارد کردن تابع توجه نمائید که اپراتور ضرب را حتما بین ارقام و متغیر ها درج نمائید برای مثال بجای عبارت
+ 2x
+ یا
+ 2sin(x)
+ باید
+ 2*x
+ یا
+ 2*sin(x)
+ نوشته شود تا تابع پس از ترجمه مطابق با سینتکس پی اچ پی باشد. درصورتی که پس از ثبت تابع روند تکرار نمایش داده نشد تابع خود را تصحیح کنید و یا از دکمه پایین آن استفاده نمائید که بمنظور سهولت روند تست تابعی پیشفرض با کلیک بر روی آن در فرم قرار میگیرد و میتوانید روند محاسبات را مشاهده نمائید.
+ n = ' . $n . '
';
+ echo 'تابع وارد شده: ∫(' . $function . ')dx
' . $function . '
h = (b - a) / n = ' . $h . '
$result
";
+ while ($m < $n) {
+ echo '$result
";
+ $m++;
+ }
+ echo '$result
";
+ }
+ ?>
+ + با وارد کردن تابع مورد نظر در فرم زیر، انتگرال آن نسبت به x با استفاده از روش ذوزنقه ای مرکب با تقسیم بازه وارد شده به بخش های کوچکتری (تعیین در فیلد تعداد نقاط میانی) محاسبه میشود. در صورت تمایل میتوانید تابع دلخواه خود را در فرم وارد کنید یا با کلیک بر روی دکمه پایین فرم، از یک تابع پیشفرض برای محاسبات استفاده کنید. +
+ + +یا
sin(تابع مدنظر)
+ و
+ cos(تابع مدنظر)
+ و
+ tan(تابع مدنظر)
+ و
+ sinh(تابع مدنظر)
+ و
+ cosh(تابع مدنظر)
+ باید وارد شوند. برای وارد کردن رادیکال از قالب
+ sqrt(تابع مدنظر)
+ و برای لگاریتم از قالب
+ log(تابع مدنظر,پایه لگاریتم)
+ استفاده نمائید. در وارد کردن تابع توجه نمائید که اپراتور ضرب را حتما بین ارقام و متغیر ها درج نمائید برای مثال بجای عبارت
+ 2x
+ یا
+ 2sin(x)
+ باید
+ 2*x
+ یا
+ 2*sin(x)
+ نوشته شود تا تابع پس از ترجمه مطابق با سینتکس پی اچ پی باشد. درصورتی که پس از ثبت تابع روند تکرار نمایش داده نشد تابع خود را تصحیح کنید و یا از دکمه پایین آن استفاده نمائید که بمنظور سهولت روند تست تابعی پیشفرض با کلیک بر روی آن در فرم قرار میگیرد و میتوانید روند محاسبات را مشاهده نمائید.
+ n = ' . $n . '
';
+ echo 'تابع وارد شده: ∫(' . $function . ')dx
' . $function . '
h = (b - a) / n = ' . $h . '
$result
";
+ while ($m < $n) {
+ echo '$result
";
+ $m++;
+ }
+ echo '$result
";
+ }
+ ?>
+