编一程序,计算3*3阶矩阵的逆矩阵。哪位高手给解答下

编一程序,计算3*3阶矩阵的逆矩阵。哪位高手给解答下,第1张

楼上的是矩阵的转置,不是求逆矩阵!

c语言的方阵求逆的一个完整的程序如下,在tc20下运行良好:

#include <stdioh>

#include <stdlibh>

#include <conioh>

#include <mathh>

#define MAX 255

void MatrixMul(a,b,m,n,k,c) /实矩阵相乘/

int m,n,k; /m:矩阵A的行数, n:矩阵B的行数, k:矩阵B的列数/

double a[],b[],c[]; /a为A矩阵, b为B矩阵, c为结果,即c = AB /

{

int i,j,l,u;

/逐行逐列计算乘积/

for (i=0; i<=m-1; i++)

for (j=0; j<=k-1; j++)

{

u=ik+j; c[u]=00;

for (l=0; l<=n-1; l++)

c[u]=c[u]+a[in+l]b[lk+j];

}

return;

}

int brinv(a,n) /求矩阵的逆矩阵/

int n; /矩阵的阶数/

double a[]; /矩阵A/

{

int is,js,i,j,k,l,u,v;

double d,p;

is=malloc(nsizeof(int));

js=malloc(nsizeof(int));

for (k=0; k<=n-1; k++)

{

d=00;

for (i=k; i<=n-1; i++)

/全选主元,即选取绝对值最大的元素/

for (j=k; j<=n-1; j++)

{

l=in+j; p=fabs(a[l]);

if (p>d) { d=p; is[k]=i; js[k]=j;}

}

/全部为0,此时为奇异矩阵/

if (d+10==10)

{

free(is); free(js); printf(" >> This is a singular matrix, can't be inversed!\n");

return(0);

}

/行交换/

if (is[k]!=k)

for (j=0; j<=n-1; j++)

{

u=kn+j; v=is[k]n+j;

p=a[u]; a[u]=a[v]; a[v]=p;

}

/列交换/

if (js[k]!=k)

for (i=0; i<=n-1; i++)

{

u=in+k; v=in+js[k];

p=a[u]; a[u]=a[v]; a[v]=p;

}

l=kn+k;

a[l]=10/a[l]; /求主元的倒数/

/ a[kj]a[kk] -> a[kj] /

for (j=0; j<=n-1; j++)

if (j!=k)

{

u=kn+j; a[u]=a[u]a[l];

}

/ a[ij] - a[ik]a[kj] -> a[ij] /

for (i=0; i<=n-1; i++)

if (i!=k)

for (j=0; j<=n-1; j++)

if (j!=k)

{

u=in+j;

a[u]=a[u]-a[in+k]a[kn+j];

}

/ -a[ik]a[kk] -> a[ik] /

for (i=0; i<=n-1; i++)

if (i!=k)

{

u=in+k; a[u]=-a[u]a[l];

}

}

for (k=n-1; k>=0; k--)

{

/恢复列/

if (js[k]!=k)

for (j=0; j<=n-1; j++)

{

u=kn+j; v=js[k]n+j;

p=a[u]; a[u]=a[v]; a[v]=p;

}

/恢复行/

if (is[k]!=k)

for (i=0; i<=n-1; i++)

{

u=in+k; v=in+is[k];

p=a[u]; a[u]=a[v]; a[v]=p;

}

}

free(is); free(js);

return(1);

}

print_matrix(a,n)/打印的方阵a的元素/

int n; /矩阵的阶数/

double a[]; /矩阵a/

{

int i,j;

for (i=0; i<n; i++)

{

for (j=0; j<n; j++)

printf("%137f\t",a[in+j]);

printf("\n");

}

}

main()

