weixin_55201368 2023-03-06 21:24 采纳率: 100%
浏览 38
已结题

求直线与曲线交点编程问题

请教一下大家,关于直线和曲线交点的问题,这个程序哪里出错了呢,怎么修改?

Ny=200;%输入光线取样数量
Y=[];
Z=[];
for i=1:Ny
   beta=70;
   v(i)=beta*(i/Ny);
   k(i)=tand(v(i));
% 定义直线和曲线的函数
line12_func = @(x12) k(i)*x12;
curve12_func = @(x12) - 1.206e-06*(x12-4)^3 + 0.01432*(x12-4)^2 - 0.001057*(x12-4) - 17.46;
% 将两个函数相减,得到它们的交点
func12 = @(x12) line12_func(x12) - curve12_func(x12);
% 使用 fzero 求解交点
x0 = [39,209.094981273047];  % 从x=39开始搜索交点
x12_intersect = fzero(func12, x0);
% 输出交点的坐标
y12_intersect = line12_func(x12_intersect);
Y=[Y,x12_intersect];
Z=[Z,y12_intersect];
plot(x12_intersect, y12_intersect,'*')
hold on
end
hold on


  • 写回答

2条回答 默认 最新

  • CodeBytes 2023-03-06 22:05
    关注

    该回答引用ChatGPT

    这个程序中的问题是,每次循环迭代时,直线和曲线的函数都是一样的,只有函数的参数不同,因为它们依赖于循环变量 i。然而,由于使用 fzero 求解交点的过程是迭代过程,因此在每次迭代时都重新定义直线和曲线的函数会导致迭代过程不收敛或者收敛非常慢。

    为了解决这个问题,可以将直线和曲线的函数定义移到循环之外,然后在循环内仅仅更新函数的参数即可,如下所示:

    
    Ny=200; % 输入光线取样数量
    Y=[];
    Z=[];
    beta=70;
    k_func = @(v) tand(v);
    line12_func = @(k, x12) k*x12;
    curve12_func = @(x12) - 1.206e-06*(x12-4)^3 + 0.01432*(x12-4)^2 - 0.001057*(x12-4) - 17.46;
    func12 = @(k, x12) line12_func(k, x12) - curve12_func(x12);
    for i=1:Ny
        v=beta*(i/Ny);
        k=k_func(v);
        % 使用 fzero 求解交点
        x0 = [39,209.094981273047];  % 从x=39开始搜索交点
        x12_intersect = fzero(@(x12) func12(k, x12), x0);
        % 输出交点的坐标
        y12_intersect = line12_func(k, x12_intersect);
        Y=[Y,x12_intersect];
        Z=[Z,y12_intersect];
        plot(x12_intersect, y12_intersect,'*')
        hold on
    end
    hold on
    
    

    在修改后的程序中,直线和曲线的函数被定义成匿名函数,它们的参数分别为 k 和 x12,x12 是自变量。在每次循环迭代时,仅更新函数的参数 k,然后将更新后的函数传递给 fzero 进行迭代求解。这样,迭代过程就不会被重新定义函数所干扰,收敛速度会更快。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月15日
  • 已采纳回答 3月7日
  • 修改了问题 3月6日
  • 创建了问题 3月6日

悬赏问题

  • ¥15 webAPI接口返回值判断
  • ¥15 自动化测试 UI Automtion
  • ¥20 关于#深度学习#的问题:2708)输出:邻接矩阵A 或者 节点索引方式:通过随机游走或者其他方式,保持节点连接类似下图(语言-python)
  • ¥15 win2012 iscsi ipsec
  • ¥15 封装的 matplotlib animation 不显示图像
  • ¥15 python摄像头画面无法显示
  • ¥15 关于#3d#的问题:d标定算法(语言-python)
  • ¥15 cve,cnnvd漏洞扫描工具推荐
  • ¥15 图像超分real-esrgan网络自己训练模型遇到问题
  • ¥15 如何构建全国统一的物流管理平台?