سلام
اولین برنامه محاسبه دترمینان چند جمله ای هاست
هلپ برنامه
Hello Developers,
I'm Pluskid And This Is My First Article Which I Write.
This Article Is About A Greatest Program For Computing Determinant Of A Polynomial Matrix.
Program Limitation
1.this program design and develop for polynomial arguman of degree 2 for each one.
2.you must enter all parameters (if there isn't ,enter zero)
3.maximum degree of matrix is 5
4.program has not any warden for your input integrity.
Example:
[2.3s^2-2 1.3s+1]
[2s^2+-.8s S^2+.6]
As Same As det( ) Function in Matlab.
for computing a determinant as above you must do to this way;
note.
P->>means Program output
U->>means User input
Run EXE;
P->>enter degree of matrix:
U->> 2 (enter)
P->>enter arguments of row[1]:
U->>2.3 0 -2 0 1.3 1 (enter)
P->>enter arguments of row[2]
U->>2 -.8 0 1 0 .6 (enter)
P->>output is shown now-----ENDP
About Author:
I'm Hossein Paimard From IRAN->Isfahan . i'm studying electronic in Shahrekord University.
i began my programming with c language and then continued with C++ , VB , Matlab , Html ,
JavaScript, PHP and VC++.Net is my ideal now.
you can contact me with Email Address -> pluskid2000@yahoo.com
اصل برنامه
#include<stdio.h>
#include<conio.h>
const volatile max=25;
int read(float[][max]);
void prog(float[][max],float[][max],float[],int);
void conv(float[],float[][max],float[],int);
void compute1(float[][max],float[][max],int);
void compute2(float[][max],float[][max],float[][max],int,int);
int main(){float num[6][max],g[6][max]={0},
p[15]={0};int dn,f,j,q,u,k,i=0;
dn=read(num);
compute1(num,g,dn+1);
prog(num,g,p,dn);
//input\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\
clrscr();
for(f=1;f<=dn;f++){
for(i=1;i<=dn;i++){
gotoxy(20*(i-1)+2,5+f);q=1+3*(i-1);
while(num[f][q]==0)q++;
if(3*i-q>0)printf("%3.1fs^%d",num[f][q],3*i-q);
for(k=q+1;k<3+(i-1)*3;k++){
if(num[f][k]==0);else{
if(num[f][k]>0)
printf("+%3.1fs^%d",num[f][k],i*3-k);
else printf("%3.1fs^%d",num[f][k],3*i-k);}}
if(num[f][3*i]<0)printf("%3.1f",num[f][3*i]);
else if(num[f][3*i]!=0)
printf("+%3.1f",num[f][3*i]);printf(" ");}}
//output\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\
i=0;while(p[i]==0)i++;
printf("\n\n\n\n determinan of matrix is:\n\n ");
if(dn*2+1-i)printf("%.4fs^%d",p[i],dn*2+1-i);
for(j=i+1;j<dn*2+1;j++){if(p[j]==0);
else{if(p[j]>0)
printf("+%.4fs^%d",p[j],dn*2+1-j);else
printf("%fs^%d",p[j],dn*2+1-j);}}
if(p[dn*2+1]<0)
printf("%.4f",p[dn*2+1]);
else if(p[dn*2+1]!=0)
printf("+%.4f",p[dn*2+1]);
getch();return 0;}
//************************************************** **************************
int read(float num[][25]){
int dn=0;clrscr();int register i,j;
printf("\nenter degree of matrix:");
scanf("%d",&dn);
clrscr();
for(i=1;i<=dn;i++){
printf("\n\n\nenter arguments of row[%d]:\n\n",i);
for(j=1;j<=dn*3;j++)
scanf("%f",&num[i][j]);}return dn;}
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\
void prog(float num[][25],float g[][25],float p[],int dn){
int register u,i;float v[6][25]={0},h[50]={0};
for(u=1;u<=dn;u++){
compute1(g,v,dn);
if(dn-2)
prog(g,v,h,dn-1);
else{
h[1]=g[1][1];h[2]=g[1][2];h[3]=g[1][3];}
conv(h,num,p,u);
compute2(num,g,v,dn,u);
for(i=0;i<15;i++)
h[i]=0;}}
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\
void compute1(float g[][25],float v[][25],int dn){
int register i,j;
for(i=1;i<=(dn-2)*3;i++)
for(j=1;j<(dn-1);j++)
v[j][i]=g[j+1][i+3]; }
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\
void compute2(float num[][25],float g[][25],float v[][25],int dn,int u){
int register j;
for(j=1;j<dn;j++){
g[j][3*(u-1)+1]=num[j+1][3*(u-1)+1];g[j][3*(u-1)+2]=num[j+1][3*(u-1)+2];g[j][3*u]=num[j+1][3*u];}
for(j=1;j<dn-1;j++)
v[j][3*u-2]=g[j+1][3*u-2];v[j][3*u-1]=g[j+1][3*u-1];v[j][3*u]=g[j+1][3*u];}
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
void conv(float l[],float k[][25],float h[],int u){
int register i,j;
for(i=0;i<=15;i++)
for(j=1;j<=3;j++){
if(u%2)
h[j+i-1]+=l[i]*k[1][j+3*(u-1)];
else
h[j+i-1]-=l[i]*k[1][j+3*(u-1)];}}
//************************/\/\/\/\/\/\/\/\/\/\/\/\**************************//
// END OF PROGRAM //
// HOSSEIN PAIMARD //
// THURSDAY. APRIL 29-2005 //
// improve sauterday. january 28-2006 //
// PLUSKID2000 @ YAHOO.COM //
//*************************/\/\/\/\/\/\/\/\/\/\/\/**************************//
البته آخر کار یه لینک اجرام براتون می ذارم