问题标题

求雅可比迭代法解方程组的C\C++程序,急需一个运用雅可比迭代法求线性方程组的C/C++程序!

2019-7-8来自ip:14.137.150.56的网友咨询

浏览量:218 手机版

问题补充:

求雅可比迭代法解方程组的C\C++程序,急需一个运用雅可比迭代法求线性方程组的C/C++程序!

网友答案

#include#include#include using namespace std; #define kk 50 //定义最大方程元数 int n,i,c,j,ll,hh,gg,mm; double Akkkk,xkkkk,bkk,ykk,akk,zkk,m,nn,d,e=1,w,fff ; void main() { cout程序可以用雅可比迭代法,塞德尔迭代法,逐次超松弛法求解线性方程组***">n; cout>Aij; cout>bi; cout>fff; cout>mm;*******************************判断是否对角占优*************************// for(i=0;id)// {// cout>hh;// if(hh!=1)// goto bb;// else exit(1);// }// }//********************************计算出迭代矩阵************************* for(i=0;i雅可比迭代法,请输入1!">ll;//*****************************赋迭代初值*********************************** cout>yi; int f=1; switch(ll) { case 1:goto cc; break; case 2:goto aa; break; case 3:goto dd; }//***************************雅可比迭代法************************************ cc:coutfff) { for(i=0;ie) e=fabs(zi-yi); if(i==0) { coutmm) { coutfff) { for(i=0;ie) e=fabs(zi-yi); if(i==0) { coutmm) { cout>w;/*if((w>2)||(w>w; }*///不知道为什么写成这样大于2能判断,而小于0就不能判断...

网友答案

抄来的。

加了输入。

试了可以。

#include <stdio.h>#include <math.h>Jacobidiedai(int n, double *a, double *b,double *x){int i,j;double *x0,m=0,eps;x0= (double *) malloc(n*sizeof(double));for(i=0;i<n;i++)x0i=xi;while(1){for(i=0;i<n;i++){for(j=0;j<n;j++)m+=ai*n+j*x0j;m-=ai*n+i*x0i;xi=(bi-m)/ai*n+i;m=0;}for(i=1;i<n;i++){eps=fabs(x0-x00);if(eps<fabs(xi-x0i))eps=fabs(xi-x0i);}if(eps<1e-3) return 1;for(i=0;i<n;i++)x0i=xi;}free(x0);}void main(){int i,j,n;double *a;double *b;double *x;printf("please enter n\n");scanf("%d",&n);a = (double *) malloc(sizeof(double) * n*n);b = (double *) malloc(sizeof(double) * n);x = (double *) malloc(sizeof(double) * n);printf("please enter aji\n");for (i=0;i<n*n;i++) scanf("%lf",&ai);printf("please enter bj\n");for (j=0;j<n;j++) scanf("%lf",&bj);(void) Jacobidiedai(n,a,b,x);for(i=0;i<n;i++) printf("x%d=%f\n",i,xi);}

网友答案

/************************************下面程序是解下面这个方程:可以改变方程系,程序即可解不同的方程方程:5x1+2x2+x3=82x1+8x2-3x3=21x1-3x2-6x3=1用VC6.0编译,保存代码时,以.C为后缀名************************************/#include#include#include#include#define EPS 1e-6/*允许误差*/#define MAX 100/*迭代次数的最大值*/float *Jacobi(float a34,int n);main(){int i;float a34={5,2,1,8,2,8,-3,21,1,-3,-6,1};/*方程的系数*/float *x;x=(float *)malloc(3*sizeof(float);/*动态申请内存,用于保存方程的解*/x=Jacobi(a,3);/*调用雅可比函数*/for(i=0;i<3;i++)/*输出方程的解*/{printf("x%d=%f\t",i,xi);}printf("\n");getch();}float *Jacobi(float a34,int n){float *x,*y;float epsilon,s;int i,j,k=0;x=(float *)malloc(n*sizeof(float));y=(float *)malloc(n*sizeof(float));for(i=0;i=MAX){printf"方程不收敛\n";return y;}for(i=0;i<n;i++){xi=yi;}}}

