发新帖本帖赏金 25.00元(功能说明)我要提问
返回列表
打印
[技术讨论]

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

[复制链接]
634|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 lilijin1995 于 2023-6-12 10:28 编辑

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生成的代码,有错误是常见的。



使用特权

评论回复

打赏榜单

21ic小管家 打赏了 25.00 元 2023-07-14
理由:签约作者奖励

发新帖 本帖赏金 25.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

54

主题

162

帖子

5

粉丝