数值微积分

polyval(a,x)

参数

1.多项式的系数向量

2.自变量

hold on
a=[9,-5,3,7];
x=-2:0.01:5;
f=polyval(a,x);
plot(x,f,‘LineWidth‘,2);
xlabel(‘x‘);
ylabel(‘f(x)‘);
set(gca,‘FontSize‘,14);
title(‘9x^{3}-5x^{2}+3x+7 -2<=x<=5‘);
hold off

polyval()求导后某位置的值

p=[5 0 -2 0 1];
polyval(polyder(p),7);

conv(向量卷积运算)

所谓两个向量卷积,说白了就是多项式乘法。
比如:p=[1 2 3],q=[1 1]是两个向量,p和q的卷积如下:
把p的元素作为一个多项式的系数,多项式按升幂(或降幂)排列,比如就按升幂吧,写出对应的多项式:1+2x+3x^2;同样的,把q的元素也作为多项式的系数按升幂排列,写出对应的多项式:1+x。

卷积就是“两个多项式相乘取系数”。
(1+2x+3x^2)×(1+x)=1+3x+5x^2+3x^3
所以p和q卷积的结果就是[1 3 5 3]。

polyint(p,a) 求积分

参数

p 多项式系数的向量

a 积分后添加的常数项

p=[5 0 -2 0 1];
polyval(polyint(p,3),7);

diff() 求差分

>> x=[1 2 5 2 1];
>> diff(x)

ans =

     1     3    -3    -1

求斜率

>> x=[1 2];
>> y=[5 7];
>> slope=diff(y)./diff(x)

slope =

     2

求导数

hold on
%求sin(x)的导数
h=0.05;
x=0:h:2*pi;
y=sin(x);
m=diff(y)./diff(x);
plot(m,‘o--r‘);
plot(y);
hold off
hold on
x=-2:0.005:2;
y=x.^3;
m=diff(y)./diff(x);
%求二次导数 特别注意
%假设原来有三个数 求差完 得到 两个差值-->也就是说每次导数完,x的个数会减1
m2=diff(m)./diff(x(1:end-1));
plot(m);
plot(m2);
hold off

三种不同思想的积分方法

%%hold on
%Midpoint Rule 取x中点值求和乘高
h=0.05;
x=0:h:2;
midpoint=(x(1:end-1)+x(2:end))./2;
y=4*midpoint.^3;
s=sum(h*y);
plot(y);
%%hold off

%%Trapezoid Rule 把函数值算出来乘高求和
h=0.05;x=0:h:2;
y=4*x.^3;
trapezoid=(y(1:end-1)+y(2:end))/2;
s=h*sum(trapezoid);
%%
%%Simpson‘s Rule 比上面两个方法精确 没研究原理 略写

指针传参function handles

function [y]=tem(input,x)
y=input(x);
plot(x,y,‘r--‘);
xlabel(‘x‘);
ylabel(‘function(x)‘);
end
 
>> tem(@sin,0:0.01:2*pi);

 integral(被积函数,上限,下限)

>> [email protected](x) 1./(x.^3-2*x-5);
>> integral(y,0,2)

ans =

   -0.4605

原文地址:https://www.cnblogs.com/zuiaimiusi/p/11295769.html

时间: 2024-10-21 13:52:08

数值微积分的相关文章

matlab数值微积分

1.polyval()     %多项式构造函数,参数为系数vector,自变量vector f=[9,-5,3,7]; x=-2:0.01:5;   %x的范围为-2到5 y=polyval(f,x);     %x为自变量范围,f为多项式系数 plot(x,y, 'linewidth',2); xlabel('x'); ylabel('y'); set(gca,'fontsize',14); 2.polyder()   %求导 p=[5 0 -2 1];  %5x^4-2x^2+x poly

星尘计算器开发日志

