View Full Version : chuyển ma trận thường sang ma trận bậc thang
fithou91192
bài này khó viết code quá các anh cho em hướng giải quyết với
fithou91192
trời vẫn chưa có ai trả lời sao híc (?)
clamvn
cho ví dụ đi,em ngu nên ko biết 😀
fithou91192
cho ví dụ đi,em ngu nên ko biết 😀
bạn chưa học đến ma trận sao .Mình không biết viết kí hiệu toán học lên đây nên giải thích thế này:
cho một ma trận bạn làm cách nào cho chữ số đầu tiên của hàng thứ hai=0 hàng đầu giữ nguyên rồi lần lượt các hàng sau chữ số 0 tăng dần cho đến khi tạo thành bậc thang thì dừng .khả năng sư phạm của mình có hạn bạn đọc cố hiểu nhé (:-)??
clamvn
Như thế này hé :
1 1 1 1 1 1 1 1 1 1 1 1 1
0 2 2 2 2 2 2 2 2 2 2 2 2
0 0 3 3 3 3 3 3 3 3 3 3 3
0 0 0 4 4 4 4 4 4 4 4 4 4
……………………………
0 0 0 0 0 0 0 0 0 0 0 N
xuyenit55
cho ví dụ đi,em ngu nên ko biết 😀
ví dụ đây !
x y z
0 a b
0 0 c
clamvn
thử cái này xem
for(i=1;i<n;i++)
for(j=0;j<i;j++)
a[i][j]=0;
xuyenit55
thử cái này xem
for(i=1;i<n;i++)
for(j=0;j<i;j++)
a[i][j]=0;
ko đc đâu bạn ơi ! chuyển từ ma trận thường sang ma trận bậc thang phải dùng các công thức biến đổi nó sao cho định thức của nó không thay đổi kia !
giả sử dùng phương pháp của ông róc đan !
clamvn
Tại vì chủ topic nói vậy nên viết vậy.
Nói như bạn thì hiểu.
Mấy bài này chuối chác lém. Mấy bài áp dụng toán học chán ốm
lightbringer
Tại vì chủ topic nói vậy nên viết vậy.
Nói như bạn thì hiểu.
Mấy bài này chuối chác lém. Mấy bài áp dụng toán học chán ốm
tin học từ toán mà ra, bạn nói thế tức là bạn chán lập trình luôn à /!\
conrongchautien
Bạn dùng thuật toán Gauss để đưa về ma trận bậc thang. Trong 4rum có khá nhiều bài dạng này, bạn tự tìm đi nhé
clamvn
tin học từ toán mà ra, bạn nói thế tức là bạn chán lập trình luôn à /!\
(=D)>(=D)>
Mình nói chuối chứ có nói chán đâu.
Ko phải ko làm dc mà là nếu áp dụng thẳng như toán học thì quả là ……
Vấn đề là phải tìm dc thuật toán rời rạc, dễ dàng hơn.
Máy tính nó ko như não người.
Còn nếu bạn nói vậy thì làm thử đi !
heroandtn3
Thử code này xem có được không các bạn ;;)
//ma tran bac thang
#include<stdio.h>
#include<conio.h>
#define MAX 20
float a[MAX][MAX],t;
int i,j;
int hang,cot;
int nhap()
{
printf(“Nhap du lieu cho ma tran.\n”);
printf(“So hang: “); scanf(“%d”,&hang);
printf(“So cot: “); scanf(“%d”,&cot);
for (i=0;i<hang;i++)
for (j=0;j<cot;j++)
{
printf(“a[%d][%d] = “,i+1,j+1);
scanf(“%f”,&a[i][j]);
}
return 0;
}
/*****Ma tran*******
a11 a12 a13 a14
a21 a22 a23 a24
a31 a32 a33 a34
a41 a42 a43 a44
********************/
int xu_ly(float a[MAX][MAX],int hang, int cot)
{
int ii;
for (i=0;i<hang;i++)
for (ii=i+1;ii<hang;ii++)
{
t=a[ii][i]/a[i][i];
for (j=0;j<cot;j++)
a[ii][j]-=t*a[i][j];
}
return 0;
}
int main()
{
nhap();
xu_ly(a,hang,cot);
for (i=0;i<hang;i++)
{
for (j=0;j<cot;j++)
printf(“%.1f “,a[i][j]);
printf(“\n”);
}
printf(“Nhan ESC de ket thuc!”);
while(getch()!=27);
return 0;
}
dehin
Dùng các phép biến đổi sơ cấp ( thuât toán Gauss) để đưa về ma trận bậc thang
Code ko khó đâu.
Code bạn hero ko đc: Nếu a[i][i]=0 thì làm sao mà chia đc
Phải dùng thuật toán Gauss ( trong đó có bước tìm hàng có phần tử chốt khác 0, đổi chỗ 2 hàng đó, sau đó với nhân để triệt tiêu)
fithou91192
Thử code này xem có được không các bạn ;;)
//ma tran bac thang
#include<stdio.h>
#include<conio.h>
#define MAX 20
float a[MAX][MAX],t;
int i,j;
int hang,cot;
int nhap()
{
printf(“Nhap du lieu cho ma tran.\n”);
printf(“So hang: “); scanf(“%d”,&hang);
printf(“So cot: “); scanf(“%d”,&cot);
for (i=0;i<hang;i++)
for (j=0;j<cot;j++)
{
printf(“a[%d][%d] = “,i+1,j+1);
scanf(“%f”,&a[i][j]);
}
return 0;
}
/*****Ma tran*******
a11 a12 a13 a14
a21 a22 a23 a24
a31 a32 a33 a34
a41 a42 a43 a44
********************/
int xu_ly(float a[MAX][MAX],int hang, int cot)
{
int ii;
for (i=0;i<hang;i++)
for (ii=i+1;ii<hang;ii++)
{
t=a[ii][i]/a[i][i];
for (j=0;j<cot;j++)
a[ii][j]-=t*a[i][j];
}
return 0;
}
int main()
{
nhap();
xu_ly(a,hang,cot);
for (i=0;i<hang;i++)
{
for (j=0;j<cot;j++)
printf(“%.1f “,a[i][j]);
printf(“\n”);
}
printf(“Nhan ESC de ket thuc!”);
while(getch()!=27);
return 0;
}
bài này mình chạy thử có chạy đúng đâu bạn bạn xem lại thử xem sao(:=(|)
heroandtn3
bài này mình chạy thử có chạy đúng đâu bạn bạn xem lại thử xem sao(:=(|)
Tớ thấy code của tớ còn 2 chỗ chưa được:
1. Khi a[i][i]=0 thì không chia được.
2. Kết quả ở dạng làm tròn.
@fithou91192: bạn test với ma trận nào mà không ra kết quả đúng thế 😀
Dark_chautam
giúp mình bài này đi: Nhập vào một số nguyên dương có 2 chữ số, xuất ra số đảo ngược
Vd: Nhập vào 23, xuất ra 32
Dark_chautam
viết chương trình xuất ra màn hình:
*
* *
* * *
* * * *
Giúp mình đi,thanks rất nhiều
xuyenit55
giúp mình bài này đi: Nhập vào một số nguyên dương có 2 chữ số, xuất ra số đảo ngược
Vd: Nhập vào 23, xuất ra 32
bài của bạn đây !
#include<iostream>
using namespace std;
int main()
{
int n ;
int a;
cout<<” nhap n = “;
cin>>n;
while ( n >0)
{
a = n % 10;
n /=10;
cout<< a;
}
cout<<endl;
system (“pause”);
return 0;
}
fithou91192
viết chương trình xuất ra màn hình:
*
* *
* * *
* * * *
Giúp mình đi,thanks rất nhiều
trên diễn đàn có nhiều rồi mà:(:P)
#include<conio.h>
#include<stdio.h>
void main()
{
int i,j,n;
clrscr();
printf(“\n nhap so dong n=”);
scanf(“%d”,&n);
for(i=0,i<n;i++)
{
for(j=0;j<i+1;j++)
printf(“*”);
printf(“\n”);
}
getch();
}
vBulletin® Version 4.2.2, Copyright © 2022 vBulletin Solutions, Inc. All rights reserved. Administer by Kevin Hoang