美文网首页
求解数学问题的几条途径

求解数学问题的几条途径

作者: 静析机言 | 来源:发表于2021-12-10 10:16 被阅读0次

在逆向过程中经常要求解一些数学问题,譬如矩阵、极限、微积分、多元二次方程、因式分解等,如果掌握如下工具可以迎刃而解。

1、z3

Z3 是一个微软出品的开源约束求解器,能够解决很多种情况下的给定部分约束条件寻求一组满足条件的解的问题,可以简单理解为解方程的感觉,功能强大且易于使用。这个库可以解决所有的方程,如果有解。

编译Z3非常费时间,大概几十分钟,在Kali Linux下安装成功。Z3 v4.3.0不支持python 3.3。我们必须使用 python 2.7 ( 或者 2.6 ) 。

安装步骤:

tar –zxvf z3-solver-4.8.0.0.post1.tar.gz

root@kali:~/z3-solver-4.8.0.0.post1#python setup.py build

root@kali:~/z3-solver-4.8.0.0.post1#python setup.py install

例子:测试如下代码

>>>from z3 import *

>>>x, y ,z = BitVecs('x y z', 64)

>>>solve(((x - y) << 2) + x + z == 0xEAF917E2,((x - y) << 1) +

(x - y) + x + z == 0xE8F508C8,((x - y) << 1) + (x - y) + x - z == 0x0C0A3C68)

[z = 1853187632, y = 1919903280, x = 1953723722]

2、numpy

numpy可以安装为python的一个模块,主要解决矩阵问题。

例子:

import numpy as np

a = np.array([

    [30971, 31063, 18211, 23911, 20327, 20921, 20149,17477],

    [20051, 20359, 16699, 31121, 20641, 23633, 29759,25111],

    [25943, 27073, 25561, 23333, 26099, 17291,27457, 30839],

    [29873, 18313, 29167, 25411, 32191, 18959,19079, 16879],

   [16607, 29437, 19469, 32441, 28859, 20509, 23581, 26849],

    [16823, 19927, 26161, 18869, 19973, 26981,17431, 26633],

    [26821, 19073, 28349, 30577, 25793, 22091,31397, 26947],

    [25339, 17737, 30817, 26183, 29629, 22691,27793, 19447]

])

b = np.array([14985352,14962906, 16361024, 14982624, 16152948, 14720714, 16722910, 15883204])

r =np.linalg.solve(a,b)

print r

3、Wolfram Mathematica

可以到网站https://www.wolframalpha.com/在线求解

例:因式分解-a^4-b^4-c^4+2*a^2*b^2+2*b^2*c^2+2*a^2*c^2

也可以在电脑中安装Wolfram Mathematica进行计算

4、sage

Sage(或称SageMath)是在GPL协议下发布的开源数学软件,并且整合了许多已有的开源软件包到一个基于Python的统一界面下。其目标是创造一个Magma,Maple,Mathematica和Matlab的开源替代品。

Sage包含了从线性代数、微积分,到密码学、数值计算、组合数学、群论、图论、数论等各种初高等数学的计算功能。

例:

x=var(x)

f(x)=(pow(x,2)-3*x+2)/(pow(x,2)-4)

r1=4*lim(f(x),x=2)

print(r1)

5、sympy库

SymPy一个用于符号型数学计算(symbolic mathematics)的Python库。它旨在成为一个功能齐全的计算机代数系统(Computer Algebra System,CAS),同时保持代码简洁、易于理解和扩展。SymPy完全是用Python写的,并不需要外部的库。

可以求解下述问题:求解线性方程组、求解微积分问题、求解极限问题、矩阵化简等。

>>> from sympy import *

>>> x=Symbol('x')

>>> y=Symbol('y')

>>> z=Symbol('z')

>>> print (solve([4*(x - y) + x + z-0xEAF917E2,2*(x - y) + (x - y) + x + z-0xE8F508C8, 2*(x - y) + (x - y) + x - z-0x0C0A3C68],[x,y,z]))

{x: 1953723722, z: 1853187632, y: 1919903280}

相关文章

  • 求解数学问题的几条途径

    在逆向过程中经常要求解一些数学问题,譬如矩阵、极限、微积分、多元二次方程、因式分解等,如果掌握如下工具可以迎刃而解...

  • 管理类联考提分技巧详解

    Part One数学基础 数学包括问题求解和条件充分性判断两部分。 ​ 问题求解: 在这部分,需要提高自己的计算能...

  • 五大常用算法之一:贪心算法

    一、基本概念 二、贪心算法的基本思路 建立数学模型来描述问题 把求解的问题分成若干个子问题 对每个子问题求解,得到...

  • 如何准备数学建模?附重磅资源

      数学建模就是根据实际问题来建立数学模型,对数学模型来进行求解,然后根据结果去解决实际问题。   当需要从定量的...

  • MBA数学素质怎么培养?

    何为数学素质?它是一种准确理解深奥的数学概念,对实际问题建立数学模型,准确找到求解(求证)的正确途 一、数学素质与...

  • 关于数学建模竞赛

    【百度百科】数学建模,就是根据实际问题来建立数学模型,对数学模型来进行求解,然后根据结果去解决实际问题。数学建模竞...

  • 数学优化问题(最优化问题)

      数学优化(Mathematical Optimization)问题,也叫最优化问题,是指在一定约束条件下,求解...

  • 课堂引入之真实情境

    在数学课堂上,创设必要的问题情境是我们引入新课的常用途径,也是学生从解决生活问题抽象到数学问题,再从数学问...

  • 读《教师自我突围》有感

    数学作为一门解决生产、生活实际问题的工具学科,其途径是通过数学建模,将实际问题转化为数学问题,其表现形式是数学题目。

  • [R包开发]报错解决:replacing previous im

    1.问题产生 最近开发R包的时候碰到了一个warmings:warmings 2.寻求解决途径 这个warming...

网友评论

      本文标题:求解数学问题的几条途径

      本文链接:https://www.haomeiwen.com/subject/auhcfrtx.html