{

int i,j,n=0;

double A[MAX],B[MAX],C[MAX];

static double a[4][4]={ {02368,02471,02568,12671},

{11161,01254,01397,01490},

{01582,11675,01768,01871},

{01968,02071,12168,02271}};

static double b[4][4],c[4][4];

clrscr();

puts("");

puts(" This program is to inverse a square matrix A(nxn) ");

puts("");

while(n<=0)

{

printf(" >> Please input the order n of the matrix (n>0): ");

scanf("%d",&n);

}

printf(" >> Please input the elements of the matrix one by one:\n >> ");

for(i=0;i<nn;i++)

{

scanf("%lf",&A[i]);

B[i]=A[i];

}

for(i=0;i<4;i++)

for(j=0;j<4;j++)

b[i][j]=a[i][j];

i=brinv(A,n);

if (i!=0)

{

printf(" Matrix A:\n");

print_matrix(B,n);

printf("\n");

printf(" A's Inverse Matrix A-:\n");

print_matrix(A,n);

printf("\n");

printf(" Product of A and A- :\n");

MatrixMul(B,A,n,n,n,C);

print_matrix(C,n);

}

printf("\n Press any key to quit");

getch();

}

首先概念要搞清楚,VB本身是一种程序设计语言,它并不是“用什么编写出来”的,而是通过人为制定的一些规则、语法等创建的一种语言,就好比现实中的语言,I am a student的意思是“我是个学生”,但如果你规定,xye是“我”,kj是“是”,ds是“一个”,sgtfk是“学生”,那么xye kj ds sgtfk的意思也是“我是个学生”,这样你也就创建了一种语言(当然实际上肯定复杂得多,这里是举个例子)。

而你所说的“可以编写软件”的VB,实际上是指VB的IDE(即集成开发环境),是用于提供VB程序开发环境的应用软件,里面包括了VB代码编辑器、编译器、调试器和图形用户界面等工具及功能。这个IDE应该是用C语言结合汇编语言做出来的,但这其实不重要,因为即使就用VB本身也能做出另一个全新的VB的IDE(不含编译器)来你信不?

IDE并不是VB不可缺少的组成部分,不用IDE,直接用其他文本编辑器(比如记事本)也能编写VB程序代码(包括图形界面)!当然只有真正的高手才会这么做。

编译器才是VB最核心的部分,它可以把VB的源代码编译为exe可执行程序。编译器毫无疑问肯定是用汇编语言做出来的,其他高级语言不可能设计出编译器来,就像人不可能自己生出自己来一样。编译器是独立于IDE的,你可以不用IDE,直接用命令行的方式来编译VB程序。

也就是说,如果你是高高高高手,只需要记事本加上编译器就可以开发VB软件了。所以“VB是用什么编写出来的”这个问题真的不重要(我知道即使回答了你,你接下来会继续问“编写出VB的软件又是用什么编写出来的?”)!

