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

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公式的图片插入吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值