记录一段帮朋友写的代码,使用牛顿-拉夫逊方法解方程

news2024/9/26 5:24:58

要求

已知公式:
t = G + A B F r + B r 2 2 F + A 2 B + G A F ln ⁡ ( r − A ) + C o n s t t=\frac{G+AB}{F}r+\frac{Br^2}{2F}+\frac{A^2B+GA}{F}\ln (r-A)+Const t=FG+ABr+2FBr2+FA2B+GAln(rA)+Const
其中

  • t 的值为0-1000,每间隔25取一次值
  • A=2.12941E-10
  • B=0.637224706
  • F=1.2652E-08
  • G=4.28646E-06
  • Const=1.90196E-06

求r的值。

解法

要解这样的方程通常需要用到数值方法。对于这样的复杂方程,我们可以使用牛顿-拉夫逊法来求解。
牛顿-拉夫逊方法的基本思想是:从一个初始猜测值开始,使用函数的导数(或切线的斜率)来更新猜测值,逐步逼近函数的真实零点。
首先,我们需要定义方程和它的导数,然后根据初始值逐渐逼近正确的解。

/*使用牛顿-拉夫逊法来求解。
牛顿-拉夫逊方法的基本思想是:从一个初始猜测值开始,使用函数的导数(或切线的斜率)来更新猜测值,逐步逼近函数的真实零点。
首先,定义方程function和它的导数定义了方程和其导数derivative,然后根据初始值逐渐逼近正确的解。
newtonRaphson函数使用牛顿-拉夫逊方法迭代地逼近方程的根,从一个初始猜测值开始。
*/
#include <stdio.h>
#include <math.h>
// 设置阈值,用于决定函数的值何时足够接近于0
// 当函数的值的绝对值小于这个阈值时,可以认为我们找到了方程的一个解
#define TOLERANCE 1e-6
// 设置去迭代的最大次数,防止无限迭代
#define MAX_ITER 1000

double A = 2.12941E-10;
double B = 0.637224706;
double F = 1.2652E-08;
double G = 4.28646E-06;
double Const = 1.90196E-06;

// 定义函数
double function(double r, double t) {
    return (G + A * B) * r / F + B * r * r / (2 * F) + (A * A * B + G * A) * log(r - A) / F + Const - t;
}

// 定义函数对r的导数
double derivative(double r) {
    return (G + A * B) / F + B * r / F + (A * A * B + G * A) / (F * (r - A));
}

// 使用牛顿-拉夫逊法求解
double newtonRaphson(double t) {
    double r = 1.0; // 初始的猜测值
    for (int i = 0; i < MAX_ITER; i++) {
        double f = function(r, t);  // 函数在当前猜测值处的值
        double f_prime = derivative(r); // 函数在当前猜测值处的导数值(也就是切线的斜率)
        // f的绝对值小于阈值,返回r值
        if (fabs(f) < TOLERANCE)
            return r;

        r = r - f / f_prime;    // 牛顿-拉夫逊方法中的关键更新步骤,用于寻找函数的零点或根
    }
    // 超过迭代的最大次数,返回r值
    return r;
}

int main() {
    int i=1;
    for (double t = 25; t <= 1000; t += 25) {
        printf("第%d次迭代:",i++);
        double r = newtonRaphson(t);
        printf("t = %lf, r = %lf\n", t, r);
    }
    return 0;
}

运行结果:
在这里插入图片描述

这里,我随机选择了r = 1.0作为开始迭代的初始值。选择合适的初始猜测值很重要,因为不同的初始值可能会导致不同的收敛结果,或者在某些情况下可能不会收敛。如果r = 1.0不适用于这个方程或特定的t值范围,可能需要根据实际情况调整这个值。

通常,基于对问题的了解和对方程的形状有一定的认识,选择一个合理的初始值是有帮助的。如果不确定最佳的初始猜测值是多少,可以尝试多个值并检查结果的稳定性。

另外,阈值TOLERANCE和最大迭代次数MAX_ITER的值也需要自行根据经验选择。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1151558.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

源码!游戏源码!大量游戏源码!!!知识星球

分享 不在游戏公司有段时间了&#xff0c;但是还一直在游戏圈&#xff0c;多年的游戏经验也做了一些总结&#xff0c;还有一些私货源码没有做分享&#xff0c;所以也跟着玩一玩知识星球。 源码来自哪 1、来自网上搜集 各种开源网站&#xff0c;比如github ,gitee平常会注意搜…

Windows内存取证-中等难度 -上篇

涉及的工具&#xff1a; SysInfoTools-ost-viewer-pro volatility_2.6_lin64_standalone VT在线工具 使用到的镜像文件&#xff1a; target1-1dd8701f.vmss target2-6186fe9f.vmss POS-01-c4e8f786.vmss 题干&#xff1a; 一名员工报告说&#xff0c;他的机器在收到一封可…

【深度学习docker】roop-unleashed的docker镜像,deepfake AI换脸

快速启动roop-unleashed 要求有支持CUDA11.8的显卡Linux Docker。 使用docker启动roop-unleashed&#xff1a; docker run -d --gpus all -p 7860:7860 kevinchina/deeplearning:roop-unleashed1访问&#xff1a; 制作工程使用的一些脚本 基础镜像&#xff1a; FROM nvidi…

基于SpringBoot的在线笔记系统

技术介绍 &#x1f525;采用技术&#xff1a;SpringSpringMVCMyBatisJSPMaven &#x1f525;开发语言&#xff1a;Java &#x1f525;JDK版本&#xff1a;JDK1.8 &#x1f525;服务器&#xff1a;tomcat &#x1f525;数据库&#xff1a;mysql &#x1f525;数据库开发工具&…

时间序列预测大模型-TimeGPT

时间序列预测领域正在经历一个非常激动人心的时期。仅在过去的三年里&#xff0c;我们就看到了许多重要的贡献&#xff0c;例如N-BEATS、N-HiTS、PatchTST和TimesNet。 与此同时&#xff0c;大型语言模型 (LLM)最近在 ChatGPT 等应用程序中广受欢迎&#xff0c;因为它们无需进…

LoadRunner实现接口测试

接口测试的原理是通过测试程序模拟浏览器向服务器发送请求报文&#xff0c;服务器接收请求报文后对相应的报文做出处理然后再把应答报文发送给浏览器&#xff0c;浏览器接收应答报文这一个过程。 LoadRunner是一种性能测试工具&#xff0c;但是它也可以用来做接口测试。开发人…

kubernetes实验挑战二(troubleshoot pv pvc )

This 2-Node Kubernetes cluster is broken! Troubleshoot, fix the cluster issues and then deploy the objects according to the given architecture diagram to unlock our Image Gallery!! 1、 kubeconfig /root/.kube/config, User ‘kubernetes-admin’ Cluster: S…

基于乌鸦算法的无人机航迹规划-附代码

基于乌鸦算法的无人机航迹规划 文章目录 基于乌鸦算法的无人机航迹规划1.乌鸦搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用乌鸦算法来优化无人机航迹规划。 1.乌鸦搜索算法 …

昂首资本严肃且专业地探讨波浪理论第一波

很多投资者已经了解了波浪理论第一波&#xff0c;今天昂首资本和各位投资者再加深一下理解&#xff0c;让我们严肃且专业地探讨一下第一波。 以小时价格图表举例&#xff0c;第一波的起始点存在一个看涨反转棒。请注意&#xff0c;这个棒形结构对应了比尔威廉姆斯交易策略三智…

识别flink的反压源头

背景 flink中最常见的问题就是反压&#xff0c;这种情况下我们要正确的识别导致反压的真正的源头&#xff0c;本文就简单看下如何正确识别反压的源头 反压的源头 首先我们必须意识到现实中轻微的反压是没有必要去优化的&#xff0c;因为这种情况下是由于偶尔的流量峰值,Task…

Android---如何同view进行渲染

