當前位置:首頁 » 編程軟體 » 數值編程

數值編程

發布時間: 2022-11-20 06:38:03

㈠ 數值分析編程問題(關於精確度)

1/(loop_val)-1/((loop_val)
這些都寫成
1.0/(loop_val)-1.0/((loop_val)

還有allsum,sum當然是0
你又沒有賦過不是0的值

㈡ 我打算編一個數值程序,請問用什麼語言編程好

幾乎所有的語言都能實現,例如java、C、C++、pascal、basic、fortran、匯編甚至一些資料庫腳本,現在用c\c++的多數用VC++或者C++builder,還有用C#也基本是C語法,用TC的多數是不得不寫dos程序的,linux下用gcc,用pascal語言的就是delphi,TP基本上絕種了,也有人用Linux下的keylix,Basuc語言就是VB了,QB和TP的命運一樣,Java的工具就多了,直接用JRE或者JBuilder什麼的都可以。
Fortran這幾年沒人用了,只是在97年見過一個師兄拿他寫東西。
這些語言中編譯後效率最高的是匯編,不過除了寫底層的那些傢伙沒人願意用它,其次是C/C++,Pascal也可以,執行效率比較低的是Basic,java效率最低,以前Fortran 在數值計算領域與C不相上下,可惜現在沒落了

㈢ 何為數字編程

估計你說的是fpga或者是cpld吧
FPGA是英文Field Programmable Gate Array的縮寫,即現場可編程門陣列,它是在PAL、GAL、EPLD等可編程器件的基礎上進一步發展的產物。它是作為專用集成電路(ASIC)領域中的一種半定製電路而出現的,既解決了定製電路的不足,又克服了原有可編程器件門電路數有限的缺點。

FPGA採用了邏輯單元陣列LCA(Logic Cell Array)這樣一個新概念,內部包括可配置邏輯模塊CLB(Configurable Logic Block)、輸出輸入模塊IOB(Input Output Block)和內部連線(Interconnect)三個部分。FPGA的基本特點主要有:

1)採用FPGA設計ASIC電路,用戶不需要投片生產,就能得到合用的晶元。 ——2)FPGA可做其它全定製或半定製ASIC電路的中試樣片。

3)FPGA內部有豐富的觸發器和I/O引腳。

4)FPGA是ASIC電路中設計周期最短、開發費用最低、風險最小的器件之一。

5)FPGA採用高速CHMOS工藝,功耗低,可以與CMOS、TTL電平兼容。

可以說,FPGA晶元是小批量系統提高系統集成度、可靠性的最佳選擇之一。

目前FPGA的品種很多,有XILINX的XC系列、TI公司的TPC系列、ALTERA公司的FIEX系列等。

FPGA是由存放在片內RAM中的程序來設置其工作狀態的,因此,工作時需要對片內的RAM進行編程。用戶可以根據不同的配置模式,採用不同的編程方式。

加電時,FPGA晶元將EPROM中數據讀入片內編程RAM中,配置完成後,FPGA進入工作狀態。掉電後,FPGA恢復成白片,內部邏輯關系消失,因此,FPGA能夠反復使用。FPGA的編程無須專用的FPGA編程器,只須用通用的EPROM、PROM編程器即可。當需要修改FPGA功能時,只需換一片EPROM即可。這樣,同一片FPGA,不同的編程數據,可以產生不同的電路功能。因此,FPGA的使用非常靈活。

FPGA有多種配置模式:並行主模式為一片FPGA加一片EPROM的方式;主從模式可以支持一片PROM編程多片FPGA;串列模式可以採用串列PROM編程FPGA;外設模式可以將FPGA作為微處理器的外設,由微處理器對其編程。

㈣ 如何數字編程

假設輸入的整數放到變數x中,則語句x/10%10即是十位上的數字,代碼如下: #include int main(void){ int x; printf("輸入一個整數:"); scanf("%d",&x); printf("%d的十位上的數字是:%d\n",x,x/10%10); return 0;}