网友答案

/************************************下面程序是解下面这个方程:可以改变方程系,程序即可解不同的方程方程:5x1+2x2+x3=82x1+8x2-3x3=21x1-3x2-6x3=1用VC6.0编译,保存代码时,以.C为后缀名************************************/#include#include#include#include#define EPS 1e-6/*允许误差*/#define MAX 100/*迭代次数的最大值*/float *Jacobi(float a34,int n);main(){ int i; float a34={5,2,1,8,2,8,-3,21,1,-3,-6,1};/*方程的系数*/ float *x; x=(float *)malloc(3*sizeof(float);/*动态申请内存,用于保存方程的解*/ x=Jacobi(a,3);/*调用雅可比函数*/ for(i=0;i=MAX) { printf"方程不收敛\n"; return y; } for(i=0;i

网友答案

我有高斯赛德尔的,你拿过去改一改可用吧?#include #include #include #include #include using std::cin;using std::cout;using std::endl;using std::ofstream;#define MAX 10000 // it can be changed when it is neededdouble aMAXMAX, bMAX, resultMAX, xMAX, tmpMAX, eps, temp;int n, i, j, k;ofstream ouc("GSresult.txt");clock_t start, finished;bool modulus() {for (i = 0; i for (tmpi = -bi, j = 0; j tmpi = fabs(tmpi);}for (i = 1; i return tmp0 >eps;}int main() {while (cin >>n >>eps) {// the input termsrand(time(0));for(i = 0; i resulti = (double)(rand() % 10000) / 100.0;for(i = 0; i for(bi = 0, j = 0; j if (j == i) while (fabs(aij) else {k = (rand() % 2 == 0) ? 1 : (-1);aij = k * (double) (rand() % 10000) / 1000.0;}bi += aij * resultj;}xi = 1.1;}// algorithms termstart = clock(); // clock startedk = 0;while (modulus()) {for (i = 0; i for (temp = 0, j = 0; j for (j = i + 1; j xi = (bi - temp) / aii;}k++;}// final versionfor (i = 0, temp = 0; i temp = sqrt(temp / n);finished = clock(); // clock endouc for (i = 0; i ouc }cout }

网友答案

在C语言中数组说明的一般形式为: 类型说明符 数组名 常量表达式,……; 其中,类型说明符是任一种基本数据类型或构造数据类型。

数组名是用户定义的数组标识符。

方括号中的常量表达式表示数据元素的个数,也称为数组的长度。

例如:int a10; 说明整型数组a,有10个元素。

float b10,c20; 说明实型数组b,有10个元素,实型数组c,有20个元素。

char ch20; 说明字符数组ch,有20个元素。

对于数组类型说明应注意以下几点:1.数组的类型实际上是指数组元素的取值类型。

对于同一个数组,其所有元素的数据类型都是相同的。

2.数组名的书写规则应符合标识符的书写规定。

3.数组名不能与其它变量名相同,例如: void main(){ int a;float a10;……}是错误的。

4.方括号中常量表达式表示数组元素的个数,如a5表示数组a有5个元素。

但是其下标从0开始计算。

因此5个元素分别为a0,a1,a2,a3,a4。

5.不能在方括号中用变量来表示元素的个数, 但是可以是符号常数或常量表达式。

例如:#define FD 5void main(){ int a3+2,b7+FD;……}是合法的。

但是下述说明方式是错误的。

void main(){ int n=5;int an;……}明白了吧你所定义的数组的个数n是变量,而规定中必须是常量的,另外这一行少了"*"号else yi=(bi-aijxi)/aii;应该为else yi=(bi-aij*xi)/aii;

网友答案

