用c语言编非线性方程的源程序,实验6非线性方程迭代法二

工程数值方法上机实验例题与答案

1-51-jpg_6_0_______-796-0-0-796.jpg

实验名称:非线性方程和非线性方程组求根(3学时)。

实验目的:掌握非线性方程和非线性方程组求根常见迭代方法,培养编程与上机调试能力。

基本要求:

(1)已知方程x x 1 0在x=2附近有一个实根。参考教材§4.2中源程序newton.c,应用C语言(或者C++、Fortran)编写割线法(插值法)迭代程序求出方程的根。

(2)已知非线性方程组 3

x2 y2 2cos(xyz) 11.07966 3 (初值取x=1, y= -1, z=0), x sin(y z) 7.24320

x y z2 2

利用教材§4.6中源程序snse.c, 应用梯度法迭代程序求出方程组的根, 并对比利用Matlab中的fsolve或者solve命令求出方程组的根结果。

实验的源程序代码:

(1)C语言(或者C++、Fortran)编写割线法(插值法)迭代程序

(2)C语言(或者C++、Fortran)编写梯度法迭代程序

#include

#include

#include

int snse(n, x, eps, f)

int n;

double x[], eps, (*f)(double [],double []);

{

int k=1000,j;

double z,d,s,*y;

y=(double *)malloc(n*sizeof(double));

z=(*f)(x,y);

while (z >= eps)

{

k = k - 1;

if (k == 0) { free(y); return(k);}

d=0.0;

for (j=0; j<=n-1; j++) d=d+y[j]*y[j];

if (d+1.0==1.0) { free(y); return(-1);}

s=z/d;

for (j=0; j<=n-1; j++) x[j]=x[j]-s*y[j];

z=(*f)(x,y);

}

free(y); return(k);

}

//包含在文件SNSE.C中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值