㈤ 學數值分析怎樣進行編程

當然可以用來編程了,比如數值分析中的龍貝格(Romberg)求積分的演算法如下:
#include "iostream"
#include "cmath"
#include "iomanip"
using namespace std;
#define N 20
#define e 1E-10
typedef double TYPE;

TYPE f(TYPE x) {
if (x==0) return 1.0;
return sin(x)/x;
}

double T2n(double a,double b,int n=0,double Tn=0) {
double New=0;
double h;
if (n==0) {
h = b-a;
return (f(a)+f(b))*h/2;
}
h = (b-a)/n;
double x = a+h/2;
while (x<b) {
New += f(x);
x += h;
}
return (Tn+h*New)/2;
}

double Romberg(double a,double b) {
double T1,T2,S1,S2,C1,C2,R1,R2;
int k = 0,n=1;
cout<<setprecision(10)<<left;
cout<<"k "<<"T "<<" S "<<" C "<<" R "<<endl;
T1 = T2n(0,1);
cout<<setw(5)<<k<<setw(15)<<T1<<endl;
do {k++;
T2 = T2n(0,1,n,T1);
cout<<setw(5)<<k<<setw(15)<<T2;
S2 = (4*T2-T1)/3;
cout<<setw(15)<<S2;
if (k!=1) {
C2 = (16*S2-S1)/15;
cout<<setw(15)<<C2;
if (k!=2) {
R2 = (64*C2-C1)/63;
cout<<setw(15)<<R2;
if (k!=3 && fabs(R2-R1)<e) {
cout<<"\n\n迭代次數: "<<k<<endl<<endl;
return R2;
}
R1=R2;
}
C1=C2;
}
S1=S2;
T1 = T2;
n*=2;
// k++;
cout<<endl;
}while (k<N);
if (k==N) cout<<"\n迭代超過次數!!!\n"<<endl;
return 0;
}

int main ()
{
cout<<setprecision(10)
<<"最終結果為: "
<<Romberg(0,1)<<endl<<endl;
return 1;
}

//////////////////////////////
求得是f(x)=sin(x)/x從0-1上的積分.
總之數值分析很有用的,能解決許多現實中的數值問題。數學家們給出數學理論,數值分析將它們真正的應用到實際中。
許多圖像處理的演算法中都用到數值分析。

㈥ 數值方法編程題,用c語言或者matlab都行,高手幫幫忙。。。程序越詳細越好。謝謝了~

(1)n個節點lagrange插值多項式程序
function yy=lagrange(x1,y1,xx)
%本程序為Lagrange1插值,其中x1,y1
%為插值節點和節點上的函數值,輸出為插值點xx的函數值,
%xx可以是向量。
syms x
n=length(x1);
for i=1:n
t=x1;t(i)=[];L(i)=prod((x-t)./(x1(i)-t));% L向量用來存放插值基函數
end
u=sum(L.*y1);
p=simplify(u) % p是簡化後的Lagrange插值函數(字元串)
yy=subs(p,x,xx);
clf
plot(x1,y1,'ro',xx,yy,'*')
========
命令窗口命令及結果
format long g
>> lagrange([11 12],[0.190809 0.207912],11.5)

p =

(616200515415341*x)/36028797018963968 + 96413060822745/36028797018963968

ans =

0.1993605

>> lagrange([11 12 13],[0.190809 0.207912 0.224951],11.5)

p =

- (1152921504607*x^2)/36028797018963968 + (321358855010651*x)/18014398509481984 - 55772577785379/36028797018963968

ans =

0.1993685

>> sin(11.5*pi/180)

ans = 0.199367934417197

(2)
function f = Newton(x,y,x0)
%本程序為Newton插值,其中x,y
%為插值節點和節點上的函數值,輸出為插值點x0的函數值,
%x0可以是向量。
syms t;