高一的时候开始接触Java ME的编程,便产生了写一个计算器的想法,主要是因为自己对计算器的兴趣.热情和了解,同时在当时的Java ME平台上没有好用的计算器.当时每周回家只有几个小时的电脑时间,甚至有时只能用手机写代码,在学校的时候经常拿出本子手写代码,作为一种放松方式.这是一个缓慢艰难但有趣的过程,并且我也享受其中.于是断断续续地,终于写出一个雏形来了,支持常见的函数和数值微积分,简单的编程(do,while,自定义函数和变量),有3000~4000行,然后写了一个简单的界面,随便弄了一个图

漫步微积分六——极限是概念

前面给出的导数定义都依赖于函数极限的概念,我们对极限只做了最简短的解释.现在,我们已经知道了这一概念的目的,接下来关心一下它的意义. 考虑函数f(x),自变量在点a的领域内都有定义,但是a 点本身没定义.假设存在一个实数值L,当x越来越接近a时,f(x)越来越接近L(图1).对于这种情况我们说L是x趋近a时f(x)的极限,用符号表示为 limx→af(x)=L.(1) 图1 如果不存在这样的实数 L,我们说x趋近a时f(x)没有极限,或者limx→af(x) 不存在.另一种和(1)等价且被广泛使

通过键盘接收数值和字符,实现计算器功能。

import java.util.Scanner; /** * @author 蓝色以太 * 通过键盘接收数值和字符,实现计算器功能. */ public class Calculator { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请输入第一个数值:"); double num1=sc.nextDouble(); System.out

JavaScript字符串数值比较问题

1.问题背景 今天,在项目中遇到一个问题:两个输入框,一个输入框的值是8.4,另一个是21.3,比较两个输入框里值时,出现了8.4大于21.3 2.问题分析 首先,获取输入框中的值是字符串,而字符串比较是根据ASCII码,由于8的ASCII码比2的ASCII码大,导致出现了8.4大于21.3 3.问题验证 (1)设计源码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.

报表开发技巧之根据点击次数奇偶性排序之数值型

进行排序的时,很多时候我们可能想实现根据点击的次数进行升降序排序,也就是说点击第一次点击标题升序排序,再次点击就降序,以此类推,而不是通过选择升序进行升序排列,选择降序进行降序排列. 示例工具:报表开发工具FineReport 解决思路 由扩展后排序可知,可以根据参数值的不同来决定升序还是降序,这里也可以此思路进行实现,定义一个参数,如果参数值为1的时候,就升序,参数值为0的时候,按照数据列的负数进行升序排序,即数据列降序. 注:该方法只适用于排序数据列数据类型为数字型的字段,如果数据类型为字符

ES6用来判断数值的相关函数

最近在学习ES6的基础知识,整理了一下ES6用来判断数值的相关函数 Math.sign() =>判断正负数的函数 Math.trunc() =>取整函数 Number.isInteger() =>判断一个值是否为整数 Number.isNaN() =>用来检查一个值是否为NaN Number.isFinite() =>用来检查一个数值是否为有限的(finite) Math.cbrt() =>用于计算一个数的立方根. =>对于非数值,Math.cbrt方法内部也是先

数值转换

1.Number():适用于任何数据类型. 2.parseInt()和parseFloat()专门用于将字符串转换成数值. parseInt()----从头开始依次检测是否是数字字符,直到遇到第一个非数字字符或负号-------例1234blue将转换为1234.(小数点也为非数字字符,因此22.5将转换为22). parseFloat()-----只识别第一个小数点,其后小数点将舍去------例12.32.65将转换为12.34

Java基础语法&lt;五&gt; 大数值BigInteger BigDecimal

如果基本的整数和浮点数精度不能够满足需求,那么可以使用java.math包中的两个很有平有用的类:BigInteger和BigDecimal.这两个类可以处理包含任意长度数字序列的数值. BigInteger类实现了任意精度的整数运算 BigDecimal实现了任意精度的浮点数运算 使用静态的valueOf方法可以将普通的数值转换为大数值: BigInteger a = BigInteger.valueOf(100); 遗憾的是,不能使用人们熟悉的算术运算符(+ *)处理大数值. 而需要使用大数