Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Algoritm simplu de calculare al u...

Bitdefender Total Security ș...

casa verde 2024

Intrerupator cu N - doza doar cu ...
 Incalzire casa fara gaz/lemne

Incalzire in pardoseala etapizata

Suprataxa card energie?!

Cum era nivelul de trai cam din a...
 probleme cu ochelarii

Impozite pe proprietati de anul v...

teava rezistenta panou apa calda

Acces in Curte din Drum National
 Sub mobila de bucatarie si sub fr...

Rezultat RMN

Numar circuite IPAT si prindere t...

Pareri brgimportchina.ro - teapa ...
 

Gasire X cel mai apropiat intr-un tabel (x,y) cu afisare Y corespunzator

- - - - -
  • Please log in to reply
18 replies to this topic

#1
xr400

xr400

    New Member

  • Grup: Junior Members
  • Posts: 9
  • Înscris: 13.07.2018
Salutare amatorilor de vba !


Sunt mai multe valori X care trebuiesc comparate cu mai multe perechi (X,Y).
Pentru fiecare X trebuie gasita perechea cea mai apropiata superioara si inferioara
X nu are valoare exacta ca vreo pereche (X,Y) din tabel.

Va rog indrumati-ma spre niste functii vba ca sa rezolv aceasta problema.
As putea face cu comparatie directa (si poate este mai simplu), dar poate exista o functie VBA .


Multumesc !

Edited by xr400, 13 July 2018 - 17:55.


#2
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,383
  • Înscris: 10.08.2005
Avand o serie de puncte definesti o functie care aproximeaza acele valori( cu ce precizie vrei sau dispus sa lucrezi)

p.s. ne poti arata valorile ?

#3
xr400

xr400

    New Member

  • Grup: Junior Members
  • Posts: 9
  • Înscris: 13.07.2018
Daca am 2-300 de puncte, cum definesc functia ?

#4
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,383
  • Înscris: 10.08.2005
local pe un subset

#5
xr400

xr400

    New Member

  • Grup: Junior Members
  • Posts: 9
  • Înscris: 13.07.2018
Nu intzeleg. Poti fi mai explicit ?
Valorile sunt coordonatele unui grafic digitalizat, care grafic este oarecare .
La digitalizare poti solicita orice numar de puncte. 2-300 ar fi optim.

Edited by xr400, 14 July 2018 - 06:42.


#6
WinstonMontana

WinstonMontana

    Active Member

  • Grup: Members
  • Posts: 1,913
  • Înscris: 20.02.2018
suma de diferente Riemmann: https://ro.wikipedia...
https://atelieruldem...emann.gif?w=500
Baza fiecarui dreptunghi este x[i+1] - x[i]. Ei bine X-ul tau pt fiecare dreptunghi  baleiaza intre x[i] si x[i+1] al fiecarui dreptunghi.
Precizia pe care o definesti decide in ce parte X-ul tau se va duce pentru fiecare dreptunghi: fie la x[i] sau x[i+1]
Daca se duce catre x[i] atunci iei perechea x[i], y[i]
Daca se duce catre x[i+1] atunci iei perechea x[i+1], y[i+1]

Foloseste functia  round(x) => https://msdn.microso....round(v=vs.110).aspx
astfel:
daca round(x) <= x[i] ,atunci  alege perechea x[i], y[i]
daca round(x) >= x[i+1], atunci alege perechea x[i+1], y[i+1]
Si asta pt fiecare dreptunghi i din figura de mai sus
cu i intre 1 si numarul de perechi pe care il ai

Edited by WinstonMontana, 14 July 2018 - 11:20.


#7
xr400

xr400

    New Member

  • Grup: Junior Members
  • Posts: 9
  • Înscris: 13.07.2018
Multzumesc pentru raspunsuri,
Link-ul care l-ai dat nu functioneaza
Conform definitiei functiei round
http://www.excelfunc...d-function.html
fie rotunjeste un numar zecimal la cate zecimale hotarasti, sau rotunjeste la numarul intreg cel mai apropiat.
Nu ma ajuta. X este zecimal, (X,Y) este zecimal

Am crezut ca exista o scurtatura si nu o gasesc eu
.
O sa fac un algoritm clasic de comparat X cu fiecare pereche (X,Y),
si eventual o interpolare fatza de pereche superioara, perechea inferioara cand calculez Y.

Multzumesc inca odata ca v-ati uitat pe intrebare

#8
WinstonMontana

WinstonMontana

    Active Member

  • Grup: Members
  • Posts: 1,913
  • Înscris: 20.02.2018

View Postxr400, on 14 iulie 2018 - 12:49, said:

Multzumesc pentru raspunsuri,
Link-ul care l-ai dat nu functioneaza
Conform definitiei functiei round
http://www.excelfunc...d-function.html
fie rotunjeste un numar zecimal la cate zecimale hotarasti, sau rotunjeste la numarul intreg cel mai apropiat.
Nu ma ajuta. X este zecimal, (X,Y) este zecimal

Am crezut ca exista o scurtatura si nu o gasesc eu
.
O sa fac un algoritm clasic de comparat X cu fiecare pereche (X,Y),
si eventual o interpolare fatza de pereche superioara, perechea inferioara cand calculez Y.

Multzumesc inca odata ca v-ati uitat pe intrebare
Rounds a value to the nearest integer or to the specified number of fractional digits.
Am corectat linkul
https://msdn.microso...(v=vs.110).aspx

Edited by WinstonMontana, 14 July 2018 - 13:10.


#9
WinstonMontana

WinstonMontana

    Active Member

  • Grup: Members
  • Posts: 1,913
  • Înscris: 20.02.2018
vezi si :
Ceil
https://msdn.microsoft.com/en-us/library/zx4t0t48(v=vs.110).aspx
Floor
https://msdn.microsoft.com/en-us/library/e0b5f0xb(v=vs.110).aspx



#10
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,383
  • Înscris: 10.08.2005
cate o diferenta pe intreg sirul de X?

#11
xr400

xr400

    New Member

  • Grup: Junior Members
  • Posts: 9
  • Înscris: 13.07.2018
Multzumesc WinnstonMontana,
X si (X,Y) sunt numere rationale. Ceiling si Floor returneaza intregii cei mai apropiatzi. Nu ma ajuta.


Scuze, nu intzeleg intrebarea MarianG

Edited by xr400, 14 July 2018 - 13:41.


#12
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,383
  • Înscris: 10.08.2005
pentru fiecare valoare din lista X in scazi valoarea 'X ceruta',
vei avea o listsa noua, iar perechea pe care o cauti se va afla la index-ul cu cea mai mica valoare.

#13
xr400

xr400

    New Member

  • Grup: Junior Members
  • Posts: 9
  • Înscris: 13.07.2018
Corect MarianG,
E o varianta de algoritm. Cele mai mici 2 numere in modul sunt cele mai apropiate.

Edited by xr400, 14 July 2018 - 13:56.


#14
WinstonMontana

WinstonMontana

    Active Member

  • Grup: Members
  • Posts: 1,913
  • Înscris: 20.02.2018
daca am
lista = ((23.56,34.69),(10.98, 70.65),(32.89, 45.98),(3.45, 98.67))
X = (5.90, 34.85, 25.74)

scrie ce ar trebui sa  returneze algoritmul pentru cazul de mai sus

Edited by WinstonMontana, 14 July 2018 - 14:29.


#15
xr400

xr400

    New Member

  • Grup: Junior Members
  • Posts: 9
  • Înscris: 13.07.2018
X =5.9  nu are inferior si superior
X=34.85 nu are inferior si superior
X=25.74 ar trebui sa gaseasca inferior (23.56  34.69) si superior (32.89  45.98)
si ar trebui facuta o interpolare

(25.74/ 23.56) x 34.69

rezultatul trebuie sa fie mai mare decat 34.69 cu procentul care 25.74 este mai mare decat 23.56

eu zic ca am scris interpolarea corect

Edited by xr400, 14 July 2018 - 15:22.


#16
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,383
  • Înscris: 10.08.2005

View PostWinstonMontana, on 14 iulie 2018 - 14:29, said:

daca am
lista = ((23.56,34.69),(10.98, 70.65),(32.89, 45.98),(3.45, 98.67))
X = (5.90, 34.85, 25.74)

scrie ce ar trebui sa  returneze algoritmul pentru cazul de mai sus
prima data sorteaza lista dupa X

5.9 este intre 10.9 si 3.45

#17
xr400

xr400

    New Member

  • Grup: Junior Members
  • Posts: 9
  • Înscris: 13.07.2018
Formula corecta cu interpolarea este
(25.74-23.56) /(32.89-23.56) x(45.98-34.6) +34.69

View PostMarianG, on 14 iulie 2018 - 15:36, said:

prima data sorteaza lista dupa X

5.9 este intre 10.9 si 3.45

Corect,

Pot sa scriu algoritmul
Credeam ca e vreo functie de vba care nu o gasesc eu. Aceasta este intrebarea.
Multzumesc

#18
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,383
  • Înscris: 10.08.2005
FORECAST ?
https://support.offi...e4-7ad38bbeda99

Anunturi

Bun venit pe Forumul Softpedia!

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate