第1个回答 2013-08-06
一般人在使用MATLAB时
对於矩阵的左除与右除很难正确的!区别出须要使用那一个
因此藉此机会说明一下
希望能更大家多多讨论
矩阵之除法是有其特别的定义
下面是例子:
假设A矩阵为方矩阵,且有反矩阵存在;b为配合之列向量或行向量,x为与b同大小之未知向量。
则以矩阵表示之联立方程式可以表示如下:
A*x=b
利用两矩阵”左除”即 ” \ ”之意义可以获得上式之解,即:
x = A\b
换言之,利用这样的左除指令,可以解联立方程式。
反之若方程式写成另一种型式:
x*A=b
则其解可以用右除表示:
x=b/A
利用左除法,若A 方矩阵,则其乘幂是使用高斯递减法解A*x=b 之矩阵方程式。
若A 不为方矩阵,则其乘幂是使用欧斯侯德之正交法,以最小平方之方式就不足或过多变数系统求解。右除法与左除法之关系实际上可表示如下:
b/A = (A'\b')'
第2个回答 2013-08-06
#include <stdio.h>
#define MAX 100
typedef struct
{
int ti,tj,tv; /*行号,列号,值*/
}Mnode;
typedef struct
{
Mnode data[MAX];
int rpos[MAX]; /*这是存放第一非0元在矩阵中的位置*/
int mu,nu,tu; /*mu是行数,nu是列数,tu是非0元个数*/
}Matrix;
CreateM(Matrix *a) /*建立三元组*/
{
int i;
clrscr();
printf("Please input mu,nu,tu :\n");
scanf("%d,%d,%d",&a->mu,&a->nu,&a->tu);
for(i=1;i<=a->tu;i++)
{
printf("Please input ti,tj,tv:\n");
scanf("%d,%d,%d",&a->data[i].ti,&a->data[i].tj,&a->data[i].tv);
}本回答被网友采纳