if(length(x) == length(y))
n = length(x);
c(1:n) = 0.0;
else
disp('x和y的維數不相等!');
return;
end

f = y(1);
y1 = 0;
l = 1;

for(i=1:n-1)
for(j=i+1:n)
y1(j) = (y(j)-y(i))/(x(j)-x(i));
end
c(i) = y1(i+1);
l = l*(t-x(i));
f = f + c(i)*l;
simplify(f)
y = y1;

if(i==n-1)
if(nargin == 3)
f = subs(f,'t',x0);
else
f = collect(f); %將插值多項式展開
f = vpa(f, 6);
end
end
end
==========
fn=Newton([11 12],[0.190809 0.207912],11.5)

ans =

(616200515415341*t)/36028797018963968 + 96413060822745/36028797018963968

fn =

0.1993605

>> fn=Newton([11 12 13],[0.190809 0.207912 0.224951],11.5)

ans =

(616200515415341*t)/36028797018963968 + 96413060822745/36028797018963968

ans =

- (1152921504607*t^2)/36028797018963968 + (321358855010651*t)/18014398509481984 - 55772577785379/36028797018963968

fn =

0.1993685

㈦ 數值分析編程matlab

數值分析有好幾塊啊。
對於積分可以看:http://www.matlabsky.com/thread-7210-1-1.html
常微分方程可以看:http://www.matlabsky.com/thread-526-1-1.html

當然還有其它的一些,看你要什麼方面的。

=============
(一題)
%(1)
clear
n=9;
[ii,jj]=meshgrid(1:n);
A=(ii+jj-1).^2;
%A=(ii+jj).^2; %(2)
%A=1./(ii+jj-1); %(3)
b=sum(A,2);

%%下面兩行是測試函數
%A=rand(n );
%b=rand(n,1);

AA=A;
bb=b;

for i=1:n-1
%選主元
[maindiag(i),index]=max(abs(A(i:end,i)));
index=index+i-1;

%交換行i<--->index
temp=A(index,: );
A(index,: )=A(i,: );
A(i,: )=temp;
temp=b(index);
b(index)=b(i);
b(i)=temp;

%消行
for j=i+1:n
temp=A(j,i)/A(i,i);
A(j,: )=A(j,: )-temp*A(i,: );
b(j )=b(j )-temp*b(i);
end
A;
end

%上三角求解
for i=n:-1:1
for j=1:i-1
temp=A(j,i)/A(i,i);
A(j,: )=A( j,: )-temp*A(i,: );
b(j )=b(j )-temp*b(i);
end
x(i)=b(i)/A(i,i);
end

maindiag %查看列主元
AA*x'-bb %由於矩陣奇異,列主元法得到的解不準確

%%(1)例在n<=6時,列主元法可行,n>6列主元法失效

============

(二題)
clear
x=-5:0.5:5;
x=x(:);
y=[0,-0.0001,-0.0002,-0.0003,-0.0004,-0.0048,-0.0366,-0.1581,-0.3679,-0.3894,0,0.3894,0.3679,0.1581,0.0366,0.0048,0.0004,0.0003,0.0002,0.0001,0];
y=y(:);

yy=[];
ii=1:2:7;
for i=1:length(ii)
p=polyfit(x,y,ii(i));
yy(:,i)=polyval(p,x);
info{i}=num2str([num2str(ii(i)),'次多項式']);
end
p=spline(x,y);
yy(:,end+1)=ppval(p,x);
info{end+1}='樣條';

info{end+1}='原始數據';

plot(x,yy,x,y,'*')
legend(info,'location','NorthWest')

㈧ 在編程中定義某數值該怎麼弄

