该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

拜求大佬,这代码里面是什么意思,这是一个求一元高次方程的代码,用的什么方法,每个函数的作用是什么,可否帮忙解答一下!感谢

#include

#include

#include

using namespace std;

double x,error=1e-8;

int sign(double number) {

if (abs(number)

if (number>0) return 1;

else return -1;

}

void QD(int n, double a1[], double b1[][120])

{

int i, t = 0;

for (i = n - 2; i>=0; i--)

{

if (i == n - 2)

{

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

b1[i][t] = a1[t];

}

else {

for (t = 0; t <=i + 2; t++)

b1[i][t] = b1[i + 1][t] * (i - t + 3);

}

}

}

void QE(double h, double j, double k,int n,double r[][120])

{

double x1, x2,t;

t = j*j - 4 * h*k;

if (t == 0)

{

x1 = -j / (2 * h);

r[0][0] = 1;

r[0][1] = x1;

}

else if (t > 0)

{

x1 = (-j - sqrt(t)) / (2 * h);

x2 = (-j + sqrt(t)) /( 2 * h);

r[0][0] = 2;

r[0][1] = x1;

r[0][2] = x2;

}

else if (t <0)

{

r[0][0] = 0;

}

}

double ABX(double a, double b, double c[], int n)

{

double y1, y2, y3;

int i;

for (i = 0, y1 = y2 = 0; i

{

y1 = y1 + c[i] * pow(a, i);

y2 = y2 + c[i] * pow(b, i);

}

switch (sign(y1)*sign(y2))

{

case 0: return (abs(y1) < error) ? y1 : y2;

case 1: return 0;

case -1:

{ while (abs(y1)>error) {

double x = (a + b) / 2;

for (i = 0, y3 = 0; i < n + 1; i++)

{

y3 = y3 + c[i] * pow(x, i);

}

if (sign(y3) == 0) return x;

if (sign(y3)*sign(y1) == -1) {

b = x;

y2 = y3;

}

else {

a= x;

y1 = y3;

}

}

}

}

}

double QJ1(double min,double c[],int n)

{

double y1, y2,y=0, t = 0;

int i,j=1;

for (i = 0, y1=0; i

{

y1 = y1 + c[i] * pow(min, i);

}

t = min - j;

for (i = 0, y2 = 0; i

{

y2 = y2 + c[i] * pow(t, i);

}

if (abs(y2) < error)

{

return t;

}

if (y1<0 && y1 < y2)

{

while(y2<0)

{

j = 2 * j;

t = min - j;

for (i = 0, y1 = y2 = 0; i

{

y2 = y2 + c[i] * pow(t, i);

}

}

ABX(t,min,c,n);

return ABX(t, min, c, n);

}

else if (y1>0 && y1 > y2)

{

while (y2>0)

{

j = 2 * j;

t = min - j;

for (i = 0, y1 = y2 = 0; i

{

y2 = y2 + c[i] * pow(t, i);

}

}

ABX(t, min, c, n);

return ABX(t, min, c, n);

}

else return 0;

}

double QJ2(double max, double c[], int n)

{

double y1, y2, y=0, t = 0;

int i, j = 1;

for (i = 0, y1 = 0; i

{

y1 = y1 + c[i] * pow(max, i);

}

t = max +j;

for (i = 0, y2 = 0; i

{

y2 = y2 + c[i] * pow(t, i);

}

if (abs(y2) < 0.00000001)

{

return t;

}

if (y1<0 && y1 < y2)

{

while (y2<0)

{

j = 2 * j;

t = max + j;

for (i = 0, y1 = y2 = 0; i

{

y2 = y2 + c[i] * pow(t, i);

}

}

ABX(t,max, c, n);

return ABX(t, max, c, n);

}

else if (y1>0 && y1 > y2)

{

while (y2>0)

{

j = 2 * j;

t = max + j;

for (i = 0, y1 = y2 = 0; i

{

y2 = y2 + c[i] * pow(t, i);

}

}

ABX(t, max, c, n);

return ABX(t, max, c, n);

}

else return 0;

}

void CJ(double r[][120], int n, double h, double j, double k, double a1[120], double b1[][120])

{

double c[120];

double q;

int i, t = 1, z, p=0,j1=0;

QE(h, j, k, n, r);

if (r[0][0] != 0)

{

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

{

j1 = r[i - 1][0] - 1;

p = r[i - 1][0];

if (p != 0)

{

p = 0;

for (z = 0; z <= i + 2; z++)

{

c[z] = *(*(b1 + (i)) + i + 2 - z);

}

q = QJ1(r[i - 1][1], c, i + 2);

if (q != 0)

{

p++;

r[i][p] = q;

}

else { p = p + 0; }

for (t = 1; t <= j1; t++)

{

ABX(*(*(r + i - 1) + t), *(*(r + i - 1) + t + 1), c, i + 2);

q = ABX(*(*(r + i - 1) + t), *(*(r + i - 1) + t + 1), c, i + 2);

if (q != 0)

{

p++;

r[i][p] = q;

}

else { p = p + 0; }

}

QJ2(*(*(r + (i - 1)) + t), c, i + 2);

q = QJ2(*(*(r + i - 1) + t), c, i + 2);

if (q != 0)

{

p++;

r[i][p] = q;

}

else { p = p + 0; }

r[i][0] = p;

}

else { cout << "此方程无解" << endl; }

}

}

else {

r[n-2][0] = 0;

cout << "此方程无解" << endl;

}

}

int main()

{

int n, i;

double c[120], a1[120], b1[120][120],r[120][120];

double h=0,j=0,k=0;

cout << "请输入方程最高次数:";

cin >> n;

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

{

cout << "请输入方程系数:";

cin >>a1[i];

}

QD(n, a1, b1);

h = *(*(b1 + 0) + 0);

j = *(*(b1 + 0) + 1);

k = *(*(b1 + 0) + 2);

CJ(r, n,h,j,k,a1,b1);

cout << "此方程共有" << *(*(r + n - 2) + 0) << "个解" << endl;

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

{

cout << "x" << i << "=" << setiosflags(ios::fixed) << setprecision(14) << *(*(r + n - 2) + i) << endl;

}

system("pause");

return 0;

}

C语言解一元高次方程代码,拜求大佬,这代码里面是什么意思,这是一个求一元高次方程的代码...相关推荐

  1. 创建方法求两个数的最大值max2,随后再写一个求3个数的最大值的函数max3。​ 要求:在max3这个函数中,调用max2函数,来实现3个数的最大值计算

    //创建方法求两个数的最大值max2,随后再写一个求3个数的最大值的函数max3.//要求:在max3这个函数中,调用max2函数,来实现3个数的最大值计算public static int max3 ...

  2. java求长方体体积用什么类_Java题求解: 设计一个求长方体的体积和表面积的类Cube,包括以下属性和方法。 l1:长方体...

    展开全部 完整代码如下,复制到eclipse中运行:public class Cube { private double l1;// 长 private double w1;// 宽 private  ...

  3. Java:创建方法求两个数的最大值max2,然后再写一个求三个数的最大值max3

    public class TestDemo{public static int max2(int a,int b){ //先写两个数的最大值max2函数return a > b ? a : b ...

  4. c语言计算二次函数顶点坐标,C语言编写一个求一元二次方程的实根的程序。 编辑一个小程序去做一元二次方程的求解(b^24ac)...

    导航:网站首页 > C语言编写一个求一元二次方程的实根的程序. 编辑一个小程序去做一元二次方程的求解(b^2>4ac) C语言编写一个求一元二次方程的实根的程序. 编辑一个小程序去做一元二 ...

  5. 用C语言解“逆序的三位数”问题

    7-3 逆序的三位数 程序每次读入一个正3位数,然后输出按位逆序的数字.注意:当输入的数字含有结尾的0时,输出不应带有前导的0.比如输入700,输出应该是7. 输入格式: 每个测试是一个3位的正整数. ...

  6. Algorithm:C++/python语言实现之求旋转数组最小值、求零子数组、求最长公共子序列和最长公共子串、求LCS与字符串编辑距离

    Algorithm:C++/python语言实现之求旋转数组最小值.求零子数组.求最长公共子序列和最长公共子串.求LCS与字符串编辑距离 目录 一.求旋转数组最小值 1.分析问题 2.解决思路 二.求 ...

  7. C语言编程>第二十周 ② 下列给定程序中,函数fun的功能是:求出数组中最大数和次最大数,并把最大数和b[0]中的数对调、次最大数和b[1]中的数对调。

    例题:下列给定程序中,函数fun的功能是:求出数组中最大数和次最大数,并把最大数和b[0]中的数对调.次最大数和b[1]中的数对调. 注意:不要改动main函数,不能增行或删行,也不能更改程序的结构. ...

  8. c语言 解元二次函数的源代码,学霸强推,高中数学万能解题方法,对数学一筹莫展的你必看!...

    数学不好怎么办,你有多头疼数学成绩?你还担心自己学不好数学吗?其实只要掌握学习的方法,数学就能迅速提升. 今天,小编整理了一份学霸们强推的数学解题方法,对大家肯定有帮助,数学不好的一定要看! 本文适合 ...

  9. java设计求圆的面积周长的代码_java编程 1.设计一个求圆的面积和周长的类,要求:1计算当半径r=10和20时,圆的面积,并显示出来 、...

    导航:网站首页 > java编程 1.设计一个求圆的面积和周长的类,要求:1计算当半径r=10和20时,圆的面积,并显示出来 . 时间:2018-11-8 java编程 1.设计一个求圆的面积和 ...

最新文章

  1. 项目中常用的19条MySQL优化
  2. 自学python要看哪些书籍-学习Python编程的最好的7本书
  3. linux ps1 目录颜色,Linux下PS1终端下的颜色设置
  4. 关于IOCP乱序的探讨
  5. 笔记 英语二 考研先导课 0126
  6. 计算机基础知识教程 百度,28、如何上网--电脑基础知识
  7. SparkSQL源代码:GlobalTempView与LocalTempView
  8. 什么是 PostgreSQL 横向子查询?
  9. 手机背景图片在安卓手机上不显示
  10. mongodb常用命令脚本化-自动化运维
  11. 2019语言与智能技术竞赛
  12. 分区助手磁盘移动毁我双系统
  13. WIN10专业版激活后变成教育版怎么解决
  14. 数字麦克风PDM信号采集与STM32 I2S接口应用(三)
  15. Python爬虫(1)
  16. 工程力学(13)—扭转二:等值圆轴横截面上的应力
  17. java小折叠车测评_java的折叠车怎么样?
  18. CNN网络模型大总结【持续更新中...】
  19. netstat -i和-s
  20. 二级c语言 真题,全国计算机二级c语言历年真题完整版.doc

热门文章

  1. 【大疆无人机OnboardSDK(三)妙算ssh远程控制台系统搭建】
  2. python 一等公民_Python中一等公民——函数
  3. 欧美是怎么做创新的?
  4. pono2的html5无法显示,ppz
  5. LeedCode 172. 阶乘后的零
  6. 但洗铅华不洗愁——写者、编者谈《往事并不如烟》
  7. canvas制作画板
  8. nginx运行php程序
  9. 【入门AUTOSAR网络管理测试】RSS-NOS状态转换
  10. 简练软考知识点整理-项目配置审核