首页 > 编程语言 >如何证明数学中是根号2无理数,并且通过编程求解根号2的值

如何证明数学中是根号2无理数,并且通过编程求解根号2的值

时间:2024-06-20 11:59:51浏览次数:13  
标签:无理数 迭代 double 中是 偶数 等式 using 根号

1.  无理数和有理数的定义

           实数可以简单的分为有理数和无理数,有理数都可以采用分数  \frac{a}{b} (其中 a 和 b 都是互质的整数)表示;而无理数不可以使用分数表示,并且无理数是无限不循环小数。

2.  根号2是无理数的证明过程

目前常见的证明\sqrt{2}是无理数的证明方法是反证法,证明的过程如下

证明: 假设\sqrt{2}是有理数,那么根据有理数的定义,\sqrt{2}可以表示互质整数的分数形式,即 \sqrt{2} =  \frac{a}{b} 

                                                由于\sqrt{2} =  \frac{a}{b}                                                       (1)

将等式(1)两边同时平方可得

                                                      2=\frac{a^{2}}{b^{2}}                                                             (2) 

等式(2)可以化简为

                                                      a^{2}=2{b^{2}}                                                          (3)

由等式(3)可知,a^{2} 必为 2 的倍数,那么 a^{2} 必为偶数,a^{2} 又满足以下等式(4)的关系

                                                      a^{2}=a*a                                                        (4)

      已知 a^{2} 为偶数,那么a必然也为偶数。因为如果a为奇数的话,两个奇数相乘的结果 a^{2}也必为奇数,因此a为偶数。

同时根据等式(2)可以转化为以下等式(5)的形式

                                     b^{2}=\frac{a^{2}}{2}                                                           (5)

       由前文中的等式(3)和等式(4)我们可得 a 为偶数, 那么 a 必然为2的倍数,所以a^{2}必然是4的倍数。那么根据等式(5)我们可以得到  b^{2} 也为2的倍数(偶数),那么 b 也为偶数。

       我们得到a和b都是偶数,那么a和b之间就不满足互质的关系,那么由此我们可以得到和假设冲突的矛盾,即\sqrt{2}不是有理数。

3.   C#代码求解根号二的值

3.1   环境搭建

(1) windows 10 系统

(2)vistual stidio 19 软件

(3)控制台程序

3.2   牛顿迭代法求解

        牛顿迭代法是常见的求解方程的数值计算方法,我们先作出以下函数

                                                     f(x)=x^{2}-2=0

然后根据牛顿迭代法求解

                                                                                  

引入迭代初始值 x0=0.5;

3.3   全部源代码

全部源代码如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;

namespace 根号2的迭代法求解
{
    class Program
    {
        /// <summary>
        /// 求解函数f(x)=x^2 - 2 的值
        /// </summary>
        /// <param name="x"></param>
        /// <returns></returns>
        static double  fx_x2_2(double x)
        {
            double a = Math.Pow(x, 2) - 2;
            return Math.Pow(x,2)-2;
        }

        /// <summary>
        /// 求解fx的倒数
        /// </summary>
        /// <param name="x"></param>
        /// <returns></returns>
        static double diff_fx(double x)
        {
            return 2*x;
        }

        static void Main(string[] args)
        {
            // 定义变量
            double xk = 0.5;   // 迭代第k次的值,第一次迭代值为0.5
            double xk_1 = 0; // 迭代第k+1次的值
            double error = 0; // 设置计算误差
            // 设置迭代次数
            int iter = 1000;

            for(int i=0;i<iter;i++)
            {
                // 求解第xk+1次
                xk_1 = xk - (fx_x2_2(xk) / diff_fx(xk));
                error = xk_1 - xk;
                Console.WriteLine("迭代第{0}次,通过迭代法求解迭代值为xk_1为{1},误差值小于{2}", i+1, xk_1, error);
                Thread.Sleep(10);
                xk =  xk_1 ;
            }
            Console.ReadKey();
        }
    }
}

3.4   代码演示结果

计算结果,笔者通过牛顿迭代法设置1000次迭代次数,迭代初始值记为0.5。迭代结果为1.4142135623731。这CSDN自带的公式编辑器太难用了,我后面直接用word公式的图片插入吧。

