用C语言迭代函数的调用来计算X-X^3/3!+X^5/5!-X^7/7!+.....

作者&投稿:诸葛狠 (若有异议请与网页底部的电邮联系)
请用迭代代函数调用来计算下试:f(x)=x-x^3/3!+x^5/5!-x^7/7!+...~

#include
double x;
double myfuc1(unsigned int m)
{
static unsigned int n = 0;
static double x1 = 1;
if(m<n){n=0; x1=1.0;}
for(; n<=m; n++) x1 *= x /(n+1);
return x1;
}
double myfuc2(double fx,unsigned int m)
{
unsigned int i;
double res;
x = fx;
for(res=0.0,i=0; i<=m; i++)
res += myfuc1(i*2+1);
return res;
}

void main()
{
double fx;

printf("输入一小于20的正实数x:");
scanf("%lf",&fx);
printf("
输入的数:%lf",fx);
printf("
计算结果:");

for(int ii=1;ii<=20;ii++)
printf("
前%d项和: %lf:", ii, myfuc2(fx,ii));
//已实验过,如果输入的值过大,要很多项之后结果才稳定成一个常数
}

这个很简单的函数,为什么要用到迭代函数呢?

能不用迭代函数就不用迭代函数...因为迭代函数需要用到入栈和出栈,这些操作需要时间(当然这些操作并不需要我们考虑)...

下面是VB6.0代码,你能看明白的

Private Function f(x As Double, Optional diaota As Double = 0.0000001) As Double
Dim i As Long, a As Double, b As Double, c As Double
i = 1: a = x * x: b = x: c = x
Do
i = i + 2: b = -b * a / (i - 1) / i: c = c + b
If Abs(b) < diaota Then Exit Do
Loop
f = c
End Function

1:辉三角形(要求打印出10行)
==============================================================
#include<stdio.h>
main()
{
long i,j,n,k;
scanf("%ld",&n);
for(i=1;i<=n;i++)
{
k=1;
for(j=1;j<i;j++)
{
printf("%ld ",k);
k=k*(i-j)/j;
}
printf("1\n");
}
}

求一个3*3的矩阵对角线元素之合
==========================================================
直接用两个for循环遍历矩阵
然后用if判断在i=j的时候把该元素加到sum里面

3:什么迭代求法,有什么规则。距离用法(例如3次函数)
==========================================================

迭代算法是用计算机解决问题的一种基本方法。它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。

利用迭代算法解决问题,需要做好以下三个方面的工作:

一、确定迭代变量。在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。

二、建立迭代关系式。所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系)。迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成。

三、对迭代过程进行控制。在什么时候结束迭代过程?这是编写迭代程序必须考虑的问题。不能让迭代过程无休止地重复执行下去。迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是个确定的值,可以计算出来;另一种是所需的迭代次数无法确定。对于前一种情况,可以构建一个固定次数的循环来实现对迭代过程的控制;对于后一种情况,需要进一步分析出用来结束迭代过程的条件。

具体用法:我没太弄明白你说的3次函数具体是个什么意思

是求f(x)=x^3 这样的函数的结果吗?

如果这样利用迭代的话就是得出迭代公式 就是 f(x)=f(x)*x

用个循环就可以了 这个思路不难

迭代和递归有区别:迭代比递归的效率要高的多 利用内存占用资源也更少

所以写程序时提倡能用迭代来转换的递归都用迭代来代替

4:最小公倍数和最大公约数的求法;
==================================================================

这个用“辗转相除”法就可以了 相信你们老师已经讲过...


#include "stdio.h"
void main()
{
int i=1,j=1,flag=1;
double x,temp=1,sin=0;
printf("x=");
scanf("%lf",&x);//输入x值
do
{
while(j<=i)temp*=x/j++;//temp=x^(2n+1)/(2n+1)!
sin+=flag*temp;//求和
flag*=-1;//符号
i+=2;
}while(temp>=1e-5);
printf("sin(%f)=%.16lf\n",x,sin);
}

输入样例:
3.1415926
输出样例:
sin(3.141593)=0.0000000760092960


用c语言设计程序用迭代公式求cos x-x=0的一个实根
include<stdio.h> main(){ float x=0,y,e=1e-5;\/\/迭代应该有精度要求,e是自设了一个,你可以修改。while (1){y=cos(x);if(y-x>e)x=y;else {printf("%f",y);break;} } }

c语言 循环题目
它返回三个值, 一个 迭代器 函数, 一个 状态, 一个 迭代器的初始值。f, s,与 var 都是不可见的变量。 这里给它们起的名字都只是为了解说方便。你可以使用 break 来跳出 for 循环。环变量 var_i 对于循环来说是一个局部变量; 你不可以在 for 循环结束后继续使用。 如果你需要保留这些值...

C语言程序设计 迭代法
main(){double x1,x2;x1=0.0;x2=cos(x1);while(fabs(x2-x1)>le-6)\/\/当误差大于10的负六次方循环。{x1=x2;x2=cos(x1);} printf("x=%f\\n",x2);} 牛顿迭代法,是用于求方程或方程组近似根的一种常用的算法设计方法。设方程为f(x)=0,用某种数学方法导出等价的形式 x(n+1) ...

C语言程序设计,用迭代法求根号a,公式为Xn+1=(1\/2)(Xn+a\/Xn)
这很容易的啊 include <stdio.h>#include <math.h>double funcx( double x , double a) {double y;if ( x==0 )return 1;y=0.5*(x+ a\/x ) ;\/\/改此函数可以求各种迭代return y;}int main(){double x1,x2,e=1e-5 ,a;printf("input a : ");scanf("%lf", &a );x2=1...

C语言题,麻烦解答一下~O(∩_∩)O~
1.x=3,x-=2, 所以x=1,这--x 想x=0,!x = 1,所以再执行一次x-=2,打印x=-2,这时--x,!x为0 2.class是一个数组,Mary在下标为2的位置,M在name字段0下标的位置,所以选D 3.fib(5)=fib(4)+fib(3),fib(4)=fib(3)+fib(2),fib(3)=fib(2)+fib(1),fib(2)=fib(1)+...

牛顿迭代法C语言代码
以下是使用C语言实现的牛顿迭代法的代码片段,它用于寻找函数的零点。函数`func(double x)`定义了一个四次多项式,`func1(double x)`则为其导数。`Newton(double *x, double precision, int maxcyc)`函数是牛顿迭代的核心部分,它接受一个初始值`x0`、迭代精度`precision`和最大迭代次数`maxcyc`...

C语言中f=f*n表示什么意思
一般来说,计算机算法是问题规模n 的函数f(n),算法执行的时间的增长率与f(n) 的增长率正相关,称作渐进时间复杂度(Asymptotic Time Complexity)。时间复杂...上述算法用C程序的形式表示为: 程序如下: 迭代法求方程组的根 { for (i=0;i<n;i++) x=初始近似根; do { for (i=0;i<n;i++) y = x;...

在C语言中,什么是迭代法
迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法(或者称为一次解法),即一次性解决问题。迭代算法是用计算机解决问题的一种基本方法,它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤...

C语言编程 牛顿迭代法求方程1
-6;f2=6*x*x-8*x+3;\/\/对函数f1求导 x1=x-f1\/f2; count++;}while(fabs(x1-x)<=1e-5);printf("%8.7f\\n",x1); printf("%d\\n",count);return 0;} \/\/2x3-4x2+3x-6\/\/根据我改了初始值,查看结果,表明:改变初始值得到的结果并不一样,但是迭代的次数并没有改变!!

C语言编程——内容:用牛顿迭代法求一元三次方程的根。要求:由主函数调...
…如此继续下去,直到足够接近真正的x为止。其中f'(X0)是函数在X0处的斜率,也就是在X0处的导数。代码如下:include<stdio.h> include<math.h> float f(float a,float b,float c,float d,float x){ float f;f=((a*x+b)*x+c)*x+d;return f;} float f1(float a,float b,float ...

修武县19616555118: 用C语言迭代函数的调用来计算X - X^3/3!+X^5/5! - X^7/7!+..... -
郝韩枫蓼: 1:辉三角形(要求打印出10行) ============================================================== #include<stdio.h> main() { long i,j,n,k; scanf("%ld",&n); for(i=1;i<=n;i++) { k=1; for(j=1;j<i;j++) { printf("%ld ",k); k=k*(i-j)/j; } printf(...

修武县19616555118: 用c语言设计程序用迭代公式求cos x - x=0的一个实根 -
郝韩枫蓼: #include "stdio.h" #include "math.h" void main() { double x; double eps = 1e-7; double deltax = 1; x = 0; while(1) { deltax = x-cos(x); if(fabs(deltax) < eps) {break;} x = cos(x); } printf("%f", x); }

修武县19616555118: 请用迭代代函数调用来计算下试:f(x)=x - x^3/3!+x^5/5! - x^7/7!+... -
郝韩枫蓼: #include<stdio.h> double x; double myfuc1(unsigned int m) { static unsigned int n = 0; static double x1 = 1; if(m<n){n=0; x1=1.0;} for(; n<=m; n++) x1 *= x /(n+1); return x1; } double myfuc2(double fx,unsigned int m) { unsigned int i; double res; x = fx; for...

修武县19616555118: C语言中迭代法如何运用
郝韩枫蓼: #include <stdio.h> #include <math.h> float f(float x) {return (exp(-x)); } void main() { float d,x0,x1,eps=0; printf("input x0 eps:"); scanf("%f%f",&x0,&eps); do { x1 = f(x0); if (fabs(x1-x0)<eps) {printf("%f",x1); break;} else d=fabs(x1-x0); x0=x1; }while(...

修武县19616555118: c语言程序用迭代法求方程:f(x)=x3+4x2 - 10=0在[1,2]内的一个实根,且要求满足精度|x* - xn|<0.5*10 - 5 -
郝韩枫蓼: #include"stdio.h" //#include"conio.h" #include"math.h" float fun(float x) {return (x*x*x+4*x*x-10); } float xpoint(float x1,float x2) {return (x1+x2)/2; } float root(float x1,float x2) {float x,y,y1,y2;y1=fun(x1);printf("");y2=fun(x2);do{x=xpoint(x...

修武县19616555118: C语言编程的一个小细节,简单迭代方法求方程 -
郝韩枫蓼: float和double不影响算法,只是取值范围和精度不一样,如果需要高精度和更大的取值范围,就用double吧

修武县19616555118: 高分求C语言迭代函数题目.在线等. -
郝韩枫蓼: 用迭代法求X=sqrt(a).求平方根的迭代公式为:x=(1/2)(x+a/x) 要求前后两次求出的X的差的绝对值小于10e-6 .#include<stdio.h> double fabs(double n) { if (n < 0) return -n; return n; } main() { int n; double x0,x1; while (scanf("%d",&n) == 1) { x0 = 1; ...

修武县19616555118: C语言中迭代法怎么用? -
郝韩枫蓼: /* 迭代就是函数自己调用自己,用的时候注意选择迭代结束条件就行了,不要陷入无限迭代.下面给出一个递归求阶乘的简单函数示例*/ long jiechen(long n){ if(n==1)return 1; //递归结束条件 else retrun(n*jiechen(n-1));//递归过程 }

修武县19616555118: 两道C语言程序题目,急!1.请设计程序,用牛顿迭代法求f(x)=cos(x) - x的近似根,要求精确到10 - 6. (1)用函数float newtoon(float x)求方程在x附近的根; (2... -
郝韩枫蓼:[答案] 第一题代码如下,很简单所以没有什么注释:#include#includefloat Fl(float x){ float y; y=cos(x)-x; return y;}float newtoon(float x){ float y; y=x-Fl(x)/(-s...

修武县19616555118: 牛顿迭代法怎么利用c语言解一元六次方程
郝韩枫蓼: #include <stdio.h> float f1(float x) { return( x*x*x*x*x*x-x-1); } float f2(float x) { return(6*x*x*x*x*x-1); } int main() { float x[100]; int i; printf("enter x[0]="); scanf("%f",&x[0]); for(i=0;i<6;i++) { x[i+1]=x[i]-f1(x[i])/f2(x[i]); printf("%.8f\n",x[i+1]); } return 0; }听说你叫狗子?

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网