已知二次函数y=f(x) 的三个整数点 ,求二次函数解析式。怎么做?

Time_to_say_goodbye 2018-02-12 11:27:32
能不能以准确的分数表示?不用小数?比如
输入三个点
1 1
2 3
5 8
输出 y=- (1/12)x²+(9/4)x-(7/6)

能实现吗???求大佬
...全文
795 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2018-02-13
  • 打赏
  • 举报
回复
楼上。
zhagoodwell 2018-02-13
  • 打赏
  • 举报
回复 1
用三阶行列式的克莱默法则+欧几里得GCD
代码:
# include <stdio.h>
# define N 3
# define ABS(x) (x>=0?x:-x)
# define YiHao(a,b) ((a)>0&&(b)<0||(a)<0&&(b)>0)
void change(long long *a,long long *b)//交换 a b的值
{
long long c=*a;
*a=*b;
*b=c;
}
long long gcd(long long x,long long y)//返回 x y的最大公因数
{
long long a;
if(!y)return x;
while(a=x%y)
(x=y)&&(y=a);
return y;
}
long long Dsum(long long A[][N])//返回N阶行列式的值
{
long long i,sum=0;
for(i=0; i<N; i++)//求D的值
sum+=A[i][0]*A[(i+1)%N][1]*A[(i+2)%N][2] - A[i][2]*A[(i+1)%N][1]*A[(i+2)%N][0];
return sum;
}
long long A[N][N];
long long D[N][2],X[N],Y[N];
long long i,j,k,sum;
int main()
{
while(1)
{
for(i=0; i<N; i++)
{
printf("输入第%d个点x y:",i+1);
scanf("%lld%lld",&D[i][0],&D[i][1]);//输入点
A[i][0]=D[i][0]*D[i][0];//求D 行列式
A[i][1]=D[i][0];
A[i][2]=1;
}
sum=Dsum(A);//求行列式A的值
if(sum)
{
printf("\nf(x)=");
for(i=0; i<N; i++)
{
for(j=0; j<N; j++)
change(&A[j][i],&D[j][1]);//将D的第二行的 点Yi 的值与A[][]中的第j列 交换
X[i]=Dsum(A);//求交换第i列之后的行列式A的值
for(j=0; j<N; j++)//交换回来 恢复A值
change(&A[j][i],&D[j][1]);
Y[i]=gcd(sum,X[i]);//求sum 和X[i] 的最大公因数
X[i]/=Y[i];//
Y[i]=sum/Y[i];//将此分数 化为最简 得到分数 X[i]/Y[i]
}
if(X[0]) //输出二次项系数
{
if(YiHao(X[0],Y[0]))printf("-");//输出系数的符号
if(Y[0]!=1&&X[0]!=Y[0])
printf("(%lld/%lld)",ABS(X[0]),ABS(Y[0]));
else if(X[0]!=1)printf("%lld",ABS(X[0]));
printf("x^2");
}
if(X[1])
{
if(YiHao(X[1],Y[1]))printf("-");//输出系数的符号
else if(X[0])printf("+");
if(Y[1]!=1&&X[1]!=Y[1])
printf("(%lld/%lld)",ABS(X[1]),ABS(Y[1]));
else if(X[1]!=1)printf("%lld",ABS(X[1]));
printf("x");
}
if(X[2])
{
if(YiHao(X[2],Y[2]))printf("-");//输出系数的符号
else if(X[0]||X[1]) printf("+");
if(Y[2]!=1&&X[2]!=Y[2])
printf("(%lld/%lld)",ABS(X[2]),ABS(Y[2]));
else printf("%lld",ABS(X[2]));
}
if(!X[0]&&!X[1]&&!X[2])printf("0");
printf("\n");
}
else printf("No answer!\n");
}
return 0;
}

5,530

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 模式及实现
社区管理员
  • 模式及实现社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