欧拉出行版能解除限速吗
汽车最高时速限制是厂商把程序写入汽车的行车电脑中,如果你想设置最高时速,只能刷ECU。
欧拉品牌隶属于长城汽车,是中国主流自主车企中第一个独立的新能源汽车品牌。在中国汽车企业中,长城率先将新能源汽车业务作为品牌化管理的独立新能源品牌。长城汽车于 2018 年 8 月 20 正式发布欧拉品牌,首款车型欧拉iQ于当年成都车展正式上市。同年12月26日,主打C端消费市场的欧拉黑猫上市。
用matlab编写向前欧拉公式解微分方程的程序时不能正确调用函数句柄,请高手帮忙看一看。不胜感激!!
修改为如下代码,请拷贝运行:
function ansbaidu()
clc
clear all
y0=1;
a=0;
b=1;
h=0.1;
[x,y]=euler2('odefun',y0,a,b,h); % 第一个参数是你要求解的函数名
function [x,y]=euler2(FUN,y0,a,b,h) %注意函数句柄变量的定义形式
% 常微分方程向前欧拉算法
% 参数说明
% odefun:微分方程描述函数,也就是f(x,y)
% y0:初值
% a,b:积分区间
% h:步长
x=(a:h:b)';
k=length(x);
y=zeros(1,k)';
y(1)=y0;
for n=1:(k-1)
y(n+1)=y(n)+h*feval(FUN,x(n),y(n)); %需要借助feval函数运行你的odefun
% FUN(x(i),y(i))
end
y=y'
function z=odefun(x,y)
z=y+2*x;
运行结果:
y =
1.0000 1.1000 1.2300 1.3930 1.5923 1.8315 2.1147 2.4462 2.8308 3.2738 3.7812
这是用matlab做的隐式欧拉法!但是程序提示倒数第二排函数没定义!怎么修改呢?
lengthh(x)改成length(x), 别的没什么问题
如果feval这个函数调用的时候有问题, 把feval(dyfun,x,y)直接写成dyfun(x,y)
请帮忙用C++编一个计算欧拉函数的程序。谢谢!!
http://baike.baidu.com/view/107769.html?wtp=tt
这个跑起来了.
#include stdlib.h
#include stdio.h
#define N 101
char b[N];
int i,j,t,a,phi[N]={0,1,1};
int main(){
for(i=2;iN;i++)if(!b[i])
for(j=2;i*jN;j++)b[i*j]=1;//筛素数
puts("N\tphi(N)");
for(i=2;iN;i++){
t=i;
a=1;
for(j=2;ji;j++)if(!b[j]t%j==0){//找质因数
t/=j;
a*=j-1;
}
if(a==1)a=t-1;
else a*=t;
phi[i]=a;
printf("%d\t%d\n",i,a);
}
return 0;
}
欧拉法求解????????
h=0.01,x0=0,y0=1
xn=x0+nh=0.01n
y(n+1)=yn+h(xn^3/3+1)=yn+0.01×[0.000001/3×n^3+1]=yn+0.01+10^(-8)×n^3
逐步计算即可
隐式欧拉的c ++程序
函数就是在某变化过程中有两个变量X和Y,变量Y随着变量X一起变化,而且依赖于X。如果变量X取某个特定的值,Y依确定的关系取相应的值,那么称Y是X的函数。这一要领是由法国数学家黎曼在19世纪提出来的,但是最早产生于德国的数学家菜布尼茨。他和牛顿是微积分的发明者。17世纪末,在他的文章中,首先使用了“function"一词。翻译成汉语的意思就是“函数。不过,它和我们今天使用的函数一词的内涵并不一样,它表示”幂”、“坐标”、“切线长”等概念。
直到18世纪,法国数学家达朗贝尔在进行研究中,给函数重新下了一个定义,他认为,所谓变量的函数,就是指由这些变量和常量所组成的解析表达式,即用解析式表达函数关系。后来瑞士的数学家欧拉又把函数的定义作了进一步的规范,他认为函数是能描画出的一条曲线。我们常见到的一次函数的图像、二次函数的图像、正比例函数的图像、反比例的图像等都是用图像法表示函数关系的。如果用达朗贝尔和欧拉的方法来表达函数关系,各自有它们的优点,但是如果作为函数的定义,还有欠缺。因为这两种方法都还停留在表面现象上,而没有提示出函数的本质来。
19世纪中期,法国数学家黎紧吸收了莱布尼茨、达朗贝尔和欧拉的成果,第一次准确地提出了函数的定义:如果某一个量依赖于另一个量,使后一个量变化时,前一个量也随着变化,那么就把前一个量叫做后一个量的函数。黎曼定义的最大特点在于它突出了就是之间的依赖、变化的关系,反映了函数概念的本质属性。
参考资料:中国教育信息网
欧拉回路程序
/*--------------------------------------------------------------------
* Project : ETrail - a Eulerian Trail finder
* Module : ETrail.cpp
* Author : Wesley Tseng
* Created : 1999-12-10
* Updated : 1999-12-12
* Notes :
* Copyright : (c) Copyright 1999-2000 by Wesley Tseng
* You may freely copy or redistribute this software, so
* long as there is no profit made from its use, sale
* trade or reproduction. You may not change this copy-
* right notice, and it must be included in any copy made
--------------------------------------------------------------------*/
#include iostream.h // cin, cout
#include process.h // exit() needs
typedef struct NodeT {
int info;
NodeT *next;
} *Node;
typedef enum {FALSE, TRUE} Boolean;
/*--------------------------------------------------------------------
* Subroutine: input() - a adjacency-structure generator
* Notes :
* input : NodeNumber (number of nodes)
* output : head (adjacency-structure)
--------------------------------------------------------------------*/
Node *input(int NodeNumber)
{
Node *head;
Node *tail;
char dummy;
int input1, input2;
int register i;
Node node1, node2, ptr;
head = new Node[NodeNumber];
tail = new Node[NodeNumber];
if(!head || !tail) {
cout "Out of memory..." endl;
exit(1);
}
for(i = 0; i NodeNumber; i++)
{
ptr = new NodeT;
if(!ptr) {
cout "Out of memory..." endl;
exit(1);
}
head[i] = tail[i] = ptr;
head[i]-info = 0;
}
cout "\nEnter connection pair(s)...";
cout "\nInput 0-0 while complete...\n";
for(;;)
{
cin input1 dummy input2;
if( (input1 == 0) || (input2 == 0) )
break;
if( (input1 NodeNumber) || (input2 NodeNumber) ||
(input1 0) || (input2 0) || (input1 == input2) )
{
cout "Invalid pair..." endl;
continue;
}
input1--;
input2--;
node1 = new NodeT;
node2 = new NodeT;
if( (!node1) || (!node2) )
{
cout "Out of memory..." endl;
exit(1);
}
node1-info = input1;
node1-next = NULL;
node2-info = input2;
node2-next = NULL;
tail[input1]-next = node2;
tail[input1] = node2;
head[input1]-info++;
tail[input2]-next = node1;
tail[input2] = node1;
head[input2]-info++;
}
return head;
}
/*--------------------------------------------------------------------
* Subroutine: notEulerTrail() - Eulerian Trail justifier
* Notes :
* input : head (adjacency-structure)
* NodeNumber (number of nodes)
* output : TRUE -- not a Eulerian Trail
* FALSE -- a Eulerain Trail
--------------------------------------------------------------------*/
Boolean notEulerTrail(Node *head, int NodeNumber)
{
int register i;
for(i = 0; i NodeNumber; i++)
if((head[i]-info % 2) == 1)
return TRUE;
return FALSE;
}
/*--------------------------------------------------------------------
* Subroutine: hasBranch() - branch finder
* Notes :
* input : head (adjacency-structure)
* NodeNumber (number of nodes)
* output : the number of node which still has branch
--------------------------------------------------------------------*/
int hasBranch(Node *head, int NodeNumber)
{
int register i;
for(i = 0; i NodeNumber; i++)
if(head[i]-info != 0)
break;
return i;
}
/*--------------------------------------------------------------------
* Subroutine: remove() - remove a node from current linked list
* Notes :
* input : head (adjacency-structure)
* me (the node-number to be handled)
* last (the node-number to be removed)
* output : (none)
--------------------------------------------------------------------*/
void remove(Node *head, int me, int last)
{
Node ptr;
Node temp;
ptr = head[me];
while(ptr-next != NULL)
{
temp = ptr-next;
if(temp-info == last)
{
head[me]-info--;
ptr-next = temp-next;
temp-next = NULL;
delete temp;
return;
}
ptr = temp;
}
}
/*--------------------------------------------------------------------
* Subroutine: Prepare - transform a adjacency-structure to another
* for display the trail
* Notes :
* input : head (adjacency-structure)
* NodeNumber (number of nodes)
* output : EulerTrail (reduced adjacency-structure)
--------------------------------------------------------------------*/
Node *Prepare(Node *head, int NodeNumber)
{
Node *EulerTrail;
Node *EulerHead;
Node ptr;
int register i;
int register me;
int last;
EulerTrail = new Node[NodeNumber];
EulerHead = new Node[NodeNumber];
if( (!EulerTrail) || (!EulerHead) ) {
cout "Out of memory..." endl;
exit(1);
}
for(i = 0; i NodeNumber; i++)
{
ptr = new NodeT;
if(!ptr) {
cout "Out of memory..." endl;
exit(1);
}
ptr-next = NULL;
ptr-info = 0;
EulerHead[i] = ptr;
}
while( (me = hasBranch(head, NodeNumber)) NodeNumber)
{
for(i = 0; i NodeNumber; i++)
EulerTrail[i] = EulerHead[i];
last = me;
while(1) {
remove(head, me, last);
ptr = head[me]-next;
if(ptr == NULL)
break;
head[me]-next = ptr-next;
ptr-next = EulerTrail[me]-next;
EulerTrail[me]-next = ptr;
EulerTrail[me] = ptr;
EulerHead[me]-info++;
head[me]-info--;
last = me;
me = ptr-info;
}
}
return EulerHead;
}
/*--------------------------------------------------------------------
* Subroutine: Display - show out the trail
* Notes :
* input : EulerTrail (adjacency-structure)
* NodeNumber (number of nodes)
* output : number (number of Eulerain Cycles)
--------------------------------------------------------------------*/
int Display(Node *EulerTrail, int NodeNumber)
{
int number;
Node ptr;
int first;
number = 0;
while(1)
{
first = 0;
while(EulerTrail[first]-info == 0)
{
first++;
if(first == NodeNumber)
return number;
}
number++;
cout endl first + 1;
ptr = EulerTrail[first]-next;
while(ptr != NULL)
{
EulerTrail[first]-info--;
EulerTrail[first]-next = ptr-next;
first = ptr-info;
ptr-next = NULL;
cout " - " first + 1;
ptr = EulerTrail[first]-next;
}
}
}
/*--------------------------------------------------------------------
* Subroutine: main() - the main function
* Notes :
* input : (none)
* output : (none)
--------------------------------------------------------------------*/
void main(void)
{
Node *head;
Node *EulerTrail;
int NodeNumber;
int register i;
do {
cout "Enter the Number of Nodes : ";
cin NodeNumber;
} while (NodeNumber 2);
head = input(NodeNumber);
if(notEulerTrail(head, NodeNumber))
{
cout "The graph you inputed is not a Euler Trail...\n";
exit(1);
}
EulerTrail = Prepare(head, NodeNumber);
cout "Euler Trail Path is";
i = Display(EulerTrail, NodeNumber);
cout endl;
if(i != 1)
cout "It's not a Eulerain Cycle..." endl;
}
输入&输出
Etrail.exe Input1.dat
Enter the Number of Nodes :
Enter connection pair(s)...
Input 0-0 while complete...
Euler Trail Path is
1 - 2 - 4 - 3 - 5 - 6 - 4 - 5 - 2 - 3 - 1 Input1.dat内容:
6
1-2
1-3
2-4
2-3
2-5
3-5
4-5
3-4
4-6
6-5
0-0
这里有更详细的下载:http://www.pudn.com/downloads9/doc/detail31913.html
根据改进欧拉公式算法框图编写程序,求初值问题y'=x+y,y(0)=1的数值解,取步长h=0.2
e^ix=cosx+isinx,e是自然对数的底,i是虚数单位。它将三角函数的定义域扩大到复数,建立了三角函数和指数函数的关系,它在复变函数论里占有非常重要的地位。
e^ix=cosx+isinx的证明:
因为e^x=1+x/1!+x^2/2!+x^3/3!+x^4/4!+……
cos x=1-x^2/2!+x^4/4!-x^6/6!……
sin x=x-x^3/3!+x^5/5!-x^7/7!……
在e^x的展开式中把x换成±ix.
(±i)^2=-1, (±i)^3=∓i, (±i)^4=1 ……
e^±ix=1±ix/1!-x^2/2!∓ix^3/3!+x^4/4!……
=(1-x^2/2!+……)±i(x-x^3/3!……)
所以e^±ix=cosx±isinx
将公式里的x换成-x,得到:
e^-ix=cosx-isinx,然后采用两式相加减的方法得到:sinx=(e^ix-e^-ix)/(2i),cosx=(e^ix+e^-ix)/2.这两个也叫做欧拉公式。将e^ix=cosx+isinx中的x取作π就得到:
e^iπ+1=0.这个恒等式也叫做欧拉公式,它是数学里最令人着迷的一个公式,它将数学里最重要的几个数字联系到了一起:两个超越数:自然对数的底e,圆周率π,两个单位:虚数单位i和自然数的单位1,以及被称为人类伟大发现之一的0。数学家们评价它是“上帝创造的公式”
那么这个公式的证明就很简单了,利用上面的e^±ix=cosx±isinx。 那么这里的π就是x,那么
e^iπ=cosπ+isinπ
=-1
那么e^iπ+1=0
这个公式实际上是前面公式的一个应用 [1]
欧拉公式
欧拉公式有4条
(1)分式:
a^r/(a-b)(a-c)+b^r/(b-c)(b-a)+c^r/(c-a)(c-b)
当r=0,1时式子的值为0
当r=2时值为1
当r=3时值为a+b+c
(2)复数
由e^iθ=cosθ+isinθ,得到:
sinθ=(e^iθ-e^-iθ)/2i
cosθ=(e^iθ+e^-iθ)/2
此函数将两种截然不同的函数---指数函数与三角函数联系起来,被誉为数学中的“天桥”。
当θ=π时,成为e^iπ+1=0 它把数学中最重要的e、i、π、1、0联系起来了。
(3)三角形
设R为三角形外接圆半径,r为内切圆半径,d为外心到内心的距离,则:
d^2=R^2-2Rr
(4)多面体
设v为顶点数,e为棱数,f是面数,则
v-e+f=2-2p
p为亏格,2-2p为欧拉示性数,例如
p=0 的多面体叫第零类多面体
p=1 的多面体叫第一类多面体