[技术讨论]让ChatGPT实现“已知三个点用C语言实现求解一元二次方程的系数”

1. 背景:已知三个点用C语言实现求解一元二次方程的系数;进入传感器行业已经即将2个多月了;在标定传感器中经常需要拟合一条曲线,
而大部分传感器拟合出来的都是一元二次方程的特性曲线;我们经常需要确定三个点:
零点:相对干净的环境中读值为0所对应的AD;
高浓度点:高浓度所对应的AD;
低浓度点:低浓度所对应的AD;
三个点驱动一条曲线。

2.拟合曲线的方法:
(1)用EXCEL拟合:
(2)MATLAB拟合;
(3)ChatGPT帮你写算法;
EXCEL拟合比较简单,MATLAB我不会,于是想到了ChatGPT; 


看不清的话我插入代码:

#include <stdio.h>



void solveQuadraticEquation(float x1, float y1, float x2, float y2, float x3, float y3, float *a, float *b, float *c) {

    float denom = (x1 - x2) * (x1 - x3) * (x2 - x3);

    *a = (y1 / ((x1 - x2) * (x1 - x3))) + (y2 / ((x2 - x1) * (x2 - x3))) + (y3 / ((x3 - x1) * (x3 - x2)));

    *b = (-y1 * (x2 + x3) / ((x1 - x2) * (x1 - x3))) - (y2 * (x1 + x3) / ((x2 - x1) * (x2 - x3))) - (y3 * (x1 + x2) / ((x3 - x1) * (x3 - x2)));

    *c = (y1 * x2 * x3 / ((x1 - x2) * (x1 - x3))) + (y2 * x1 * x3 / ((x2 - x1) * (x2 - x3))) + (y3 * x1 * x2 / ((x3 - x1) * (x3 - x2)));

}



int main() {

    float x1, y1, x2, y2, x3, y3;

    float a, b, c;

    

    // 输入三个点的坐标

    printf("请输入第一个点的坐标(x1, y1): ");

    scanf("%f %f", &x1, &y1);

    printf("请输入第二个点的坐标(x2, y2): ");

    scanf("%f %f", &x2, &y2);

    printf("请输入第三个点的坐标(x3, y3): ");

    scanf("%f %f", &x3, &y3);

    

    // 求解一元二次方程的系数

    solveQuadraticEquation(x1, y1, x2, y2, x3, y3, &a, &b, &c);

    

    // 打印结果

    printf("一元二次方程的系数:\n");

    printf("a = %.2f\n", a);

    printf("b = %.2f\n", b);

    printf("c = %.2f\n", c);

    

    return 0;

}


3. 验证流程:

打开以下C在线编译器:https://www.w3cschool.cn/tryrun/runcode?lang=c-clang
粘贴上面的代码:
 

 假设曲线方程是y=X^2+X,则系数为a=1,b=1,c=0;所以(0,0),(1,2),(2,6)是曲线方程上的三个点;把这三个点输入
点上面编译器的输入,分别输入001226,间隔加回车或空格;编译运行后可得
 


与预想的a=1,b=1,c=0一致;up主有验证了两三个曲线方程,但这个算法试用范围和一般性还有待验证,毕竟是AI生成的代码,有错误是常见的。
---------------------
作者:lilijin1995
链接:https://bbs.21ic.com/icview-3307812-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值