我有高斯赛德尔的,你拿过去改一改可用吧?#include #include #include #include #include using std::cin;using std::cout;using std::endl;using std::ofstream;#define MAX 10000 // it can be changed when it is neededdouble aMAXMAX, bMAX, resultMAX, xMAX, tmpMAX, eps, temp;int n, i, j, k;ofstream ouc("GSresult.txt");clock_t start, finished;bool modulus() { for (i = 0; i eps;}int main() { while (cin >> n >> eps) { // the input term srand(time(0)); for(i = 0; i < n; i++) resulti = (double)(rand() % 10000) / 100.0; for(i = 0; i < n; i++) { for(bi = 0, j = 0; j < n;j++) { if (j == i) while (fabs(aij) < 1000) aij = (double) (rand() % 10000); else { k = (rand() % 2 == 0) ? 1 : (-1); aij = k * (double) (rand() % 10000) / 1000.0; } bi += aij * resultj; } xi = 1.1; } // algorithms term start = clock(); // clock started k = 0; while (modulus()) { for (i = 0; i < n; i++) { for (temp = 0, j = 0; j < i; j++) temp += aij * xj; for (j = i + 1; j < n; j++) temp += aij * xj; xi = (bi - temp) / aii; } k++; } // final version for (i = 0, temp = 0; i < n; i++) temp += (xi - resulti) * (xi - resulti); temp = sqrt(temp / n); finished = clock(); // clock end ouc << "When n is " << n << "; eps is " << eps << "; then the result {X} is\n\t"; for (i = 0; i < n; i++) ouc << xi << " "; ouc << "\nTime is: " << finished - start << "; Precision is: " << temp << "; Iteration times are " << k << "\n\n"; } cout << "Thank you!\n";}

网友答案

#include#includemain(){int n,M,i,j;printf"请输入希望迭代的次数";scanf("%d",&M);printf"请输入方程阶数";scanf("%d",&n);float p,yn,xn,ann,bn;printf"请输入误差限";scanf("%f",&p);printf"请输入系数行列式";for(i=0;iM) printf"没有得到在误差范围内的根";}

网友答案

#include#includemain(){int n,M,i,j;printf"请输入希望迭代的次数";scanf("%d",&M);printf"请输入方程阶数";scanf("%d",&n);float p,yn,xn,ann,bn;printf"请输入误差限";scanf("%f",&p);printf"请输入系数行列式";for(i=0;iM) printf"没有得到在误差范围内的根";}...

我来回答

验证码:

大家还关注

