矩阵与数值分析实验报告

更新时间:2023-05-31 05:46:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

大连理工大学矩阵与数值分析课又叫计算机科学计算的上机实验报告,内容详尽,有程序代码和预算结果

N

一、设SN

j 21j 12,分别编制从小到大喝从大到小的顺序程序计算

S100,S10000,S1000000 ,并指出有效位数

代码:

// szfx.cpp : 定义控制台应用程序的入口点。

#include "stdafx.h"

#include <iostream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{

int n1=100;

int n2 =10000;

int n3 =1000000;

double s1=0;

double s2=0;

double s3=0;

char a;

cout<<"N=100;S->B:"<<endl;

for(double j=2;j<=n1;j++)

{

s1 += (double)1/(j*j-1);

}

cout<<"结果为:"<<s1<<endl;

cout<<"N=100;B->S:"<<endl;

s1=0;

for(double j=10000;j>=2;j--)

{

s1 += (double)1/(j*j-1);

}

cout<<"结果为:"<<s1<<endl;

cout<<"N=10000;S->B:"<<endl;

for(double j=2;j<=n2;j++)

{

s2 += (double)1/(j*j-1);

}

cout<<"结果为:"<<s2<<endl;

s2=0;

cout<<"N=10000;B->S:"<<endl;

for(double j=10000;j>=2;j--)

{

s2 += (double)1/(j*j-1);

}

大连理工大学矩阵与数值分析课又叫计算机科学计算的上机实验报告,内容详尽,有程序代码和预算结果

cout<<"结果为:"<<s2<<endl;

cout<<"N=1000000;S->B:"<<endl;

for(double j=2;j<=n3;j++)

{

s3 += (double)1/(j*j-1);

}

cout<<"结果为:"<<s3<<endl;

s3=0;

cout<<"N=1000000;B->S:"<<endl;

for(double j=1000000;j>=2;j--)

{

s3 += (double)1/(j*j-1);

}

cout<<"结果为:"<<s3<<endl;

cin>>a;

return 0;

}

计算结果:

结果分析:

二、解线性方程组

1. 分别用Jacobi迭代法和Gauss-Seidel迭代法求解线性方程组

2

1

0 0 1 21001 210 0 1 2

1 j 3 x1 x2 x 3 x 4 1 0 = 0 0 迭代法计算的停止条件为:maxx(jk 1) x(jk) 10 6。

Jacobi方法代码:

Jacobi方法计算结果:

Jacobi方法结果分析:

Gauss-Seidel方法代码:

大连理工大学矩阵与数值分析课又叫计算机科学计算的上机实验报告,内容详尽,有程序代码和预算结果

Gauss-Seidel方法结果:

Gauss-seidel结果分析:

2. 用Gauss列主元消去法、QR方法求解如下方程组。

1

2

2 1 25 2313232 x1 4 2 x2 7 5 x3 1 3 x4 0

Guass列主元消去法代码:

#include<math.h>

#include<stdio.h>

#include<string.h>

#include<conio.h>

#include<iostream>

using namespace std;

#define NUMBER 20

#define Esc 0x1b

#define Enter 0x0d

float A[NUMBER][NUMBER+1] ,ark;

int flag,n;

void exchange(int r,int k);

float max(int k);

void message();

int main()

{

float x[NUMBER];

int r,k,i,j;

char celect;

system("cls");

printf("\n\nUse Gauss.");

printf("\n\n1.Jie please press Enter.");

printf("\n\n2.Exit press Esc.");

celect=getch();

if(celect==Esc)

exit(0);

printf("\n\n input n=");

scanf("%d",&n);

printf(" \n\nInput matrix A and B:");

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

{

printf("\n\nInput a%d1--a%d%d and b%d:",i,i,n,i);

for(j=1;j<=n+1;j++) scanf("%f",&A[i][j]);

大连理工大学矩阵与数值分析课又叫计算机科学计算的上机实验报告,内容详尽,有程序代码和预算结果

}

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

ark=max(k);

if(ark==0)

{

printf("\n\nIt’s wrong!");message();

}

else if(flag!=k)

exchange(flag,k);

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

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

A[i][j]=A[i][j]-A[k][j]*A[i][k]/A[k][k];

}

x[n]=A[n][n+1]/A[n][n];

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

{

float me=0;

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

{

me=me+A[k][j]*x[j];

}

x[k]=(A[k][n+1]-me)/A[k][k];

}

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

{

printf(" \n\nx%d=%f",i,x[i]);

}

message();

return 0;

}

void exchange(int r,int k)

{

int i;

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

A[0][i]=A[r][i];

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

A[r][i]=A[k][i];

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

A[k][i]=A[0][i];

}

float max(int k)

大连理工大学矩阵与数值分析课又叫计算机科学计算的上机实验报告,内容详尽,有程序代码和预算结果

{

int i;

float temp=0;

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

if(fabs(A[i][k])>temp)

{

temp=fabs(A[i][k]);

flag=i;

}

return temp;

}

void message() {

printf("\n\n Go on Enter ,Exit press Esc!");

switch(getch())

{

case Enter: main();

case Esc: exit(0);

default:{printf("\n\nInput error!");message();} }

}

Gauss列主元消去法计算结果:

大连理工大学矩阵与数值分析课又叫计算机科学计算的上机实验报告,内容详尽,有程序代码和预算结果

Guass列主元消去法结果分析: QR方法求解代码:

QR方法求解结果:

QR方法结果分析:

本文来源:https://www.bwwdw.com/article/or34.html

Top