用弦截法求方程f(x)=x^3-5x^2+16x-80=0的根.具体问题是要用变量要素图,画出参数的传递过程和结果。
1个回答
展开全部
//弦截法求x*x*x-5*x*x+16*x-80=0的根
求x^3-5x^2+16x-80的值:
#include<math.h>
#include<stdio.h>
float f(float x)
{ //计算f(x)的值
return x*(x*x-5*x+16)-80;
}
float point(float x1,float x2)
{
//计算与x轴交点的x值
return (x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));
}
void main()
{
//输入两个数x1,x2
float x1,x2,x;
do
{
printf("输入两个数x1,x2:");
scanf("%f%f",&x1,&x2);
}
while (f(x1)*f(x2) >= 0); // 当输入两个数大于0为真时,继续重新输入
//关键循环步骤:
do
{
x=point(x1,x2);//得到交点的值
if(f(x)*f(x1)>0)
x1=x;//新的x1
else
x2=x;
}
while (fabs(f(x)) > 0.0001); //0.0001为取值精度
printf("一个解为%f\n",x);
}
编辑本段matlab代码
定义函数
function y=f(t)
y=f(t); %函数f(t)的表达式
主程序
i=0; %迭代此处记数
t1=t1; %迭代初值t1
t2=t2; %迭代初值t2
while i<=100;
y=t2-f(t2)/(f(t2)-f(t1))*(t2-t1); %弦截法迭代格式
if abs(y-t2)>10^(-6); %收敛判据
t1=t2;
t2=y
else break
end
i=i+1;
end
fprintf('\n%s%.6f\t%s%d%','泡点温度t=',y,'迭代次数i=',i)%输出结果
开放分类:
算法编程
求x^3-5x^2+16x-80的值:
#include<math.h>
#include<stdio.h>
float f(float x)
{ //计算f(x)的值
return x*(x*x-5*x+16)-80;
}
float point(float x1,float x2)
{
//计算与x轴交点的x值
return (x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));
}
void main()
{
//输入两个数x1,x2
float x1,x2,x;
do
{
printf("输入两个数x1,x2:");
scanf("%f%f",&x1,&x2);
}
while (f(x1)*f(x2) >= 0); // 当输入两个数大于0为真时,继续重新输入
//关键循环步骤:
do
{
x=point(x1,x2);//得到交点的值
if(f(x)*f(x1)>0)
x1=x;//新的x1
else
x2=x;
}
while (fabs(f(x)) > 0.0001); //0.0001为取值精度
printf("一个解为%f\n",x);
}
编辑本段matlab代码
定义函数
function y=f(t)
y=f(t); %函数f(t)的表达式
主程序
i=0; %迭代此处记数
t1=t1; %迭代初值t1
t2=t2; %迭代初值t2
while i<=100;
y=t2-f(t2)/(f(t2)-f(t1))*(t2-t1); %弦截法迭代格式
if abs(y-t2)>10^(-6); %收敛判据
t1=t2;
t2=y
else break
end
i=i+1;
end
fprintf('\n%s%.6f\t%s%d%','泡点温度t=',y,'迭代次数i=',i)%输出结果
开放分类:
算法编程
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |