牛顿法解方程正根
x*ln((x^2-1)^0.5+x)-(x^2-1)^0.5-0.5x=0迭代求解,vc程序代码急等各位高手帮忙!谢谢!x*ln((x^2-1)^0.5+x)-(x^2...
x*ln((x^2-1)^0.5+x)-(x^2-1)^0.5-0.5x=0
迭代求解,vc程序代码
急等各位高手帮忙!谢谢!
x*ln((x^2-1)^0.5+x)-(x^2-1)^0.5-0.5*x=0 展开
迭代求解,vc程序代码
急等各位高手帮忙!谢谢!
x*ln((x^2-1)^0.5+x)-(x^2-1)^0.5-0.5*x=0 展开
1个回答
展开全部
我是用C
得到结果:2.1155229
/*=======================================================
*Author :wacs5
*Date :20081221(YYYYMMDD)
*Function :牛顿迭代法求方程的根
*=======================================================*/
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define MAX_DIEDAI_TIME 200
main()
{
int n=0;
double x=1.2; /*初值*/
double jingdu=1e-6; /*精度*/
double function(double x);
double d2function(double x);
double newton_diedai(double x0,int *n,double jingdu);
system("cls");
x=newton_diedai(x,&n,jingdu);
printf("x=%.7lf\ty=%.7lf\n",x,function(x));
getch();
return 0;
}
/*====================
想要求解的方程的表达式
======================*/
double function(double x)
{
return x*log(sqrt(x*x-1)+x)-sqrt(x*x-1)-0.5*x;
}
/*===========================
想要求解的方程的表达式的导数
=============================*/
double d2function(double x)
{
return log(sqrt(x*x-1)+x)-0.5;
}
/*=============================================
牛顿迭代法解方程组的解
x0为迭代的初值,坦伍n为迭代次数,jingdu为精度
function为求根代数式,d2functoin为其导数
返回最终符合一定精春信携度的扒伏根
*/
double newton_diedai(double x0,int *n,double jingdu)
{
double x,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:div 0:\nPress any key to exit:");
getch();
exit(1);
}
if (++(*n)>MAX_DIEDAI_TIME)
{
printf("diedai time:%d > MAX_DIEDAI_TIME:\nPress any key to exit:",*n);
getch();
exit(1);
}
temp=function(x);
if (fabs(temp)<jingdu)
return x;
else
return newton_diedai(x,n,jingdu);
}
得到结果:2.1155229
/*=======================================================
*Author :wacs5
*Date :20081221(YYYYMMDD)
*Function :牛顿迭代法求方程的根
*=======================================================*/
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define MAX_DIEDAI_TIME 200
main()
{
int n=0;
double x=1.2; /*初值*/
double jingdu=1e-6; /*精度*/
double function(double x);
double d2function(double x);
double newton_diedai(double x0,int *n,double jingdu);
system("cls");
x=newton_diedai(x,&n,jingdu);
printf("x=%.7lf\ty=%.7lf\n",x,function(x));
getch();
return 0;
}
/*====================
想要求解的方程的表达式
======================*/
double function(double x)
{
return x*log(sqrt(x*x-1)+x)-sqrt(x*x-1)-0.5*x;
}
/*===========================
想要求解的方程的表达式的导数
=============================*/
double d2function(double x)
{
return log(sqrt(x*x-1)+x)-0.5;
}
/*=============================================
牛顿迭代法解方程组的解
x0为迭代的初值,坦伍n为迭代次数,jingdu为精度
function为求根代数式,d2functoin为其导数
返回最终符合一定精春信携度的扒伏根
*/
double newton_diedai(double x0,int *n,double jingdu)
{
double x,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:div 0:\nPress any key to exit:");
getch();
exit(1);
}
if (++(*n)>MAX_DIEDAI_TIME)
{
printf("diedai time:%d > MAX_DIEDAI_TIME:\nPress any key to exit:",*n);
getch();
exit(1);
}
temp=function(x);
if (fabs(temp)<jingdu)
return x;
else
return newton_diedai(x,n,jingdu);
}
富港检测技术(东莞)有限公司_
2024-04-02 广告
2024-04-02 广告
正弦振动多用于找出产品设计或包装设计的脆弱点。看在哪一个具体频率点响应最大(共振点);正弦振动在任一瞬间只包含一种频率的振动,而随机振动在任一瞬间包含频谱范围内的各种频率的振动。由于随机振动包含频谱内所有的频率,所以样品上的共振点会同时激发...
点击进入详情页
本回答由富港检测技术(东莞)有限公司_提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询