用matlab中%f n,matlab使用(解n元方程组).doc

41528d3028836879cd698677c3999917.gifmatlab使用(解n元方程组).doc

试着用C语言编程解N元方程组#include#defineM10floatfdel(float*p,intn){inti;floatsum=0;for(i=0;isum+=*(p+i);sum/=n;return(fabs(sum));}voidchu(float*p){inti;for(i=0;i*(p+i)=999;return;}voidprint(float*p,intn){inti;for(i=0;iprintf(“x%d=%f“,i+1,*(p+i));return;}/**voidscan(float**p,intn){inti,j;for(i=0;ifor(j=0;j{printf(“a%d%d=“,i+1,j+1);scanf(“%f“,*(p+i)+j);}return;}**/voidden(float*a,float*b,intn){inti;for(i=0;i*(a+i)=*(b+i);return;}voidjie(float*p0,floata[M][M],float*p,float*b,intn){floatsum=0;inti,j;for(i=0;i{for(j=0;j{if(i!=j)sum=sum+a[i][j]*p0[j];else{n=a[i][j];continue;}}*(p+i)=*(b+i)-sum/n;}}main(){floatx0[M],xi[M][M],b[M],x[M];inti,j,n;chu(x0);chu(b);chu(x);for(i=0;i{printf(“x0=%f“,x0[i]);printf(“b=%f“,b[i]);printf(“x=%f“,x[i]);}for(i=0;ifor(j=0;jxi[i][j]=0;printf(“shuruwuizhishugeshun=“);scanf(“%d“,printf(“shurufangchengzugegexishua[i][j]=“);for(i=0;ifor(j=0;j{printf(“a%d%d=“,i+1,j+1);scanf(“%f“,}printf(“x[1][1]=%f“,xi[1][1]);for(i=0;iprint(*(xi+i),n);for(i=0;iprintf(“abs=%f“,fdel(*(xi+i),n));}#includedoublef(doublex){doubley;y=2*x*x*x-9*x*x+12*x-3;return(y);}intmain(){doublet,a=0,b=1,tmp;t=(a+b)/2;while((f(b)-f(a))>1e-8){t=(a+b)/2;tmp=f(t);if(tmp==0)break;elseif(tmp1e-6|abs(func2_1(x))>1e-6)x=x1;x1=x-func2_1(x)/func2_1_1(x);if(abs(x1)0.000001orAbs(func2_1(x))>0.000001)n=n+1x=x1x1=x-func2_1(x)/func2_1_1(x)If(Abs(x1)#include#include#defineMAX_DIEDAI_TIME200main(){intn=0;doublex=0;doublejingdu=1e-6;doublefunction(doublex);doubled2function(doublex);doublenewton_diedai(doublex0,int*n,doublejingdu);system(“cls“);x=newton_diedai(x,printf(“x=%.7lf\ty=%.7lf\n“,x,function(x));getch();return0;}/*====================想要求解的方程的表达式======================*/doublefunction(doublex){returnexp(x)+10*x-3;}/*===========================想要求解的方程的表达式的导数=============================*/doubled2function(doublex){returnexp(x)+10;}/*=============================================牛顿迭代法解方程组的解x0为迭代的初值,n为迭代次数,jingdu为精度function为求根代数式,d2functoin为其导数返回最终符合一定精度的根*/doublenewton_diedai(doublex0,int*n,doublejingdu){doublex,temp;temp=d2function(x0);if(fabs(temp)>1e-10)/*防止除数为0*/{x=x0-function(x0)/temp;printf(“n=%d\tx=%.5lf\n“,*n,x);}else{printf(“error:div0:\nPressanykeytoexit:“);getch();exit(1);}if(++(*n)>MAX_DIEDAI_TIME){printf(“diedaitime:%d>MAX_DIEDAI_TIME:\nPressanykeytoexit:“,*n);getch();exit(1);}temp=function(x);if(fabs(temp)doubleF1(doublex);//要求解的函数doubleF2(doublex);//要求解的函数的一阶导数函数doubleNewton(doublex0,doublee);//通用Newton迭代子程序intmain(){doublex0=3.14159/4;doublee=10E-6;printf(“x=%f\n“,Newton(x0,e));getchar();return0;}doubleF1(doublex)//要求解的函数{returncos(x)-x;}doubleF2(doublex)//要求解的函数的一阶导数函数{return-sin(x)-1;}doubleNewton(doublex0,doublee)//通用Newton迭代子程序{doublex1;do{x1=x0;x0=x1-F1(x1)/F2(x1);}while(fabs(x0-x1)>e);returnx0;//若返回x0和x1的平均值则更佳}例2:用牛顿迭代法求方程x^2-5x+6=0,要求精确到10E-6。算法分析:取x0=100;和x0=-100;f(x)的Newton代法构造方程为:x(n+1)=xn-(xn*xn–5*xn+6)/(2*xn-5)#includedoubleF1(doublex);//要求解的函数doubleF2(doublex);//要求解的函数的一阶导数函数doubleNewton(doublex0,doublee);//通用Newton迭代子程序intmain(){doubl

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值