c语言编程雅可比解方程,求雅可比迭代法解方程组的C\C++程序,急需一个运用雅可比迭代法求线性方程组的C/C++程序!...相关推荐

  1. python分段函数输入x的值求y的值_C语言编程题 有一分段函数如下,要求用scanf函数输入整数x的值,求y值并在屏幕上输出。有分段函数如下,编程实现输入整...

    C语言编程题 有一分段函数如下,要求用scanf函数输入整数x的值,求y值并在屏幕上输出. 有分段函数如下,编程实现输入整 www.zhiqu.org 时间: 2020-11-22 #include ...

  2. matlab解方程大于0的解,matlab用solve解方程组,解出来有很多组解,如何编程只保留全部未知数都大于0的一组解(该方...

    matlab用solve解方程组,解出来有很多组解,如何编程只保留全部未知数都大于0的一组解(该方 mip版  关注:130  答案:4  悬赏:40 解决时间 2021-01-25 20:34 已解 ...

  3. matlab中solve解方程,怎么用Matlab解方程?

    Matlab是一款功能强大的数学软件,我们常常会使用它来解决一些数学难题,但是有时候我们刚装上这个软件的时候,就有一些问题不懂得怎么处理,比如说怎么用Matlab解方程,为了帮助大家解决这个问题,小编 ...

  4. matlab solve 解的范围,matlab怎么解方程,如何规定解的范围?

    方法/步骤: 一.解一元方程 1.先举一例,解方程"x^2+100*x+99=0". 在Matlab "Command Window"中输入如下命令:x=sol ...

  5. python编写程序解方程_用Python解方程

    我们先从简单的来 例题1: 这是北师大版小学六年级上册课本95页的一道解方程练习题: 大家可以先口算一下,这道题里面的x的值为200 接下来我们用python来实现,代码如下,每一句代码后面都写有解释 ...

  6. c语言编程题:m个人围成一圈,每数n个人就踢出一个直到剩下一个人,m个人围成一圈,1,2,3循环报数,报到3的人退出,并... m个人围成一个圈有多少种方法?...

    导航:网站首页 > m个人围成一圈,1,2,3循环报数,报到3的人退出,并... m个人围成一个圈有多少种方法? m个人围成一圈,1,2,3循环报数,报到3的人退出,并... m个人围成一个圈有 ...

  7. matlab数值法解方程fsolve,关于fsolve求解方程组数值解

    我相求这么一个方程组,现在的代码是这么写的: 主程序:syms c1 c2 c3 c4 r c = [c1,c2,c3,c4]; digits(4) es = c1*x_0(:,1)+c2*x_0(: ...

  8. matlab解方程精度,如何提高解非线性方程组的精度?

    我有一个13方程13未知数的方程组需要求解,使用的是fsolve函数,设定初值之后每次计算的结果都不同且相差比较大,精度不高. 希望各位大神能帮我修改一下计算程序以提高计算精度. 下面是自定义函数的代 ...

  9. Java解方程zu q,sympy求解方程组:导致错误:仅支持零维系统

    我想计算一组微分方程的稳态,如下面的代码所示 . from sympy import * from sympy import solve from sympy import init_printing ...

最新文章

  1. pandas 设置多重索引_Pandas多重索引使用详解
  2. win10装linux grub,在Win10下安装Ubuntu14.04安装并修复grub2
  3. 敏捷有效执行的关键软技能
  4. 查看博客模板的css代码
  5. 使用Javascript递归遍历本地文件夹
  6. Linux备份策略研究
  7. illegal text-relocation
  8. 硬盘属于计算机主机吗,电脑主机换硬盘后还是不是原来的主机?
  9. 50余家光伏企业竞标混战:0.52元最低价仍有利润!
  10. edp协议 netty_EdpProtoDebugger-EdpProtoDebugger(EDP协议调试分析工具)下载 v2.0官方版--pc6下载站...
  11. php resultful接口,来自REST ful PHP服务器的完整日历事件
  12. 鸟哥的Linux私房菜服务器架设篇 第三版
  13. 华为交换机开启web管理
  14. 硬链接(hard link)与软链接(soft link/symbolic link)
  15. sdkman 的酷炫 Logo 欢迎界面: 安装 kscript (Kotlin Shell)
  16. 【求职面试】程序员面试如何做自我介绍?
  17. 1到n中减少了一个数,顺序被打乱,找出缺失的数
  18. cannot simultaneously fetch multiple bags 异常的解决办法
  19. 什么是wind量化平台接口?
  20. AU2019直装版/Audition CC2019安装包

热门文章

  1. 2021年安全员-C证考试资料及安全员-C证免费试题
  2. 各种对象上的 toString 方法的区别和关联
  3. NSA Eternalblue SMB漏洞分析
  4. 关于NSA的EternalBlue(永恒之蓝) ms17-010漏洞利用
  5. 独家 | 一文读懂社交网络分析-上(附学习资源)
  6. hive 建表,分桶表(clustered by)、分桶且桶内排序(clustered by+sorted by)、分区表(partitioned by)、分区分桶一起用
  7. 【C】双边循环快速排序,升序和降序的区别
  8. java创建邮箱目录,Javamail新建邮件后,如何保存进已发送或草稿箱
  9. ADSL猫+无线路由=多台机器同时上网
  10. 贝叶斯公式的对数似然函数_贝叶斯估计、最大似然估计、最大后验概率估计