在 C 語言、以及C++編程中定義數值分為兩類:常量和變數。如果是定義常量的話,其優點是:在以後的代碼中,凡是所有涉及到該常量值的地方,都會自動替換,而不需要人工地在程序的每一處進行替換。例如:
#define MAX 1000 /* 定義一個常量 MAX,其最大值為 1000,以後如果程序中涉及到該常量值的地方,都會自動進行替換,程序可讀性、以及可移植性都非常好 */
如果是定義變數,那麼就要在變數名的前面寫上:數據類型以及變數名。例如:
int my_var ; /* 定義一個標準的整型變數,變數名稱為:my_var */
float my_float ; /* 定義一個標準的浮點型變數,變數名稱為:my_float */
typedef struct myself_datatype /* 定義一個結構體 */
{
int x, y , z ;
float x1, y1, z1 ;
} myself_define ; /* 用戶自定義的數據類型,數據類型為:myself_define */
myself_define myself_var ; /* 定義一個用戶自定義的數據類型變數,變數名為:myself_var。

㈨ 數值計算編程

給你參考下吧

//牛頓下山法

//非線性方程求根

#include"iostream"
#include"stdlib.h"
#include"math.h"
#include"conio.h"
using namespace std;

double function(double x)
{
return x*x*x-x-1;
}

double function_(double x)
{
return 3*x*x-1;
}
void error_output(int p)
{
switch(p)
{
case 1:cout<<"超出下山次數,請另選擇初值!"<<endl;
case 2:cout<<"超出迭代次數,失敗!";
}

}

int main()
{

double x,e,l=1,x1;
int m,n,k=1,j;
cout<<"請輸入初值: ";
cin>>x;
cout<<"輸入精度: ";
cin>>e;
cout<<"輸入最大迭代次數 : ";
cin>>m;
cout<<"輸入最大下山次數: ";
cin>>n;

loop:
j=1;
if(function(x)==0){
cout<<"該初值就是方程的根!";
cout<<endl;
return 1;
}
x1=x-l*function(x)/function_(x);
for(l=1,j=1;j<=n&&k==1;j++)
{
x1=x-l*function(x)/function_(x);
if(fabs(function(x1))>fabs(function(x))){
l=l/2;
cout<<"x0 "<<x<<" x1 "<<x1<<endl;
}
else break;
}
for(l=1,j=1;j<=n&&k!=1;j++)
{
x1=x-l*function(x)/function_(x);
if(fabs(function(x1))>fabs(function(x))){
l=l/2;
cout<<"x0 "<<x<<" x1 "<<x1<<endl;
}
else break;
}
if(j>n)error_output(1);
if(fabs(x1-x)<e)cout<<"求得方程的根:"<<x1<<endl;
else{
if(k==m)error_output(2);
else {
k=k+1;
x=x1;
goto loop;
}
}
getch();
return 1;

}

㈩ 數字編程是什麼

前提你是用什麼工具畫的,如果用的CAD的話,首先保證CAD的格式是DXF,然後用U盤拷貝,打開HL中的格式轉換,DXF------DXT,再選中U盤裡面的圖,格式轉換之後,再到AUTOP畫圖程序裡面打開文件,打開這個圖之後,在進行加工路線的設置,再代碼存檔,最後到加工1不就有了么!(代碼存檔之後,文件後綴變成3B)

熱點內容
app什麼情況下找不到伺服器 發布:2025-05-12 15:46:25 瀏覽:714
php跳過if 發布:2025-05-12 15:34:29 瀏覽:467
不定時演算法 發布:2025-05-12 15:30:16 瀏覽:131
c語言延時1ms程序 發布:2025-05-12 15:01:30 瀏覽:166
動物園靈長類動物配置什麼植物 發布:2025-05-12 14:49:59 瀏覽:737
wifi密碼設置什麼好 發布:2025-05-12 14:49:17 瀏覽:149
三位數乘兩位數速演算法 發布:2025-05-12 13:05:48 瀏覽:399
暴風影音緩存在哪裡 發布:2025-05-12 12:42:03 瀏覽:544
access資料庫exe 發布:2025-05-12 12:39:04 瀏覽:632
五開的配置是什麼 發布:2025-05-12 12:36:37 瀏覽:366