标签:无理数,迭代,double,中是,偶数,等式,using,根号
From: https://blog.csdn.net/FakerS3S5S6/article/details/139752811

相关文章

  • OnlyOwner在Solidity中是一个修饰符,TypeError:
    目录OnlyOwner在Solidity中是一个修饰符TypeError:Datalocationmustbe"memory"or"calldata"forparameterinfunction,butnonewasgiven.functionAddDOm(addressdataOwnermAddress,stringdataProduct,stringdataNotes)OnlyOwnerpublic{^-......
  • Leetcode 1971. 寻找图中是否存在路径
    有一个具有n个顶点的双向图,其中每个顶点标记从0到n-1(包含0和n-1)。图中的边用一个二维整数数组edges表示,其中edges[i]=[ui,vi]表示顶点ui和顶点vi之间的双向边。每个顶点对由最多一条边连接,并且没有顶点存在与自身相连的边。请你确定是否存在从......
  • 【Azure Storage Account】使用Azure Policy来检查Storage Account中是否有开启匿名访
    问题描述因为StorageAccount中的Container可以开启匿名访问,因安全要求,需要检测出那些Container开启了匿名访问。所以使用AzurePolicy策略来进行检测。但是,想使用以上规则,保存报错。Thepolicydefinition'xxxxxxx'ruleisinvalid.Theresourcetype'storageAccounts/bl......
  • CF-797-E-根号分治
    797-E题目大意给定一个长为\(n\)序列\(a\),有\(q\)次询问:给定\(p,k\),你需要反复执行操作\(p=p+a_p+k\),直到\(p>n\)为止,问你要执行多少次操作。Solution考虑两种思路:1、暴力回答询问,每次反复模拟操作,直到\(p>n\)为止,时间复杂度\(O(q·\frac{n}{k})\)。2、预处理出......
  • java中是否所有的stream流都需要主动关闭
    流的概念在输出数据时,内存中的特定数据排成一个序列,依次输出到文件中,这个数据序列就像流水一样源源不断地“流”到文件中,因此该数据序列称为输出流。同样,把文件中的数据输入到内存中时,这个数据序列就像流水一样“流”到内存中,因此把该数据序列称为输入流。 输入流与输出流......
  • 查找指定目录下所有子目录文件中是否存在关键字
    #-*-coding:gb18030-*-importosimportioimportsysreload(sys)sys.setdefaultencoding('utf-8')path=r'D:\k1_total_quantity_scripts\Suites\Onetrack\DesignVaildationTEST\FeatureTEST\BSPTEST\格式化'forroot,_,filesi......
  • #莫队二次离线,根号分治#洛谷 5398 [Ynoi2018] GOSICK
    题目\(m\)组询问求\(\sum_{l\leqi,j\leqr}[a_i\bmoda_j==0],n,m,a_i\leq5\times10^5\)分析设\(f(l,r,x)\)表示\(i或j\in[1,x],i或j\in[l,r]\)时的答案,\(g_x\)表示\([1,x]\)的答案,根号的做法可以通过三秒由于涉及区间内的求值,需要在莫队的基础上二次离线,那......
  • 代码随想录 | 图论 797. 所有可能的路径(dfs) ,200. 岛屿数量 (dfs)200. 岛屿数量 (bfs)
    797.所有可能的路径https://leetcode.cn/problems/all-paths-from-source-to-target/description/List<List<Integer>>res;List<Integer>path;publicList<List<Integer>>allPathsSourceTarget(int[][]graph){res=newA......
  • SAP 消息号 GLT2002 项目种类*****丢失(在科目***中是必须的)
    【背景】在做F-40汇票收付的时候,遇到以上error。【对应方法】先找到【为文档拆分给总分类账科目分类】点击进入。将原本分类03000改成04000,返回F-40即可成功过账。......
  • 被 AI 写的游戏代码砸中是什么感觉 | 10 分钟打造你的超级 AI 编码助手
    近年来,人工智能得到了迅猛的发展,并在各行各业都得到了广泛应用。尤其是近两年来,AI开发工具逐渐成为开发者们的新宠,其中通义灵码(阿里云发布的一款基于通义大模型的AI编码助手)更是引发了无限可能性的探索。截至目前,通义灵码下载量已经突破100万。是国内使用率最高的AI编码助手......