c语言-C语言牛顿迭代法,正常运行输出错误结果,求助

问题描述

C语言牛顿迭代法,正常运行输出错误结果,求助

求方程ax^3+bx^2+c^x+d=0的解,其中xn+1=xn-f(xn)/f'(xn)
我的代码这样写的:
#include
#include
int main(void)
{
int a,b,c,d;
printf("Please input four integers:");
scanf("%d %d %d %d",&a,&b,&c,&d);
double x,y;
x=1;
while(1)
{
y=x;
x=(x-(a*pow(x,3)+b*pow(x,2)+pow(c,x)+d)/(3*a*pow(x,2)+2*b*x+pow(c,x)*log(c)));
if((fabs(x)-fabs(y))<1e-5)
{
printf("The solution is:%lf",x);
break;
}
}
return 0;
}

输出的 结果和正确答案不符,求助。。

解决方案



由于log函数原型有:
double log(double x);
float log(float x);
long double log(long double x);
没有形参x是int型,所以需要对int 型c进行强制类型转换:
x=(x-(a*pow(x,3)+b*pow(x,2)+pow(c,x)+d)/(3*a*pow(x,2)+2*b*x+pow(c,x)*log((float)c)));



时间: 2024-10-11 14:43:01

c语言-C语言牛顿迭代法,正常运行输出错误结果,求助的相关文章

如何用c语言解决牛顿迭代法

问题描述 如何用c语言解决牛顿迭代法 用c语言解决牛顿迭代法,要求显示表达式,求大神帮助,期末作业,完不成要挂科,谢谢了 解决方案 一元任意阶次方程求解,注意初始值不正确也有可能得不到解.http://blog.csdn.net/qq_27183003/article/details/49808191 解决方案二: #include <stdio.h> #include <math.h> //y=x^3-5x^2+16x-80 float f(float x) { return (

C语言OJ项目参考(2405)牛顿迭代法求根

2405: 牛顿迭代法求根 Description 用牛顿迭代法求根.方程为ax3+bx2+cx+d=0.系数a,b,c,d的值一次为1,2,3,4,由主函数输入.求x在1附近的一个实根.求出根后由主函数输出.结果保留两位小数. Input 系数a,b,c,d的值 Output x在1附近的一个实根 Sample Input 1 2 3 4 Sample Output -1.65 HINT 主函数已给定如下,提交时不需要包含下述主函数 /* C代码 */ int main() { double

C语言实现牛顿迭代法解方程

利用迭代算法解决问题,需要做好以下三个方面的工作: 一.确定迭代变量 在可以用迭代算法解决的问题中,我们可以确定至少存在一个可直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量. 二.建立迭代关系式 所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系).迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成. 三.对迭代过程进行控制 在什么时候结束迭代过程?这是编写迭代程序必须考虑的问题.不能让迭代过程无休止地执行下去.迭代过程的控制通常可分为两种情况

linux c语言 使用system echo把变量输出到文件中

问题描述 linux c语言 使用system echo把变量输出到文件中 #include #include #include int main(void) { char *url = "asdfasdfasdf"; system("echo $url > /home/ylk/Desktop/1.txt"); printf(" url=%s ", url); return 0; } 结果不能把字符串写到1.txt中,怎么修改可以写进去呢?

c#-C#实现对c语言的在线编译并且根据输出评分

问题描述 C#实现对c语言的在线编译并且根据输出评分 大二学生狗一枚,最近在写一个c语言的考试系统.但是在编程题这里需要用到在线编译和根据输出评分.希望大神帮帮忙,最好能有代码可以让我分析一下.谢谢 解决方案 http://www.cnblogs.com/ma6174/archive/2013/05/12/3074034.html C#类似的思路,C#使用Process.Start调用命令行.

c++-C语言,输入星期首字母输出星期名,请问这小程序哪里错了,

问题描述 C语言,输入星期首字母输出星期名,请问这小程序哪里错了, 输入s或t,程序提示输入下一个字母 输入下一个字母后,程序没有显示结果就退出了 #include int main(void) { puts("enter a letter"); char ch; ch = getchar(); getchar(); switch (ch) { case 'm':puts("monday"); break; case 't':puts("enter nex

c 指针-C语言 结构体指针字符 二进制文件写入和读取 指针字符输出错误

问题描述 C语言 结构体指针字符 二进制文件写入和读取 指针字符输出错误 typedef struct s{ char *name; }student; /*将结构体读出并显示*/ int IsUsed(char str) { FILE *fp = fopen("test","rb"); student s; s.name = (char) malloc(sizeof(char)*20); fread(&s,sizeof(student),1,fp); wh

c-C语言数组大小写转化后多输出一行乱码

问题描述 C语言数组大小写转化后多输出一行乱码 #include "stdio.h" #include "stdafx.h" #include "iostream" using namespace std; int main() { char c[256], d[256]; int i = 0; while ((c[i++] = getchar()) != 'n'); c[i] = ''; i = 0; printf("%s"

指针-C语言,请问这个逆序输出的程序哪里错了

问题描述 C语言,请问这个逆序输出的程序哪里错了 #include int main(void) { char ar[] = "abc"; char ar1[4] = {0}; //设置指针p指向数组ar的首地址 char *p = ar; //使指针p指向数组ar的最后一个有效字符 for (; *p++ != '';) ; p--; //获取数组ar的长度 int i,j; i = strlen(ar); //将逆序排列存储到数组ar1中 for (j = 0; j < i;