PDA

View Full Version : حل n معادله n مجهول به روش کرامر



armin390
سه شنبه 26 اردیبهشت 1385, 11:37 صبح
یه مدت پیش برنامه ای برای حل n معادله n مجهول با php نوشته بودم.
این برنامه ساده برای حل از روش کرامر استفاده می کنه:


<?php
/////////////////////////////////////
// Author: Armin Borumand
// Email: armin390@gmail.com
/////////////////////////////////////
function solve($mat,$r){
$size=count($mat);
if(($detmat=det($mat))==0)return 0;
for($j=0;$j<$size;$j++)
$x[$j]=det(replacem($mat,$r,$j))/$detmat;
return $x;
}
function replacem($mat,$r,$n){
$size=count($mat);
$step=0;
for($j=0;$j<$size;$j++){
if($j==$n){
$step=1;
for($k=0;$k<$size;$k++)
$tmpmat[$k][$j]=$r[$k];
continue;
}
for($k=0;$k<$size;$k++){
$tmpmat[$k][$j]=$mat[$k][$j];
}
}
return $tmpmat;
}
function det($mat){
$det=0;
if(($size=count($mat))==2){
return $mat[0][0]*$mat[1][1]-$mat[0][1]*$mat[1][0];
}else{
for($i=0;$i<$size;$i++){
$step=0;
for($j=0;$j<$size;$j++){
if($j==$i){$step=1; continue;}
for($k=1;$k<$size;$k++){
$tmpmat[$k-1][$j-$step]=$mat[$k][$j];
}
}
$det+=($i/2==round($i/2)?1:-1)*$mat[0][$i]*det($tmpmat);
$tmpmat=array();
}
}
return $det;
}
$a=array(
array(1,1,1),
array(1,0,0),
array(0,2,1)
);
$r=array(4,0,2);
if(is_array($n=solve($a,$r))){
$i=0;
foreach($n as $r){$i++;
echo "X{$i}= ".$r."<br>";}
}
else{
echo "Error!";
}
?>

اگه مشکلی پیدا کردید اینجا مطرح کنید

Mohammad Minaei
سه شنبه 26 اردیبهشت 1385, 13:40 عصر
خیلی ممنون
فقط نمی دونم گرا از این طرح ها استقبال چندانی نمی شه؟!

armin390
سه شنبه 26 اردیبهشت 1385, 16:45 عصر
لطف داری من دنبال استقبالش نیستم....
اینم که اینجا گذاشتم واسه این بود که نشون بدم با php از این کارا هم می شه کرد و شاید روزی به درد کسی بخوره

asha64
چهارشنبه 04 فروردین 1389, 17:59 عصر
سلام
شما اين برنامه رو به زبان ديگه اي مثلاً c يا تو محيط متلب داريد من ميخواهم به عنوان زير برنامه ازش استفاده كنم.