你的计算机可能中了: (1)win32hackagobot(黑客病毒)(特点:浪费系统资源,速度狂减,甚至死机),处理方法:安哥病毒专杀工具。 (2)win32hacksbbot(黑客病毒)(特点:后门程序,经常伪装成正常的系统进程,如iexplorerexe),处理方法:“sdbot" 病毒专杀工具。 (3)win32trojbeagley(恶鹰)(特点:开机自启动,并试图下载其他程序,故可能出现iexplorerexe进程),处理方法:“恶鹰专杀工具”。 (4)win32trojpswgameqqns(特点:**QQ帐号和密码,会注入IExplorerexe进程,如果用户看到IExplorer进程但并没有IE窗口),处理方法:“QQ尾巴专杀工具。 (5)win32trojqqcjbad(冲击波)(特点:第一次染上大占资源,重启后出现关机倒计时1分钟),处理方法:“QQ尾巴专杀工具”。 Win32trojqqpasskw(特点:可插入Explorerexe与ctmonexe进程中进行。)处理方法:同上。 (6)WormCodeblue(特点:攻击微软inetinfoexeIIS服务程序漏洞,并植入名为SvcHostexe的黑客程序运行,该蠕虫病毒将在服务器内存中不断生成新的线程,最终导致系统运行缓慢,甚至瘫痪)处理方法:蓝色代码专杀工具。 (7)Wormsasser(特点:利用Xp的Lasass漏洞进行广泛传播,开启上百个线程不停攻击其他网上其他系统,堵塞网络。 可让系统不断重启),处理方法:“震荡波专杀工具”。 (8)WormSircama(特点:通过电子邮件传播,它利用了Microsoft的Iframe漏洞,一旦预览或打开电子邮件,其附件病毒程序READMETXT<随即数量的空格〉pif就会自动运行。附件程序看来好似READMETXT文件,其实他的真实扩展名是pif(一种32位的PE文件格式)。该蠕虫病毒是用VB 6编写的),处理方法:毒霸笑哈哈专杀工具。 (9)WormSircamea(特点:运行时一般会大量繁殖自己,可能造成系统资源耗尽或网络严重堵塞)处理方法:Sircam病毒专杀工具。 (10)WormSupnotae(特点:该病毒综合了“冲击波”,“QQ小尾巴”,“MYBOOM”,“恶鹰”,“木马”等众多病毒于一身, 将对电脑用户造成严重危害。中毒后计算机可能出现下列现象:向外疯狂发送垃圾邮件,60秒倒计时重启,向QQ好友发送垃圾信息,打不开杀毒软件,向网络内其他机器发起攻击,上网速度缓慢等。)处理方法:“五毒虫”专杀工具。 (11)WormVilkingm(特点:为Windows平台下集成可执行文件感染,网络感染,下载网络木马或其他病毒的复合病毒,病毒运行后伪装成系统正常文件,以迷惑用户,感染计算机上的可执行文件,造成用户机器运行速度变慢,破坏用户机器的可执行文件。),处理方法:“维金病毒专杀工具。 (12)VBSKJ(特点:是一个感染html,jsp,vbs,php,asp的脚本类病毒。和欢乐时光“VBSHapplyTime”一样,该病毒采用VBScript语言编写,在互联网上通过电子邮件进行传播,也可通过邮件感染,使系统资源大量消耗,速度变慢;利用Windows系统的“资源管理器”进行寄生于传染。)处理方法:新欢乐时光专杀工具。 大概就这些了,你可以通过搜索得到这些专杀工具。 几句话提醒:下载软件要到官方下载,下载之后的文件要杀毒后再打开,及时更新病毒库,不浏览不明网站,不要随意点击广告等。 详明:不要在已染毒的系统里安装任何软件、重装系统等,病毒可能通过复制这一指令注入安装程序,格式化没有用,最好先备份文件再用分区工具重写硬盘。推荐:Windows Vista的安全性能很不错,不妨升级看看。 注:一楼的说得太轻松了,上网安全的问题远不止如此简单,希多增强安全意识。 附:Windows 正常进程 1actmovieexe =Microsoft Active Movie 2algexe =Application Layer Gateway Sevice 3btwdinsexe =Microsoft Bluetooth Service 4cmdexe =Windows Command Prompt 5Controlexe =Microsoft Control Panel 6explorerexe =Microsoft Windows Explorer 7fastexe =FastUsr 8grpconvexe =Windows Programme Group Converter 9hidservexe =Microsoft Human Interface Device Audio Server 10iexplorerexe =Microsoft Internet Explorer 11internatexe =Microsoft Input Locales 12Isassexe =Local Security Authority Service 13mmcexe =Microsoft Management Console 14msconfigexe =Windows System Configuration Utility 15pstoresexe(or)pstores =Protected Storage Service 16resautouexe =Microsoft Remote Access Dialler 17rpcssexe =Remote Proceedure Call Service 18smssexe =Session Manager Subsystem 19tapisrvexe =Microsoft TAPl Service 20wowexecexe =Microsoft Windows On Windows Exexcution Process 21wscntfyexe =Microsoft Windows Security Center

public class Arr{

    //数组

    int[] arr = {3,1,6,4,5,10,2};

    //对数组进行简单的排序

    javautilArrayssort(arr);

    //输出最大值、最小值

    Systemoutprintln("最大值:" + arr[arrlength-1] +"\n最小值:" + arr[0]);

    //从小到大输出

    Systemoutprintln(javautilArraystoString(arr));

}

以上就是关于编一程序,计算3*3阶矩阵的逆矩阵。哪位高手给解答下全部的内容,包括:编一程序,计算3*3阶矩阵的逆矩阵。哪位高手给解答下、VB可以编写软件,那VB又是用什么编写出来的呢、schost是什么程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9358082.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存