ViewRootImpl 在 Activity、window 和 View 三者关系之间起着承上启下的作用。一方面&#xff0c;ViewRootImpl 中通过 Binder 通信机制&#xff0c;远程调用 WindowSession 将 View 添加到 Window 中&#xff1b;另一方面&#xff0c;ViewRootImpl 在添加 View 之前&#xff0…

centos7安装配置及Linux常用命令

目录 前言 一、centos7操作系统 1.centos7简介 2.centos7的安装及配置 3.配置centos的镜像 4.虚拟机开机初始设置 5.查看、设置IP地址 二、MobaXterm工具的使用 1.MobaXterm简介 2.MobaXterm安装 3.MobaXterm的使用 4.切换国内源 三、Linux常用命令 1.查看网络…

合肥中科深谷嵌入式项目实战——人工智能与机械臂(四)

订阅&#xff1a;新手可以订阅我的其他专栏。免费阶段订阅量1000 python项目实战 Python编程基础教程系列&#xff08;零基础小白搬砖逆袭) 作者&#xff1a;爱吃饼干的小白鼠。Python领域优质创作者&#xff0c;2022年度博客新星top100入围&#xff0c;荣获多家平台专家称号。…

后门程序分析1

临时补充一个内容&#xff0c;这是一个后门程序&#xff0c;通过IDA分析&#xff0c;之后把里面收集的信息点全部整理出来&#xff08;包括:反虚拟机&#xff0c;系统信息等等&#xff09;pass&#xff1a;guet 用IDA打开先看看主函数的样子 查阅一些这些API InternetOpenA&…

C++入门06—结构体

1. 结构体基本概念 结构体属于用户自定义的数据类型&#xff0c;允许用户存储不同的数据类型 2. 结构体定义和使用 语法&#xff1a;struct 结构体名 { 结构体成员列表 }&#xff1b; 通过结构体创建变量的方式有三种(相当于python中的实例化对象)&#xff1a; struct 结构体…

图像无损放大画质修复工具 Topaz Photo AI「Mac」

Topaz Photo AI是一款适用于Mac的图像处理软件&#xff0c;它使用人工智能技术对照片进行编辑和优化。该软件提供了多种强大的功能&#xff0c;帮助用户轻松地改善图像质量&#xff0c;并实现自定义的效果。 Topaz Photo AI支持多种文件格式&#xff0c;包括JPEG、TIFF、PNG、R…

BLIP2中Q-former详解

简介 Querying Transformer&#xff0c;在冻结的视觉模型和大语言模型间进行视觉-语言对齐。 为了使Q-Former的学习达到两个目标&#xff1a; 学习到和文本最相关的视觉表示。 这种表示能够为大语言模型所解释。 需要在Q-Former结构设计和训练策略上下功夫。具体来说&…

氧化铜纳米线 纳米氧化铜 Cupric oxide 瑞禧

氧化铜纳米线 中文名称:纳米氧化铜 英文名称:Cupric oxide CAS:1317-38-0 保存条件:密封保存于干燥、阴凉的环境中 产品特点 1.氧化铜可溶于稀酸、NH4Cl、(NH4)2CO3、氰化钾溶液&#xff0c;不溶于水&#xff0c;在醇、氨溶液中溶解缓慢。高温遇氢或一氧化碳&#xff0c;可…

如何实现树莓派Raspberry Pi无公网IP环境下远程访问?

文章目录 前言如何通过 SSH 连接到树莓派步骤1. 在 Raspberry Pi 上启用 SSH步骤2. 查找树莓派的 IP 地址步骤3. SSH 到你的树莓派步骤 4. 在任何地点访问家中的树莓派4.1 安装 Cpolar内网穿透4.2 cpolar进行token认证4.3 配置cpolar服务开机自启动4.4 查看映射到公网的隧道地址…

想喝一点汤 - 如何看懂新闻联播

看懂新闻联播 埋头苦干、辛苦劳作是挣不到钱的&#xff0c;要去离钱近的地方。在中国需要靠近政府。 告知性新闻 告知性的新闻往往隐藏着机会. 国际新闻各国领导人来访 潜台词&#xff1a;双边可能达成了某种协议&#xff0c;需要重要领导见证签字。 普通人机会 外贸机会…