我试图用数字解决 x-cos(x)= 0
我需要程序在命令行上接受一个参数,该参数成为解决方案所需的准确度
当评估等式 x-cos(x)时,解决方案应该在一定的+/-指定精度(epsilon)0内产生答案。
最大迭代次数应设置为100.
该程序应以x = 0的第一个猜测值开始
所需的准确度应接受浮动和科学记谱法格式
如果提供的参数太少或太多,应该有一条警告消息,因此退出程序
如果在最大迭代中找到解决方案,则应该打印解决方案,准确度和迭代次数
如果在最大迭代中没有实现解决方案,程序应该打印一条消息来指示,然后关闭。
找出在10次幂的最大迭代中可以达到的最小精度。
我知道有涉及循环。我已经这样开始了:`
#include<stdio.h>
#include<math.h>
int
main(void)
{
int MAX_ITERATIONS[100],x=0;
float epsilon;
double epsilon;
x=cos[x];
for (x=0; x<MAX_ITERATIONS; ++x)
if (MAX_ITERATIONS < x)
x=MAX_ITERATIONS[100];
}
我不知道从哪里开始,或者我是否走在正确的轨道上。
答案 0 :(得分:0)
以下是一些可帮助您入门的代码。我的理念是只进行微小的改动,并始终保留以前工作的副本。当我打破某些东西的时候,我确切地知道我在哪里打破它。此代码并不能满足您的所有需求,但您可以自行进行这些更改。为了编译代码,我使用了cc -lm progname.c
。为了执行它,我使用了./a.out 0.002
。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char *argv[]) {
double delta, x;
double epsilon=0.001;
double previous = 1.0;
if (argc > 1)
epsilon = strtof(argv[1], NULL);
printf("Using epsilon = %12.8f\n", epsilon);
for (x=0.1; x<1.0; x+=epsilon) {
delta = fabs(x-cos(x));
if (delta < previous)
previous = delta;
else
break;
}
printf("%12.8f %12.8f %12.8f\n", x, cos(x), delta);
}